在vim中,有没有办法可以删除由i(no)重映射或iab写的文本块? 例如,说我有
inoremap xx \ hat {x}
在我的.vimrc文件中,我希望能够通过一两次击键删除\ hat {x}(但不是^ w或dB ..我可以有两个连续的iab只包含文本,所以我需要能够在中间削减abababcdcdcd,如果cdcdcd是iab,比如说“cc”)
任何想法?
答案 0 :(得分:2)
最后一个干净的解决方案
inoremap xx ^Gu\hat{x}^Gu
(那是 C-g 那里)
没有更奇怪的效果。您甚至可以选择是否要在两端或仅在开始时隔离撤消项目(如果您不介意将hat-x与之后的内容一起撤消,请保留尾随^Gu
)
现在我使用的打捞信息最终是微不足道的:
:he undo|/break/;+3p
输出:
相反,在插入模式下使用,将更改分成两个撤消块 CTRL-G u。如果您希望插入命令可以撤消,这非常有用 部分。例如,每个句子。了| i_CTRL-G_u |
答案 1 :(得分:1)
当撤消撤消最后一次插入时,我经常在映射的开头放置一个<Esc>a
。
例如:
inoremap xx <Esc>a\hat{x}
让您离开并返回插入模式,以便撤消可以正常工作。如果您输入错误,则可以正确撤消。
我知道这可能是丑陋而无意义的,但有效。我很想知道是否有更好的解决方案来“刷新”撤消。