23 在插入模式下,是否有命令撤消上一次执行的操作? 我只是使用粘贴了来自错误寄存器的文本<C-r>,并且有两个选择: 手动删除我刚刚粘贴的内容,然后重新开始。 切换到普通模式,点击u并丢失我输入的文字<C-r>。 有没有更好的办法? insert-mode undo-redo — 动物园 source
16 Vim提供了有限的能力来使用Ctrl-G u命令指定不可撤消更改的范围,这会破坏撤消顺序。看到 :help i_CTRL-G_u 在您的情况下,解决方案是<C-R>像这样重新映射: :inoremap <C-R> <C-G>u<C-R> 然后键入<C-O>u将只撤消自键入以来所做的更改<C-R>。看到 :help i_CTRL-O — 加里约翰 source 1 太好了,我不知道该命令。在输入<C-O>u结果和在屏幕上看到结果之间有相当长的延迟(大约4秒钟),关于如何摆脱这种情况的任何想法吗? — zool 我也注意到了。我不知道; 我会尝试找出答案。 — garyjohn 嘿,您可能是说<CR>(回车)而不是<CR>(ctrl-r)吗? — 德温特(Derwent)'18年 否。最初的问题与<CR>的行为有关,因此这就是映射使用的内容。但是,您可以在该映射中将<CR>替换为<CR>,以使撤消序列被<CR>中断。有关更多示例,请参见:help i_CTRL-G_u。 — garyjohn '18
6 从插入模式: 如果您粘贴的文本小于一行(这就是您的第二点所暗示的意思),只需单击<C-u>以删除当前行中光标之前的所有字符。 如果粘贴的文本是多行,你的第二个解决方案将能更好地工作,适应如下:<C-o>u。 以上两点将在插入模式下开始并保持(或结束);它们实际上与您提出的解决方案相同,只是简化了一些:) — VanLaser source
6 您可以尝试<C-w>(删除左侧的一个单词)或<C-u>(一次按下光标之前清除字符,第二次按下时删除换行符)。请参阅:help i_CTRL-W和:help i_CTRL-U。 如果从寄存器中粘贴很多内容,撤消更改当然会更快,则可以<C-o>为此使用insert-normal-mode (执行一个正常模式命令,然后返回到插入模式)。 通常,通过经常返回正常模式将您的编辑分成小块是有帮助的,这样您就可以实现细粒度的撤消可能性。 — 鲍姆哈特 source
<C-O>u
结果和在屏幕上看到结果之间有相当长的延迟(大约4秒钟),关于如何摆脱这种情况的任何想法吗?