当我使用VIM或大多数无模式编辑器(Eclipse,NetBeans等)时,我经常执行以下操作.如果我有类似的文本块,我需要更改它们,我将更改一个,复制它(或使用非删除的yank),选择我需要的下一个块并将更改后的版本粘贴到它上面.如果我在emacs中做同样的事情(选择区域并用Cy粘贴),它不会替换区域,它只是粘贴在光标位置.在emacs中执行此操作的方法是什么?
Mic*_*zek 66
将此添加到您的.emacs:
(delete-selection-mode 1)
Run Code Online (Sandbox Code Playgroud)
在区域处于活动状态时写入缓冲区的任何内容都会覆盖它,包括粘贴,但也只是键入内容或命中退格
off*_*by1 15
delete-selection-mode正如迈克尔建议的那样,设置似乎是最自然的方式.
然而,这不是我做的:)相反,我将好东西放入"寄存器" - 例如,注册"a" - 用C-x r x a.然后我杀了另一个副本,并将寄存器复制到同一个地方C-x r g a.
这很方便,因为查杀不会影响寄存器,所以C-x r g a总是插入好东西.
做这样的事情的默认方式是不完全优雅的追随者:
C-w).C-y,M-y).这将使用您刚删除的完全相同的文本(C-y)替换刚刚删除的内容,然后将其重新替换为缓冲区环(M-y)中最近保存的下一个缓冲区.如果你想用相同的文本做10次,这将是一个真正的痛苦,因为每次你删除一个区域时,所需的替换将被推回杀戮环更远,所以你必须调用M-w增加每次你想要它的次数.
我刚刚发现M-x delete-region,感谢Emacs:如何删除没有杀环的文本?.正如问题所暗示的那样,这会删除违规文本而不会将其放入杀环中,从而避免将替换文本进一步向下推入堆栈的问题.并且,正如相关响应所提到的,您可以将其绑定到您选择的快捷键.