日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vi/vim使用進(jìn)階: 自動補全

 zale的圖書館 2011-06-24

本節(jié)所用命令的幫助入口:

:help compl-generic
:help 'complete'
:help ins-completion 

上篇文章介紹了vim的智能補全(omni補全),本篇主要介紹vim提供的其它補全方式。

除智能補全外,最常用的補全方式應(yīng)該是CTRL-NCTRL-P補全了。它們會在當(dāng)前緩沖區(qū)、其它緩沖區(qū),以及當(dāng)前文件所包含的頭文件中查找以光標(biāo)前關(guān)鍵字開始的單詞。智能補全不能對局部變量進(jìn)行補全,而CTRL-NCTRL-P補全則可以很好的勝任。

下圖是采用CTRL-P補全的一個例子,輸出字符”pa”,然后按CTRL-P,vim會在下拉菜單中列出所有的匹配功能供選擇,此時再按一下CTRL-P,就選中了第一個項目,也就是我想輸入的”parmp”。我們第一次輸入CTRL-P的是進(jìn)行補全,第二次輸入的CTRL-P是在下拉菜單中向上選擇,二者的含義是不同的。

我們知道,CTRL-P一般的含義是向上,因此CTRL-P補全是向上查找以進(jìn)行補全,而CTRL-N是向下查找以進(jìn)行補全,在不同場合使用不同的快捷鍵可以加速補全的速度。

使用CTRL-NCTRL-P補全時,由’complete‘選項控制vim從哪些地方查找補全的內(nèi)容。例如,對于比較大的軟件項目,文件包含關(guān)系復(fù)雜,如果CTRL-NCTRL-P補全時查找所包含的頭文件,耗時會比較久。此時,可以在’complete‘選項中去掉’i‘標(biāo)記,這樣CTRL-NCTRL-P補全就不在頭文件中查找了,速度會快很多;當(dāng)然,弊端就是你無法對頭文件中出現(xiàn)的某些內(nèi)容進(jìn)行補全了?!?span id="i4l3tzw" class="emphasis">complete‘選項中其它標(biāo)記的含義,請閱讀手冊頁。

vim中其它的補全方式包括:

整行補全                        CTRL-X CTRL-L
根據(jù)當(dāng)前文件里關(guān)鍵字補全        CTRL-X CTRL-N
根據(jù)字典補全                    CTRL-X CTRL-K
根據(jù)同義詞字典補全              CTRL-X CTRL-T
根據(jù)頭文件內(nèi)關(guān)鍵字補全          CTRL-X CTRL-I
根據(jù)標(biāo)簽補全                    CTRL-X CTRL-]
補全文件名                      CTRL-X CTRL-F
補全宏定義                      CTRL-X CTRL-D
補全vim命令                     CTRL-X CTRL-V
用戶自定義補全方式              CTRL-X CTRL-U
拼寫建議                        CTRL-X CTRL-S 

例如,當(dāng)我們按下”CTRL-X CTRL-F“時,vim就會彈出下拉菜單,顯示出當(dāng)前目錄下的可選目錄和文件,如下圖所示。這樣,在輸入文件名時方便多了。

靈活的運用這些補全方式,甚至自定義自己的補全方式,可以使你的工作更加高效。

可以在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插件會記住你上次所使用的補全方式,下次再補全時,直接使用TAB,就可以重復(fù)這種類型的補全。比如,上次你使用CTRL-X CTRL-F進(jìn)行了文件名補全,接下來,你就可以使用TAB來繼續(xù)進(jìn)行文件名補全,直到你再使用上面列出的補全命令進(jìn)行了其它形式的補全。這個插件在下面的鏈接下載:

http://www./scripts/script.php?script_id=1643

下載后,把它放到.vim/plugin目錄就可以了。

可以對下面兩個選項進(jìn)行配置,以調(diào)整SuperTab的缺省行為:

  • g:SuperTabRetainCompletionType的值缺省為1,意為記住你上次的補全方式,直到使用其它的補全命令改變它;如果把它設(shè)成2,意味著記住上次的補全方式,直到按ESC退出插入模式為止;如果設(shè)為0,意味著不記錄上次的補全方式。
  • g:SuperTabDefaultCompletionType的值設(shè)置缺省的補全方式,缺省為CTRL-P。

你可以在vimrc中設(shè)置這兩個變量,例如:

let g:SuperTabRetainCompletionType = 2
let g:SuperTabDefaultCompletionType = "<C-X><C-O>" 

現(xiàn)在你可以使用TAB來進(jìn)行補全了,就像在shell中那樣,方便了很多!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多