考虑一个简单的例子:比如说,我只输入foo
,然后按左键,然后输入bar
。现在我有fobaro
。
当我按。键时,只重复bar
部分,同样是撤消。
所以当我按。时,我想要重复整个fobaro
,当我按 u 时,我要立即完全解除。
我只是在编写插件(auto-pairs-gentle),这样做会有一些技巧,我希望它不会破坏撤消历史记录。
答案 0 :(得分:1)
我不知道如何将它与你的插件联系起来,但听起来你只能记录一个宏 -
qq
i
foo<esc><Left>
i
bar<esc>
q
然后
@@
重复是
答案 1 :(得分:0)
当您在插入模式下移动光标时,Vim会开始一个新的更改;它不能重复复杂的编辑序列,只能输入文本。想想复杂的光标移动,因为那些通常不会重复,Vim始终也不会像<Left>
一样处理简单(和可行)的事情。
对于您的插件,您可以尝试使用较低级别的功能,例如cursor()
和setline()
。尽管如此,这仍然可能会破坏文本插入的重复(至少它会错过任何低级修改)。你在这里达到了Vimscript的限制。
许多现有的auto-close plugins中的一个可能有一个聪明的解决方法。