|
本節(jié)所用命令的幫助入口: :help compl-generic :help 'complete' :help ins-completion 上篇文章介紹了vim的智能補(bǔ)全(omni補(bǔ)全),本篇主要介紹vim提供的其它補(bǔ)全方式。 除智能補(bǔ)全外,最常用的補(bǔ)全方式應(yīng)該是CTRL-N和CTRL-P補(bǔ)全了。它們會(huì)在當(dāng)前緩沖區(qū)、其它緩沖區(qū),以及當(dāng)前文件所包含的頭文件中查找以光標(biāo)前關(guān)鍵字開始的單詞。智能補(bǔ)全不能對(duì)局部變量進(jìn)行補(bǔ)全,而CTRL-N和CTRL-P補(bǔ)全則可以很好的勝任。 下圖是采用CTRL-P補(bǔ)全的一個(gè)例子,輸出字符”pa”,然后按CTRL-P,vim會(huì)在下拉菜單中列出所有的匹配功能供選擇,此時(shí)再按一下CTRL-P,就選中了第一個(gè)項(xiàng)目,也就是我想輸入的”parmp”。我們第一次輸入CTRL-P的是進(jìn)行補(bǔ)全,第二次輸入的CTRL-P是在下拉菜單中向上選擇,二者的含義是不同的。 我們知道,CTRL-P一般的含義是向上,因此CTRL-P補(bǔ)全是向上查找以進(jìn)行補(bǔ)全,而CTRL-N是向下查找以進(jìn)行補(bǔ)全,在不同場(chǎng)合使用不同的快捷鍵可以加速補(bǔ)全的速度。 使用CTRL-N和CTRL-P補(bǔ)全時(shí),由’complete‘選項(xiàng)控制vim從哪些地方查找補(bǔ)全的內(nèi)容。例如,對(duì)于比較大的軟件項(xiàng)目,文件包含關(guān)系復(fù)雜,如果CTRL-N和CTRL-P補(bǔ)全時(shí)查找所包含的頭文件,耗時(shí)會(huì)比較久。此時(shí),可以在’complete‘選項(xiàng)中去掉’i‘標(biāo)記,這樣CTRL-N和CTRL-P補(bǔ)全就不在頭文件中查找了,速度會(huì)快很多;當(dāng)然,弊端就是你無法對(duì)頭文件中出現(xiàn)的某些內(nèi)容進(jìn)行補(bǔ)全了?!?span id="opkdopnojk" class="emphasis">complete ‘選項(xiàng)中其它標(biāo)記的含義,請(qǐng)閱讀手冊(cè)頁(yè)。vim中其它的補(bǔ)全方式包括: 整行補(bǔ)全 CTRL-X CTRL-L 根據(jù)當(dāng)前文件里關(guān)鍵字補(bǔ)全 CTRL-X CTRL-N 根據(jù)字典補(bǔ)全 CTRL-X CTRL-K 根據(jù)同義詞字典補(bǔ)全 CTRL-X CTRL-T 根據(jù)頭文件內(nèi)關(guān)鍵字補(bǔ)全 CTRL-X CTRL-I 根據(jù)標(biāo)簽補(bǔ)全 CTRL-X CTRL-] 補(bǔ)全文件名 CTRL-X CTRL-F 補(bǔ)全宏定義 CTRL-X CTRL-D 補(bǔ)全vim命令 CTRL-X CTRL-V 用戶自定義補(bǔ)全方式 CTRL-X CTRL-U 拼寫建議 CTRL-X CTRL-S 例如,當(dāng)我們按下”CTRL-X CTRL-F“時(shí),vim就會(huì)彈出下拉菜單,顯示出當(dāng)前目錄下的可選目錄和文件,如下圖所示。這樣,在輸入文件名時(shí)方便多了。 靈活的運(yùn)用這些補(bǔ)全方式,甚至自定義自己的補(bǔ)全方式,可以使你的工作更加高效。 可以在vimrc中定義下面的鍵綁定,以減少按鍵次數(shù): inoremap <C-]> <C-X><C-]> inoremap <C-F> <C-X><C-F> inoremap <C-D> <C-X><C-D> inoremap <C-L> <C-X><C-L> SuperTab插件會(huì)記住你上次所使用的補(bǔ)全方式,下次再補(bǔ)全時(shí),直接使用TAB,就可以重復(fù)這種類型的補(bǔ)全。比如,上次你使用CTRL-X CTRL-F進(jìn)行了文件名補(bǔ)全,接下來,你就可以使用TAB來繼續(xù)進(jìn)行文件名補(bǔ)全,直到你再使用上面列出的補(bǔ)全命令進(jìn)行了其它形式的補(bǔ)全。這個(gè)插件在下面的鏈接下載: http://www./scripts/script.php?script_id=1643 下載后,把它放到.vim/plugin目錄就可以了。 可以對(duì)下面兩個(gè)選項(xiàng)進(jìn)行配置,以調(diào)整SuperTab的缺省行為:
你可以在vimrc中設(shè)置這兩個(gè)變量,例如: let g:SuperTabRetainCompletionType = 2 let g:SuperTabDefaultCompletionType = "<C-X><C-O>" 現(xiàn)在你可以使用TAB來進(jìn)行補(bǔ)全了,就像在shell中那樣,方便了很多! |
|
|