2

我已经IMAP从 修改了函数vim-latex,因此可以通过将最终返回行更改为来LookupCharacter撤消

return a:char . "^Gu\<bs>" . bs . IMAP_PutTextWithMovement(rhs, phs, phe)

现在要直接从插入模式撤消,我在我的中有这个映射.vimrc

imap <Undo> <Esc>ui

我使用的是Neo2 键盘布局,所以第 4 层有一个撤消键。

现在这工作得很好,但问题是当我在行尾使用它时,光标放在最后一个字符之前。要在没有 的情况下对其进行测试vim-latex,您可以这样做

:imap a a^Gu\<bs>test

在一行的中间和末尾键入“b”,然后通过快捷方式或手动按 执行撤消<Esc>ui

那么有没有办法让vim跳转回到正确的光标位置?

在 wikia中看到了一个给出想法的条目,但我不知道如何通过imap映射来实现它。

4

1 回答 1

1

光标移动是由于i在映射结束时不加选择地使用。通常,一个人通过临时执行正常模式命令

imap <Undo> <C-\><C-o>u

但是在您的情况下,当撤消修改缓冲区时,这可能并非在所有情况下都有效。

于 2012-07-24T06:58:40.090 回答