開發(fā)者的實(shí)用Vim插件(三)
目前為止,在一系列介紹 vim 插件文章中,我們介紹了使用 Pathogen 插件管理包安裝基本的 vim 插件,也提及了另外三個(gè)插件:Tagbar、delimitMate 和 Syntastic?,F(xiàn)在,在最后一部分,我們將介紹另一個(gè)十分有用的插件 a.vim。
請(qǐng)注意所有本篇教程所提及的例子、命令和指導(dǎo),它們已經(jīng)在 Ubuntu 16.04 測(cè)試完畢,vim 使用版本為 vim7.4 (LCTT 譯注:Ubuntu 16.04 的默認(rèn)版本)。
A.vim
如果你一直用像 C、C++ 這樣的語(yǔ)言進(jìn)行開發(fā)工作,你一定有這樣的感觸:我特么已經(jīng)數(shù)不清我在頭文件和源代碼之間切換過多少次了。我想說的是,確實(shí),這個(gè)操作十分基本,十分頻繁。
盡管使用基于 GUI(圖形界面)的 IDE(集成開發(fā)環(huán)境)非常容易通過鼠標(biāo)的雙擊切換文件,但是如果你是資深 vim 粉,習(xí)慣用命令工作就有點(diǎn)尷尬了。但是不要害怕,我有秘籍--插件 a.vim。它可以讓你解決尷尬,專治各種文件切換。
在我們介紹這個(gè)神器用法之前,我必須強(qiáng)調(diào)一點(diǎn):這個(gè)插件的安裝過程和我們其他篇介紹的不太一樣,步驟如下:
- 首先,你需要下載兩個(gè)文件(a.vim 和 alternate.txt),你可以在這里找到它們。
- 接下來,創(chuàng)建如下目錄:~/.vim/bundle/avim、~/.vim/bundle/avim/doc、 ~/.vim/bundle/avim/plugin 和 ~/.vim/bundle/autoload。
- 創(chuàng)建好目錄之后,將 a.vim 放到 ~/.vim/bundle/avim/plugin 和 ~/.vim/bundle/autoload,以及將 alternate.txt 放到 ~/.vim/bundle/avim/doc。
就是這樣,如果上述步驟被你成功完成,你的系統(tǒng)就會(huì)安裝好這個(gè)插件。
使用這個(gè)插件十分簡(jiǎn)單,你僅僅需要運(yùn)行這個(gè)命令 :A 如果目前的文件是源文件(比如 test.c),這個(gè)神器就會(huì)幫你打開 test.c 對(duì)應(yīng)的頭文件(test.h),反之亦然。
當(dāng)然咯,不是每個(gè)文件對(duì)應(yīng)的頭文件都存在。這種情況下,如果那你運(yùn)行 :A 命令,神器就會(huì)為你新建一個(gè)文件。比如,如果 test.h 不存在,那么運(yùn)行此命令就會(huì)幫你創(chuàng)建一個(gè) test.h,然后打開它。
如果你不想要神器開啟此功能,你可以在你的家目錄的隱藏文件 .vimrc 中寫入 g:alternateNonDefaultAlternate 變量,并且賦給它一個(gè)非零值即可。
還有一種情況也很普遍,你需要打開的文件并非是當(dāng)前源代碼的頭文件。比如你目前在 test.c 你想打開 men.h 這個(gè)頭文件,那么你可以輸入這個(gè)命令 :IH <filename> ,毋需贅言,你肯定要在后面輸入你要打開的的文件名稱 <filename>。
目前為止,我們討論的功能都僅限于你當(dāng)前文件和要操作的文件都在同一個(gè)目錄去實(shí)現(xiàn)。但是,你也知道,我們還有特殊情況,我是說,許多項(xiàng)目中頭文件與對(duì)應(yīng)的源文件并不一定在同一目錄下。
為了搞定這個(gè)問題,你要使用這個(gè) g:alternateSearchPath 這個(gè)變量。官方文檔是這么解釋的:
這個(gè)插件可以讓用戶配置它的搜索源文件和頭文件的搜索路徑。這個(gè)搜索路徑可以通過設(shè)置 g:alternateSearchPath 這個(gè)變量的值指定。默認(rèn)的設(shè)定如下:
- g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc'
使用這個(gè)代碼表示神器將搜索 ../source、../src、../include 和 ../inc 下所有與目標(biāo)文件相關(guān)的文件。 g:alternateSearchPath 變量的值由前綴和路徑組成,每個(gè)單元用逗號(hào)隔開。 sfr 前綴是指后面的路徑是相對(duì)于目前文件的,wdr 前綴是指目錄是相對(duì)于目前的工作目錄, abs 是指路徑是絕對(duì)路徑。如果不指定前綴,那么默認(rèn)為 sfr。
如果我們前文所提及的特性就能讓你覺得很炫酷,那我不得不告訴你,這才哪跟哪。還有一個(gè)十分有用的功能是分割 Vim 屏幕,這樣你就可以同時(shí)看到頭文件和相應(yīng)的源文件。
哦,還有,你還可以選擇垂直或者水平分割。全憑你心意。使用 :AS 命令可以水平分割,使用 :AV 可以垂直分割。
Vim.a vertical split screen
vim.a horizontal split screen
使用 :A 命令在已經(jīng)打開的文件中切換。
這個(gè)插件還可以讓你在同一個(gè) Vim 窗口中不同選項(xiàng)卡中打開多個(gè)相應(yīng)的文件,你鍵入這個(gè)命令 :AT。
tabs in Vim with a.vim.
當(dāng)然,你可以用這些命令 :AV、:AS 和 :AT,也可以使用這些命令 :IHV、:IHS 和 :IHT。
最后
還有許多和編程相關(guān)的 Vim 的插件,我們?cè)谶@個(gè)三篇系列主要討論的是,如果你為你的軟件開發(fā)工作安裝了合適的插件,你就會(huì)明白為什么 vim 被叫做編輯器之神。
當(dāng)然,我們?cè)谶@只關(guān)注編程方面,對(duì)于那些把 Vim 當(dāng)做日常文檔編輯器的人來說,你也應(yīng)該了解一些 Vim 的插件,讓你的編輯更好,更高效.我們就改日再談這個(gè)問題吧。