如果你想在vim中当输入一个左大括号的时候,让vim自动插入插入右大括号,并且回车换行,将光标置于下一行向右缩进4个空格(一个tab),就在.vimrc中配置:
imap { {}<ESC>i<CR><ESC>V<O
上面有个前提就是你设置了
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
如果你只想让你的vim完成标题中说的事情,到此已经完成。但是如果你想了解上面的是什么样的原理,那就继续往下看,你会意外的收获的。
imap是vim配置中的指令,就是做一个映射,语法就是
imap 要映射的东西 被映射成什么东西
按照这种理解,上面的那句就可以理解为:
映射“{”为{}<ESC>i<CR><ESC>V<O后面的东西是什么就是vim中依次执行这些操作,什么操作呢?我们一一分解;
{} 就是直接插入左右括号
<ESC> 就是按键盘的ESC键,切换到命令行模式
i 按键盘的i键,进入插入模式
<CR> 按回车,此时将右括号换行
<ESC> 就是按键盘的ESC键,切换到命令行模式
V 按住shift+v,就是选中当前行就是有括号所在的行
< 按住shift+,将当前行向右移动一个tab,此时有括号已经和做括号对齐
O 按住shift +o,在当前行(右括号)的前一行插入
也许你已经了解了怎么回事,其实就是告诉vim如果我们输入{ ,那就接下来做上面一系列操作。
当你明白了这个原理,你就可以自己去创建一些映射来提高你的编程速度,就上面的映射提高了你9倍的速度啊。
另外以个你可能想到的映射就是小括号,目标是什么呢?当我们插入左边的小括号的时候,告诉vim插入右边的小括号并且移动光标到括号中间并处于插入状态。方法就是先去你的vim中试试你怎么做到,然后在你的.vimrc中把你刚才的操作想上面一样做成一个映射。可能你的和我的不一样的,我用了3步,你用了4步,还有人用了5步,但是都没有问题,因为最后达到的效果都一样。看看我的吧:
imap ( ()<ESC>i上面是关于自动插入,但是如果你发现插入错误,想删除插入的操作,需要删除自动插入的所有的东西,这样需要好几个步骤,能不能删除左边括号就自动删除后面自动插入的东西呢?能,但是有点麻烦,关于这部分,请参看:
http://colder.blog.163.com/blog/static/17394661820124201611732/
完。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.
More from my site