辛星深入分析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:charreturn "\<Right>"else return a:char endif endf
2.這裡的:inoremap表示是在插入模式下的映射,首先第二行的( 即先寫(),然後使用esc回到命令模式下,然後執行i來進入到插入模式下。
3.而當我輸入{ 的時候,看它的命令,首先輸入一個{,然後是<CR>表示斷行符號換行,然後又是一個換行,然後輸入},然後使用esc回到命令模式下,然後我們利用0命令回到行首,然後咱們使用k命令把滑鼠移動到上一行,然後執行i命令進入到插入模式,然後咱們使用<Tab>表示插入一個定位字元。
4.當然我只定義了小括弧和大括弧的自動補全,對於中括弧我並沒有使用自動補全,大家可以自行去修改。
5.vim在這點上使用還是蠻舒服的,畢竟感覺很自由。
6.傳播編程知識,振興中華軟體,辛星,期待您的關注。