当我使用VIM或大多数无模式编辑器(Eclipse,NetBeans等)时,我经常执行以下操作。如果我有类似的文本块,我需要更改它们,我将更改一个,复制它(或使用非删除的yank),选择我需要的下一个块并将更改后的版本粘贴到它上面。如果我在emacs中做同样的事情(选择区域并用C-y粘贴),它不会替换区域,只是粘贴在光标位置。在emacs中执行此操作的方法是什么?
答案 0 :(得分:66)
将此添加到您的.emacs
:
(delete-selection-mode 1)
在区域处于活动状态时写入缓冲区的任何内容都会覆盖它,包括粘贴,但也只是输入内容或命中退格
答案 1 :(得分:15)
像迈克尔建议的那样设置delete-selection-mode
似乎是最自然的方式。
然而,这不是我做的事情:)相反,我将好东西放入“寄存器” - 例如,注册“a” - 与C-x r x a
。然后我杀了另一个副本,并用C-x r g a
将寄存器复制到同一个地方。
这很方便,因为查杀不会影响寄存器,所以C-x r g a
总是插入好东西。
答案 2 :(得分:8)
执行此类操作的默认方式是不完全优雅的跟随:
C-w
)。C-y
,M-y
)。这会将刚刚删除的内容替换为您刚刚删除的完全相同的文本(C-y
),然后将其重新替换为缓冲区中最近保存的下一个缓冲区(M-y
)。 / LI>
醇>
如果你想用相同的文字做10次,这将是一个真正的痛苦,因为每次你删除一个区域时,所需的替换将被推回杀戮戒指的更远,所以你必须每次想要抓住它时,都会越来越多地呼叫M-w
。
我刚刚发现了M-x delete-region
,感谢Emacs: how to delete text without kill ring?。正如问题所暗示的那样,这会删除违规文本而不将其放入杀环中,从而避免将替换文本进一步向下推入堆栈的问题。并且,正如相关响应所提到的,您可以将其绑定到您选择的快捷键。
答案 3 :(得分:3)
我这样做的方式是:
这是一种略微不同的思考方式。粘贴你想要的东西,然后摆脱你不想要的东西,而不是用你所做的东西替换你不想要的东西。
答案 4 :(得分:2)
如果启用CUA模式,则粘贴选定区域将成为正常行为。
答案 5 :(得分:2)
使用delete-selection-mode
,以便粘贴的文本替换活动区域。
使用辅助选择,一遍又一遍地粘贴相同的文本,即使您选择要替换的新区域也是如此。
答案 6 :(得分:1)
对于那些不想像我一样更改全局设置的人,我使用此功能和键绑定:
import returnStoreAndPersistor from "../../store";
const { store } = returnStoreAndPersistor()
console.log(store.getState())
我有意将选定的文本添加到kill环中,以防日后需要时,然后取消该环中先前的内容。