我修改了IMAP
vim-latex
函数,以便通过将LookupCharacter
的最终返回行更改为
return a:char . "^Gu\<bs>" . bs . IMAP_PutTextWithMovement(rhs, phs, phe)
现在直接从插入模式进行撤消,我在.vimrc
:
imap <Undo> <Esc>ui
我使用Neo2 keyboard layout,因此第4层有一个撤消键。
现在这个效果相当不错,但问题是当我在一行的末尾使用它时,光标位于之前最后一个字符。要在没有vim-latex
的情况下进行测试,您可以执行
:imap a a^Gu\<bs>test
在行的中间和末尾键入“b”,然后通过快捷方式或手动按<Esc>ui
执行撤消。
那么有没有办法让vim
跳回到正确的光标位置?
我看过an entry in wikia提出了一个想法,但我不知道如何使用imap
映射来实现它。
答案 0 :(得分:1)
光标移动是由于在映射结束时不加区别地使用i
。通常,通过
imap <Undo> <C-\><C-o>u
但是在你的情况下,当撤消修改缓冲区时,这可能在所有情况下都不起作用。