2012-07-24 94 views
1

的撤消后,我从vim-latex修改IMAP功能光标的位置,这样的撤销都是不可能的,通过改变LookupCharacter最后返回行Vim的:恢复IMAP

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映射。

回答

1

光标移动是由于在映射结束时不加区分地使用了i。通常情况下,一个暂时通过

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

但在你的情况下,执行正常模式命令,撤销修改缓冲区,这可能不是在所有情况下工作。

+0

似乎在相关案件工作。如果我发现存在问题的情况,我会简单地做一个跟进问题。谢谢! – bodo 2012-07-24 07:12:01