在vim中,我能否删除由i(no)remap或iab编写的文本块?例如,假设我在我的.vimrc文件中有inoremap xx \hat{x},我想用一两个按键删除\hat{x}(但不是^w或dB..我可能有两个连续的iabs仅由文本组成,因此如果cdcdcd是“cc”的iab,则需要能够在中间剪切abababcdcdcd)。有什么想法吗?
最终的清洁解决方案
inoremap xx ^Gu\hat{x}^Gu
(那里是 C-g )
不再出现奇怪的效果。您甚至可以选择是否在两端隔离撤消项,或者只在开始隔离(如果您不介意帽字符后面的内容也被一起撤消,则留下尾部的 ^Gu
)
现在我使用的救援信息终于是微不足道的:
:he undo|/break/;+3p
输出:
要做相反的操作,将一个更改分成两个撤消块,在插入模式下使用CTRL-G u。如果您希望一个插入命令可以分部撤消,例如每个句子,这很有用。|i_CTRL-G_u|
由于撤销操作会撤销最后一次插入,因此我经常在我的映射开头放置一个<Esc>a
。
例如:
inoremap xx <Esc>a\hat{x}
让你离开并返回插入模式,以便撤销可以正常工作。如果您输错了,您可以正确地撤消。
我知道这可能很丑陋和毫无意义,但它确实有效。我很想知道是否有更好的解决方案来“刷新”撤消。
<Esc>
,a
,插入映射,再次按 <Esc>
,然后按 u
撤消,那么映射就被删除了,对吧? - sidyll