首页 > 代码库 > 辛星深入分析vim的自动补全功能以及vim的映射

辛星深入分析vim的自动补全功能以及vim的映射

     以前对于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 
endf
2.这里的:inoremap表示是在插入模式下的映射,首先第二行的( 即先写(),然后使用esc回到命令模式下,然后执行i来进入到插入模式下。

3.而当我输入{ 的时候,看它的命令,首先输入一个{,然后是<CR>表示回车换行,然后又是一个换行,然后输入},然后使用esc回到命令模式下,然后我们利用0命令回到行首,然后咱们使用k命令把鼠标移动到上一行,然后执行i命令进入到插入模式,然后咱们使用<Tab>表示插入一个制表符。

4.当然我只定义了小括号和大括号的自动补全,对于中括号我并没有使用自动补全,大家可以自行去修改。

5.vim在这点上使用还是蛮舒服的,毕竟感觉很自由。

6.传播编程知识,振兴中华软件,辛星,期待您的关注。