我需要在Vim离开插入模式之前做一些事情。有没有办法实现这个目标?
事件InsertLeave
显然是在Vim离开插入模式后发生的。我正在使用gVim 8.0。希望这是无关紧要的。
function! Insert_leave()
echo mode()
endfunction
autocmd InsertLeave * call Insert_leave()
答案 0 :(得分:3)
没有InsertLeavePre
,但不要担心,切换模式很便宜。无论如何,Vim中的大多数动作都涉及模式改变。为什么不能在gi
的同一位置重新进入插入模式?如果您担心触发事件,请使用:noautocmd
打包,或使用不:autocmd
的{{1}}。
以下是在离开插入模式后在编辑位置插入nested
的示例:
XXX
答案 1 :(得分:1)
执行此操作的唯一方法可能是映射相应的键。 类似的东西:
:inoremap <expr> <ESC> yourFunction()."<ESC>"
:inoremap <expr> <C-o> yourFunction()."<C-o>"
:inoremap <expr> <C-c> yourFunction()."<C-c>"
yourFunction应返回文本以使其正常工作。
请查看:h map-<expr>
以获取有关此信息的信息。但是我很不确定,如果<expr>
映射将在内部保留插入模式。也许@IngoKarkat可以告诉你更多。
但要注意,我只提交这个答案,因为我发现它非常有趣并且试图弄清楚它有很多乐趣。我不确定它是否有效,但很确定它不是解决问题的最佳方案!