以前对于vim的自动补全功能,都是需要的时候从网上下载点配置项,然后拷贝到自己的vimrc上去,自己也不知道是什么意思,结果发现搜索到的很多自动补全的方式都很另类,有的喜欢在补全大括号的时候自动换行,还有的喜欢在补全大括号的时候自动缩进一下,那么,我们花几分钟时间了解一下,自己写出来这些配置,何乐而不为呢?
********************************按键映射******************************
1.首先分清一个概念,那就是nnoremap和inoremap,第一个是在普通模式下生效的映射,第二个是在插入模式下生效的映射,咱们一般都需要在插入模式下使用的,因此咱们通常使用inoremap,那么提到了映射,什么是映射呢?
2.所谓映射,就是当我们按下某个键的时候,它会执行另一部分内容,比如说咱们使用map T:q!,那么当我们在命令模式下按T并且回车,就会退出vim,除了map之外,还有nmap表示在normal模式下生效,imap在insert模式下生效,vmap在visual模式下生效,map在所有模式下生效。
3.那么设置一个映射使用:map <要映射的键> <被映射的按键序列>,如果我们要解除映射,使用unmap命令,清除所有映射使用mapclear命令。
4.咱们通常把这些映射写入配置文件vimrc中去,这样一次写入,永久生效。
**************************键位说明**********************************
1.任何可以直接显示的字符都可以直接输入,但是有两个例外,即反斜线和<,因为我们用反斜线表示转义,而<有特殊作用。
2.反斜线用两个反斜线表示,或者使用<Bslash>
3.而<需要用\<或者<lt>来表示。
4.<key>的意思是特殊键,咱们介绍一些常用的特殊键:
<Esc> 表示Escape键,
<C-G>表示Ctrl-G键
<Up>表示光标上移
<C-LeftMOuse>表示Ctrl并且鼠标左键点击
<Space>表示空格
<Tab>表示Table键
<CR>就是回车键
**********************开始写我们自己的自动补全***********************
1.首先给出我的自动补全的格式把,首先值得说明的是,这段代码是写在_vimrc里面的,下面为大家仔细分析一下:
"自动补全 :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(')')<CR> :inoremap { {<CR><CR>}<ESC>0ki<Tab> :inoremap } <c-r>=ClosePair('}')<CR> function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf2.这里的:inoremap表示是在插入模式下的映射,首先第二行的( 即先写(),然后使用esc回到命令模式下,然后执行i来进入到插入模式下。
3.而当我输入{ 的时候,看它的命令,首先输入一个{,然后是<CR>表示回车换行,然后又是一个换行,然后输入},然后使用esc回到命令模式下,然后我们利用0命令回到行首,然后咱们使用k命令把鼠标移动到上一行,然后执行i命令进入到插入模式,然后咱们使用<Tab>表示插入一个制表符。
4.当然我只定义了小括号和大括号的自动补全,对于中括号我并没有使用自动补全,大家可以自行去修改。
5.vim在这点上使用还是蛮舒服的,毕竟感觉很自由。
6.传播编程知识,振兴中华软件,辛星,期待您的关注。
辛星深入分析vim的自动补全功能以及vim的映射,布布扣,bubuko.com
原文地址:http://blog.csdn.net/xinguimeng/article/details/38437239