![当 MacVim 进入后台时更改为正常模式](https://linux22.com/image/1262973/%E5%BD%93%20MacVim%20%E8%BF%9B%E5%85%A5%E5%90%8E%E5%8F%B0%E6%97%B6%E6%9B%B4%E6%94%B9%E4%B8%BA%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F.png)
一旦 MacVim 进入后台,有没有办法自动退出插入模式,以便当我回来时它处于正常模式?
我经常更换最前面的应用程序,当我回到 MacVim 时,我发现自己插入了很多“j”和“k”。最好习惯按 ,但这会节省一些笔画,特别是在处理需要大量编辑/刷新的网站时。
答案1
去引用https://stackoverflow.com/questions/2968548/vim-return-to-command-mode-when-focus-is-lost:
以下自动命令将是“显而易见的”选择。
au FocusLost,TabLeave * stopinsert
不幸的是,它似乎只对 TabLeave 正常工作。FocusLost 事件正在触发,但由于某种原因,stopinsert 命令实际上直到 Vim 重新获得焦点后收到键事件后才生效。
相反,您可以利用 feedkeys 和“无论如何都让我进入正常模式!”组合键:
au FocusLost,TabLeave * call feedkeys("\<C-\>\<C-n>")
唯一的缺点是 feedkeys() 至少需要 Vim 7。不过,这不是什么大问题,因为 Vim7 早在 2006 年就发布了。