Vim 中离开 Insert 模式的快捷键

Jul 7th, 2010 | Filed under Vim

Vim 中码字,在 Insert/Normal 两种模式中频繁切换是无可避免的。那么如何快速在两种模式中切换,显然影响到我们的操作效率。

这里有三个快捷键可以选择: ESC, CTRL+C, CTRL+[

从便捷性上来看,CTRL+C 貌似是最顺手的,CTRL+[ 次之(需要两只手),ESC 最麻烦了,左手需要离开键盘的主要操作区域。

从功能上来看,ESC 等同于 CTRL+[,两者是完全一样的。CTRL+C 则稍稍不同,区别在于它不会自动展开 abbreviations,也不会触发 InsertLeave 事件。在某些些情况下,这可能会造成一点小小的困扰,比如下面的配置。

1
2
3
4
" 当切换 Insert/Normal 模式时,动态修改状态栏颜色
hi StatusLine guifg=#FBFAFB  guibg=#755939  gui=bold
autocmd InsertEnter * hi statusline guifg=#FBFAFB guibg=#44507F gui=bold
autocmd InsertLeave * hi statusline guifg=#FBFAFB guibg=#755939 gui=bold

如果使用 CTRL+C,那么上面最后一行配置就不起作用了。

好在 Vim 可以重新定义按键:

1
2
3
4
inoremap <C-c> <ESC>
 
" 或者作一些小小的改进
inoremap <C-c> <ESC>`^

abbr 依然不会自动展开,实际上这个不是问题,可以使用空格、回车,CTRL+]等等替代,重要的是 InsertLeave Event 回来了。

光标的漂移

默认的情况下,当你按 <ESC> 返回 Normal 模式时,光标会向左边移动一个字符,上面的第二个映射命令中添加了 `^,这样就能让光标保持原来的位置,不再乱跑了。

更多相关的知识请参考(准备好梯子) 😡 :
http://vim.wikia.com/wiki/Avoid_the_escape_key

Tags:
Comments are closed.