ctags

vim下方便代碼閱讀的工具

ctags(Generate tag files for source code)是vim下方便代碼閱讀的工具。儘管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。並且VIM中已經默認安裝了Ctags,它可以幫助程序員很容易地瀏覽源代碼。

ctags簡介


ctags 最先是用來生成C代碼的tags文件,後來擴展成可以生成各類語言的tags, 有些語言也有專有的tags生成工具(比如java的jtags, python的 ptags).

ctags使用


安裝

到ctags官網下載源碼,解壓后
$ make
$ sudo make install
如果你使用的是Ubuntu系統(Debian),那麼可以使用如下命令直接安裝:sudo apt-get install ctags

生成索引文件

在源碼目錄下執行
$ctags –R .
“-R”表示遞歸創建,也就包括源代碼根目錄(當前目錄)下的所有子目錄。“*”表示所有文件。這條命令會在當前目錄下產生一個“tags”文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。Tags文件中包括這些對象的列表:用#define定義的宏枚舉型變數的值函數的定義、原型和聲明名字空間(namespace)類型定義(typedefs)變數(包括定義和聲明)類(class)、結構(struct)、枚舉類型(enum)和聯合(union)類、結構和聯合中成員變數或函數VIM用這個“tags”文件來定位上面這些做了標記的對象。

ctags配置

使用sudo vim /etc/vim/vimrc 編輯vim的配置文檔,在其中加入如下命令:
set tags=/home/zhouyl/linux-3.4.7/tags;"後面的路徑是使用ctags -R 後生成的tags文件所在目錄,如果需要配置多個tags,只需如下再添加即可
set tags=/home/zhouyl/rap/libpcap-1.3.0/tags;
set autochdir

使用

熟練的使用ctags僅需記住下面七條命令:
1.$ctags –R * ($為Linux系統Shell提示符,這個命令上面已經有所介紹)
2. $ vi –t tag (請把tag替換為您欲查找的變數或函數名)
3.:ts(ts助記字:tagslist, “:”開頭的命令為VI中命令行模式命令)
4.:tp(tp助記字:tagspreview)---此命令不常用,可以不用記
5.:tn(tn助記字:tagsnext) ---此命令不常用,可以不用記
6.Ctrl+ ]跳到游標所在函數或者結構體的定義處
7.Ctrl+ T返回查找或跳轉
“$vi –t tag” :在運行vim的時候加上“-t”參數,例如:[/usr/src]$vim -tmain這個命令將打開定義“main”(變數或函數或其它)的文件,並把游標定位到這一行。如果這個變數或函數有多處定義,
VI命令行模式“:ts”命令就能列出一個列表供用戶選擇。
“:tp”為上一個tag標記文件,
“:tn”為下一個tag標記文件。
當然,若當前tags文件中用戶所查找的變數或函數名只有一個,“:tp,:tn”命令不可用。
(最方便的方法是把游標移到變數名或函數名上,然後按下“Ctrl+]”,這樣就能直接跳到這個變數或函數定義的源文件中,並把游標定位到這一行。用“Ctrl+T”可以退回原來的地方。即使用戶使用了N次“Ctrl+]”查找了N個變數,按N次“Ctrl+t”也能回到最初打開的文件,它會按原路返回。
注意:運行vim的時候,必須在“tags”文件所在的目錄下運行。否則,運行vim的時候還要用“:set tags=”命令設定“tags”文件的路徑,這樣vim才能找到“tags”文件。在完成編碼時,可以手工刪掉tags文件(帚把不到,灰塵不會自己跑掉^_^)。