1. 程式人生 > >Ctags 的安裝與使用(使用命令詳解)

Ctags 的安裝與使用(使用命令詳解)

這兩天看到網上有將vim 改造成功能強大的IDE的blog,突然心血來潮,親身經歷了一下。
網友的帖子都不錯,我這裡只是將各種外掛分開羅列,然後加上一些使用技巧。
希望本文對你有所幫助!


『外掛介紹』
Ctags工具是用來遍歷原始碼檔案生成tags檔案,這些tags檔案能被編輯器或其它工具用來快速查詢定位原始碼中的符號(tag/symbol),如變數名,函式名等。比如,tags檔案就是Taglist和OmniCppComplete工作的基礎。
『下載和安裝』
一、我是使用apt-get安裝的:
sudo apt-get install ctags
二、下載原始碼安裝(網上提供的方法)
        1)從http://ctags.sourceforge.net/下載原始碼包後,解壓縮生成原始碼目錄,
        2)然後進入原始碼根目錄執行./configure,
        3)然後執行make,
        4)編譯成功後執行make install。
『基本功能使用方法』
常用命令列表:
        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
命令解釋:
“$ ctags –R *”:“-R”表示遞迴建立,也就包括原始碼根目錄(當前目錄)下的所有子目錄。“*”表示所有檔案。這條命令會在當前目錄下產生一個“tags”檔案,當用戶在當前目錄中執行vi時,會自動載入此tags檔案。
Tags檔案中包括這些物件的列表:
用#define定義的巨集
列舉型變數的值
函式的定義、原型和宣告
名字空間(namespace)
型別定義(typedefs)
變數(包括定義和宣告)
類(class)、結構(struct)、列舉型別(enum)和聯合(union)
類、結構和聯合中成員變數或函式
VIM用這個“tags”檔案來定位上面這些做了標記的物件。


剩下的命令就是定位這些物件的方法:
“$ vi –t tag” :在執行vim的時候加上“-t”引數,例如:
[/usr/src]$ vim -t main
這個命令將開啟定義“main”(變數或函式或其它)的檔案,並把游標定位到這一行。


如果這個變數或函式有多處定義,在VI命令列模式
“:ts”命令就能列出一個列表供使用者選擇。    
“:tp”為上一個tag標記檔案,
“:tn”為下一個tag標記檔案。當然,若當前tags檔案中使用者所查詢的變數或函式名只有一個,“:tp,:tn”命令不可用。


最方便的方法是把游標移到變數名或函式名上,然後按下“Ctrl+]”,這樣就能直接跳到這個變數或函式定義的原始檔中,並把游標定位到這一行。用“Ctrl+t”可以退回原來的地方。即使使用者使用了N次“Ctrl+]”查找了N個變數,按N次“Ctrl+t”也能回到最初開啟的檔案,它會按原路返回 。
更多功能通過命令man ctags或在Vim命令列下執行help ctags查詢。


注意:執行vim的時候,必須在“tags”檔案所在的目錄下執行。否則,執行vim的時候還要用“:settags=”命令設定“tags”檔案的路徑,這樣vim才能找到“tags”檔案。
在完成編碼時,可以手工刪掉tags檔案(帚把不到,灰塵不會自己跑掉^_^)。


『閱讀說明』
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鍵。
    7) 本人使用的系統是Ubunt 11.10 ,Vim版本是Vi IMproved 7.3