開發者的實用 Vim 插件(三)
A.vim
如果你一直用像 C、C++ 這樣的語言進行開發工作,你一定有這樣的感觸:我特么已經數不清我在頭文件和源代碼之間切換過多少次了。我想說的是,確實,這個操作十分基本,十分頻繁。
儘管使用基於 GUI(圖形界面)的 IDE(集成開發環境)非常容易通過滑鼠的雙擊切換文件,但是如果你是資深 vim 粉,習慣用命令工作就有點尷尬了。但是不要害怕,我有秘籍--插件 a.vim。它可以讓你解決尷尬,專治各種文件切換。
在我們介紹這個神器用法之前,我必須強調一點:這個插件的安裝過程和我們其他篇介紹的不太一樣,步驟如下:
- 首先,你需要下載兩個文件(
a.vim
和alternate.txt
),你可以在這裡找到它們。 - 接下來,創建如下目錄:
~/.vim/bundle/avim
、~/.vim/bundle/avim/doc
、~/.vim/bundle/avim/plugin
和~/.vim/bundle/autoload
。 - 創建好目錄之後,將
a.vim
放到~/.vim/bundle/avim/plugin
和~/.vim/bundle/autoload
,以及將alternate.txt
放到~/.vim/bundle/avim/doc
。
就是這樣,如果上述步驟被你成功完成,你的系統就會安裝好這個插件。
使用這個插件十分簡單,你僅僅需要運行這個命令 :A
如果目前的文件是源文件(比如 test.c
),這個神器就會幫你打開 test.c
對應的頭文件(test.h
),反之亦然。
當然咯,不是每個文件對應的頭文件都存在。這種情況下,如果那你運行 :A
命令,神器就會為你新建一個文件。比如,如果 test.h
不存在,那麼運行此命令就會幫你創建一個 test.h
,然後打開它。
如果你不想要神器開啟此功能,你可以在你的家目錄的隱藏文件 .vimrc
中寫入 g:alternateNonDefaultAlternate
變數,並且賦給它一個非零值即可。
還有一種情況也很普遍,你需要打開的文件並非是當前源代碼的頭文件。比如你目前在 test.c
你想打開 men.h
這個頭文件,那麼你可以輸入這個命令 :IH <filename>
,毋需贅言,你肯定要在後面輸入你要打開的的文件名稱 <filename>
。
目前為止,我們討論的功能都僅限於你當前文件和要操作的文件都在同一個目錄去實現。但是,你也知道,我們還有特殊情況,我是說,許多項目中頭文件與對應的源文件並不一定在同一目錄下。
為了搞定這個問題,你要使用這個 g:alternateSearchPath
這個變數。官方文檔是這麼解釋的:
這個插件可以讓用戶配置它的搜索源文件和頭文件的搜索路徑。這個搜索路徑可以通過設置
g:alternateSearchPath
這個變數的值指定。默認的設定如下:g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc'
使用這個代碼表示神器將搜索
../source
、../src
、../include
和../inc
下所有與目標文件相關的文件。g:alternateSearchPath
變數的值由前綴和路徑組成,每個單元用逗號隔開。sfr
前綴是指後面的路徑是相對於目前文件的,wdr
前綴是指目錄是相對於目前的工作目錄,abs
是指路徑是絕對路徑。如果不指定前綴,那麼默認為sfr
。
如果我們前文所提及的特性就能讓你覺得很炫酷,那我不得不告訴你,這才哪跟哪。還有一個十分有用的功能是分割 Vim 屏幕,這樣你就可以同時看到頭文件和相應的源文件。
哦,還有,你還可以選擇垂直或者水平分割。全憑你心意。使用 :AS
命令可以水平分割,使用 :AV
可以垂直分割。
使用 :A
命令在已經打開的文件中切換。
這個插件還可以讓你在同一個 Vim 窗口中不同選項卡中打開多個相應的文件,你鍵入這個命令 :AT
。
當然,你可以用這些命令 :AV
、:AS
和 :AT
,也可以使用這些命令 :IHV
、:IHS
和 :IHT
。
最後
還有許多和編程相關的 Vim 的插件,我們在這個三篇系列主要討論的是,如果你為你的軟體開發工作安裝了合適的插件,你就會明白為什麼 vim 被叫做編輯器之神。
當然,我們在這隻關注編程方面,對於那些把 Vim 當做日常文檔編輯器的人來說,你也應該了解一些 Vim 的插件,讓你的編輯更好,更高效.我們就改日再談這個問題吧。
via: https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-3/
作者:Ansh 譯者:Taylor1024 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive