在离开Vim插入模式之前

时间:2017-12-01 09:38:21

标签: vim

我需要在Vim离开插入模式之前做一些事情。有没有办法实现这个目标?

事件InsertLeave显然是在Vim离开插入模式后发生的。我正在使用gVim 8.0。希望这是无关紧要的。

function! Insert_leave()
    echo mode()
endfunction
autocmd InsertLeave * call Insert_leave()

2 个答案:

答案 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可以告诉你更多。

但要注意,我只提交这个答案,因为我发现它非常有趣并且试图弄清楚它有很多乐趣。我不确定它是否有效,但很确定它不是解决问题的最佳方案!