VIM外掛程式攻略

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   os   使用   for   

工欲善其事,必先利其器。一個強大的開發環境可以大大提高工作效率。好吧,我知道這是廢話。。。不過,我想一定有很多跟我一樣打算進入Linux平台開發的新手,一開始都為找不到一個像Windows下的VS那樣可以一鍵安裝並且功能幾乎完美無缺的開發工具而鬱悶不已,甚至打算收回剛剛邁出的腳步。所幸的是,通過幾天努力,我總算配置出了一個功能完備的基於Vim的開發環境。這個開發環境除了基本的Vim外,還包括Ctags,Taglist,Cscope,SuperTab,OmniCppComplete,Winmanager,NERDTree和MiniBufExplorer等組件。

    在開始操作前,先普及下基礎概念,然後約定一下表達規範。

    1)Vim存在多個設定檔vimrc,比如/etc/vimrc,此檔案影響整個系統的Vim。還有~/.vimrc,此檔案隻影響本使用者的Vim。而且~/.vimrc檔案中的配置會覆蓋/etc/vimrc中的配置。這裡我們只修改~/.vimrc檔案。

    2)Vim的外掛程式(plugin)安裝在Vim的runtimepath目錄下,你可以在Vim命令列下運行"set rtp“命令查看。這裡我們選擇安裝在~/.vim目錄,沒有就建立一個。

    3)當本文說”在Vim命令列下運行cmdxx命令“時,意思是指在Vim的命令列模式下運行cmdxx命令,即在Vim的正常模式下通過輸入冒號":"進入命令列模式,然後緊接著輸入命令cmdxx。在後文描述中都會省略冒號":"輸入。

    4)如果沒有說明“在Vim命令列下運行某命令”,則是在shell中執行該命令。

    5)如果命令中間被空白符間隔或有與本文容易混淆的字元,我會用雙引號將命令與本文區分。所以讀者在實際操作時,不要輸入命令最前面和最後面引號。

    6)本文關於組合快速鍵的描述,形如a-b形式的快速鍵表示同步選取a鍵和b鍵,而形如"a-b c"形式的快速鍵,則表示先同步選取a鍵和b鍵,然後放開ab鍵,再按下c鍵。

    1,安裝使用Ctags

        Ctags工具是用來遍曆原始碼檔案產生tags檔案,這些tags檔案能被編輯器或其它工具用來快速尋找定位原始碼中的符號(tag/symbol),如變數名,函數名等。比如,tags檔案就是Taglist和OmniCppComplete工作的基礎。

       這裡介紹從原始碼包安裝,安裝步驟跟大多數軟體的從原始碼安裝步驟一樣。

        1)從http://ctags.sourceforge.net/下載原始碼包後,解壓縮產生原始碼目錄,

        2)然後進入原始碼根目錄執行./configure,

        3)然後執行make,

        4)編譯成功後執行make install。

        5)在~/.vimrc中增加以下這行:

    map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>  

        到此,Ctags已安裝成功。

        使用Ctags的也很簡單。 進入我們的項目代碼根目錄,執行以下命令:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .  

        另外,由於在前面第5條,我們已經在Vim中配置了Ctrl-F12組合快速鍵,所以我們也可以進入代碼根目錄後,開啟Vim,按下Ctrl-F12快速鍵自動產生tags檔案。

        命令執行完後,會在原始碼目錄產生tags檔案。Vim預設會自動讀取目前的目錄下的tags檔案,所以不需要修改~/.vimrc檔案。此時,我們已經具有定義跳轉的功能了。常用快速鍵如下:

1.$ ctags –R *    ($ 為Linux系統Shell提示符)        2.$ vi –t tag       (請把tag替換為您欲尋找的變數或函數名)        3.:ts                   (ts  助記字:tags list, “:”開頭的命令為VI中命令列模式命令)        4.:tp                   (tp 助記字:tags preview)5.:tn                   (tn 助記字:tags next)6.Ctrl + ]            (跳轉到定義處)7.Ctrl + T           (退回至跳轉前)8.:ta x                (跳轉到符號x的定義處,如果有多個符號,直接跳轉到第一處9.:ts x                (列出符號x的定義)10.:tj x               (可以看做上面兩個命令的合并,如果只找到一個符號定義,那麼直接跳轉到符號定義處,如果有多個,則讓使用者自行選擇)      注意:運行vim的時候,必須在“tags”檔案所在的目前的目錄下運行。否則,運行vim的時候還要用“:set tags=tags;set tags+=your path”命令設定“tags”檔案的路徑,這樣vim才能找到“tags”檔案。在完成編碼時,可以手工刪掉tags檔案(帚把不到,灰塵不掉)。

 

 

    2,安裝使用Taglist

        Taglist是vim的一個外掛程式,提供原始碼符號的結構化視圖。

 

        1)從http://www.vim.org/scripts/script.php?script_id=273下載安裝包,也可以從http://vim-taglist.sourceforge.net/index.html下載。

        2)進入~/.vim目錄,將Taglist安裝包解壓,解壓後會在~/.vim目錄中產生幾個新子目錄,如plugin和doc(安裝其它外掛程式時,可能還會建立autoload等其它目錄)。

        3)進入~/.vim/doc目錄,在Vim下運行"helptags ."命令。此步驟是將doc下的協助文檔加入到Vim的說明主題中,這樣我們就可以通過在Vim中運行“help taglist.txt”查看taglist協助。

        4)開啟設定檔~/.vimrc,加入以下兩行:

 

[plain] view plaincopy 
  1. let Tlist_Show_One_File=1  
  2. let Tlist_Exit_OnlyWindow=1  

        到此安裝已經完成。

 

       在Vim命令列下運行TlistToggle命令就可以開啟Taglist視窗,再次運行TlistToggle則關閉。示圖如下:

        我們可以通過Ctrl-w快速鍵或滑鼠點擊在Taglist視窗和編輯區之間切換焦點,在Taglist視窗用滑鼠或鍵盤選擇某個符號,然後點擊或斷行符號,就可以跳轉到該符號定義的位置。

        更多功能可通過在Vim命令列下運行help taglist.txt查詢。

 

    3,安裝使用Cscope

        Cscope提供互動式查詢語言符號功能,如查詢哪些地方使用某個變數或調用某個函數。

 

        Cscope已經是Vim的標準特性,預設都有支援,官方網址為http://cscope.sourceforge.net/。

        1)在Vim下運行version查看Vim支援哪些特性,前面有首碼符號+的為支援。如果支援Cscope,則直接進入2),否則下載Cscope原始碼包編譯安裝。步驟同Ctags安裝。

        2)確定Vim已支援Cscope後,將檔案http://cscope.sourceforge.net/cscope_maps.vim下載到~/.vim/plugin目錄。

 

        到這裡,我們就可以開始使用Cscope了。

       1)使用Cscope需要產生cscope資料庫檔案。進入項目代碼根目錄運行命令:

 

[plain] view plaincopy 
  1. cscope -Rbq -f path/xxx.out  

            命令運行後會產生xxx.out檔案,即cscope資料庫檔案。更多用法參考man cscope文檔。

       2)進入項目代碼根目錄,在Vim下運行命令:

 

[plain] view plaincopy 
  1. cs add path/xxx.out  

           此命令將cscope資料庫載入Vim。

       3)Cscope常用快速鍵

           Ctrl-\ s 尋找所有當前游標所在符號出現過位置。
           Ctrl-\ c 尋找所有調用當前游標所在函數的函數。

       按下快速鍵尋找結束後會在編輯區下方出現尋找結果的列表,輸入結果編號並斷行符號,就能跳轉到該尋找結果在原始碼中的相應位置。例如,我們將游標移到initial_pool_size變數定義的位置,即17行,然後按下"Ctrl-\ s"組合快速鍵,得到示圖如下:

            然後我們輸入2,並斷行符號,就能跳轉到第2個尋找結果。         

           為了介面更好看,可以把Cscope的尋找結果輸出到quickfix視窗,需要在~/.vimrc中加入下面這行:

 

[plain] view plaincopy 
  1. set cscopequickfix=s-,c-,d-,i-,t-,e-  

            這樣,通過快速鍵尋找某個符號後,會立即跳轉到第一個找到的該符號出現的位置。如果你對這次預設跳轉的位置不滿意,在Vim命令列下運行cw命令,就能在編輯區下面quickfix視窗看到所有尋找結果的列表,點擊相應清單項目就能跳轉到相應位置。這個功能已經跟VS很接近了吧:)

        更多功能可通過命令man cscope或在Vim命令列下運行help cscope查詢。

 

    4,安裝使用OmniCppComplete

        OmniCppComplete主要提供輸入時即時提供類或結構體的屬性或方法的提示和補全。跟Talist一樣,OmniCppComplete也是一個Vim外掛程式,同樣依賴與Ctags工具產生的tags檔案。安裝步驟跟Taglist類似。

 

        從http://www.vim.org/scripts/script.php?script_id=1520下載安裝包後。

       1)進入~/.vim目錄,將安裝版解壓縮

       2)進入~/.vim/doc目錄,在Vim命令列下運行"helptags .”

       3)在~/.vimrc中加入以下幾行:

 

[plain] view plaincopy 
  1. set nocp  
  2. filetype plugin on  

 

 

       OmniCppComplete的使用幾乎跟VS下的VA一樣。如所示,輸入m0.之後立即彈出my_class類中所有的函數列表,然後用上下鍵選擇合適的函數。

        更多功能通過在Vim命令列下運行"help omnicppcomplete"查詢。

 

    5,安裝使用SuperTab

        SuperTab使Tab快速鍵具有更快捷的上下文提示功能。跟OmniCppComplete一樣,SuperTab也是一個Vim外掛程式。

 

        從http://www.vim.org/scripts/script.php?script_id=1643下載安裝版。這個安裝包跟先前的幾個Vim外掛程式不同,它是一個vba檔案,即Vimball格式的安裝包,這種格式安裝包提供傻瓜式的安裝外掛程式的方法。

       1)用Vim開啟.vba安裝包檔案。

       2)在Vim命令列下運行命令“UseVimball ~/.vim”。此命令將安裝包解壓縮到~/.vim目錄。VImball安裝方式的便利之處在於你可以在任何目錄開啟.vba包安裝,而不用切換到安裝目的地目錄。而且不用運行helptags命令安裝協助文檔。

       3)在~/.vimrc檔案中加入以下這行:

 

[plain] view plaincopy 
  1. let g:SuperTabDefaultCompletionType="context"  

 

 

       SuperTab使用很簡單,只要在輸入變數名或路徑名等符號中途按Tab鍵,就能得到以前輸入過的符號列表,並通過Tab鍵迴圈選擇。

 

    6,安裝使用Winmanager,NERDTree和MiniBufExplorer

        前面介紹的幾個工具和外掛程式,主要提供快捷的編輯功能,如定義跳轉,符號查詢,符號提示與補全等。這裡的三個外掛程式,主要最佳化布置VIm的介面。具體來說,NERDTree提供樹形瀏覽檔案系統的介面,MiniBufExplorer提供多檔案同時編輯功能,而Winmanager將這NERDTree介面和Taglist介面整合起來,使Vim更像VS!

 

        分別從http://www.vim.org/scripts/script.php?script_id=1658

                    http://www.vim.org/scripts/script.php?script_id=159

                    http://www.vim.org/scripts/script.php?script_id=95

        下載NERDTree,MiniBufExplorer和Winmanager安裝包(Winmanager還有個更新的vba版本http://www.vim.org/scripts/script.php?script_id=1440,這裡選用舊版本的Winmanger)。

        1)像其它外掛程式一樣,將NERDTree安裝包解壓到~/.vim目錄。並進入doc目錄,在Vim命令列下運行"helptags ."命令。

        2)MiniBufExplorer只有一個.vim檔案,將其拷貝到~/.vim/plugin目錄。

        3)在~/.vimrc檔案中加入以下幾行:

 

[plain] view plaincopy 
  1. let g:miniBufExplMapWindowNavVim = 1   
  2. let g:miniBufExplMapWindowNavArrows = 1   
  3. let g:miniBufExplMapCTabSwitchBufs = 1   
  4. let g:miniBufExplModSelTarget = 1  
  5. let g:miniBufExplMoreThanOne=0  

        4)將Winmanager安裝包解壓到~/.vim目錄。

 

        5)在~/.vimrc檔案中加入以下幾行:

[plain] view plaincopy 
  1. let g:NERDTree_title="[NERDTree]"  
  2. let g:winManagerWindowLayout="NERDTree|TagList"  
  3.   
  4. function! NERDTree_Start()  
  5.     exec ‘NERDTree‘  
  6. endfunction  
  7.   
  8. function! NERDTree_IsValid()  
  9.     return 1  
  10. endfunction  
  11.   
  12. nmap wm :WMToggle<CR>  

        6)這個版本的Winmanager好像有個小bug,你在開啟Winmanager介面時,會同時開啟一個空的檔案。這會影響後續使用,所以我們要在開啟Winmanager時關掉這個空檔案。在~/.vim/plugin目錄下的winmanager.vim檔案中找到以下函數定義並在第5行下添加第6行的內容:

 

[plain] view plaincopy 
  1. function! <SID>ToggleWindowsManager()  
  2.    if IsWinManagerVisible()  
  3.       call s:CloseWindowsManager()  
  4.    else  
  5.       call s:StartWindowsManager()  
  6.       exe ‘q‘  
  7.    end  
  8. endfunction  

 

        到這裡,就大功告成了!        

 

        現在進入我們的項目目錄,開啟Vim,按下組合快速鍵w-m就可以我們的嶄新的Vim了!再次按下w-m就可關閉介面。示圖如下:

        介面最上面的一條窄邊就是MiniBufExplorer,可以看到我開啟了兩個檔案cache.c和assoc.c,是不是很像VS的標籤?

        緊靠MiniBufExplorer下方左邊的矩形地區就是NERDTree。在這個視窗,我們可以用滑鼠或鍵盤方便的瀏覽整個檔案系統,在某個檔案上點擊或斷行符號,就可以在右邊編輯地區開啟該檔案。

        NERDTree下方的就是前面安裝的Taglist介面。

 

    7,其它有用的~/.vimrc設定

        設定色彩配置,我用的是eveing方案,色彩配置儲存在/usr/share/vim/vimXY/colors

 

[plain] view plaincopy 
  1. colo evening  

        顯示行數

 

[plain] view plaincopy 
  1. set nu  

        與自動縮排相關的選項

[plain] view plaincopy 
    1. set autoindent  
    2. set tabstop=4  
    3. set shiftwidth=4  
    4. p;   set mouse=a 

VIM外掛程式攻略

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.