我有两个缓冲区。我想将第一个缓冲区中的第2、5、9和10行复制到第二个缓冲区中(只是追加到第二个缓冲区中)。除了一次复制和粘贴一行之外,是否有更优雅的方法来完成?
我有两个缓冲区。我想将第一个缓冲区中的第2、5、9和10行复制到第二个缓冲区中(只是追加到第二个缓冲区中)。除了一次复制和粘贴一行之外,是否有更优雅的方法来完成?
append-next-kill
,绑定到C-M-w
,将更多的文本添加到kill环中的最新条目。在一个M-w
命令之前使用它,就像这样:
C-SPC
、C-n
、M-w
C-SPC
、C-n
、C-M-w
、M-w
...等等。
当你用C-y
粘贴文本时,你会得到你选择并追加到kill环条目中的所有行。
multiple-cursors.el
。当您需要选择和修改多个位置中的符号/正则表达式时,它非常有效。mc/add-cursor-on-click
不过这意味着您必须将其绑定到鼠标事件上(建议在“技巧”部分中):
(global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click)
这意味着您必须伸手去拿鼠标,但创建新的函数mc/add-cursor-at-line
看起来非常容易:(defun mc/add-cursor-at-line (&optional linenum)
(interactive "nLine number: ")
(save-excursion
(goto-char (point-min))
(forward-line (1- linenum))
(mc/create-fake-cursor-at-point))
(mc/maybe-multiple-cursors-mode))
然后,一旦你在所有行上设置了多个光标:
复制所有光标: C-SPC C-e M-w RET
切换缓冲区并...
矩形粘贴: C-x r y
killed-rectangle
。那个库真的需要一种好的方式来在单光标模式下“标记”一堆待编辑的光标,然后切换到多光标模式进行编辑。你可以通过设置标记并重复调用 mc/pop-mark
来实现这个功能,但这比它本应该的更加笨拙。 - phils(interactive "n行号: ")
在你的函数中节省几行代码。 - juanleon一个简单的解决方案是记录一个宏,将一行从一个缓冲区复制到另一个缓冲区 (f3 C-SCP C-n M-w C-x o C-y C-x o f4),然后在想要复制的每一行上执行该宏 (f4)。
如果这是您经常遇到的情况,您可以保存该宏并将其绑定到一个键。