ctags(Generate tag files for source code)是vim下方便代碼閱讀的工具。盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。并且VIM中已經默認安裝了Ctags,它可以幫助程序員很容易地瀏覽源代碼。
最初的Ctags是在BSD Unix 3.0中引入的,由Ken Arnold編寫,Jim Kleckner提供Fortran支持,Bill Joy提供Pascal支持。它是1992年Single Unix規范和XPG4的初始版本的一部分。
簡介
ctags 最先是用來生成C代碼的tags文件,后來擴展成可以生成各類語言的tags, 有些語言也有專有的tags生成工具(比如java的jtags, Python的 ptags)。Ctags是一種編程工具,用于在各種編程語言的源文件和頭文件中生成名稱索引(或標簽)文件,以幫助理解代碼。根據語言的不同,函數、變量、類成員、宏等都可以被索引。
ctags程序還有一些其他實現,包括GNU Emacs附帶的etags和ctags,Exuberant Ctags由Darren Hiebert編寫和維護,Universal Ctags是Exuberant Ctags的一個分支,以及針對特定語言的ctags,如Hasktags為Haskell源文件創建兼容ctags的標簽文件,jsctags是ECMAScript的一個兼容ctags的代碼索引解決方案。
ctags及其后繼者使用的標簽文件格式有多種。原始的ctags和Exuberant/Universal后繼者具有類似的文件格式,標簽文件通常命名為“tags”,而Emacs etags使用的格式則通常命名為“TAGS”。標簽文件是一系列行,每行包含標簽名、文件名和標簽地址。擴展Ctags和Etags格式提供了更多的信息,如附加字段和特殊ASCII字符用于特殊目的。
軟件相關
安裝
到ctags官網 下載源碼,解壓后
$ ./configure
$ make
$ sudo make install
如果你使用的是Ubuntu系統(Debian),那么可以使用如下命令直接安裝:sudo APT install ctags [2]
生成索引文件
在源碼目錄下執行
$ctags –R
“-R”表示遞歸創建,也就包括源代碼根目錄(當前目錄)下的所有子目錄。“*”表示所有文件。這條命令會在當前目錄下產生一個“tags”文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。Tags文件中包括這些對象的列表:用#define定義的宏枚舉型變量的值函數的定義、原型和聲明名字空間(namespace)類型定義(typedefs)變量(包括定義和聲明)類(class)、結構(struct)、枚舉類型(enum)和聯合(union)類、結構和聯合中成員變量或函數VIM用這個“tags”文件來定位上面這些做了標記的對象。
配置
使用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+j”,這樣就能直接跳到這個變量或函數定義的源文件中,并把光標定位到這一行。用“Ctrl+T”可以退回原來的地方。即使用戶使用了N次“Ctrl+]”查找了N個變量,按N次“Ctrl+t”也能回到最初打開的文件,它會按原路返回 。
注意:運行VIM的時候,必須在“tags”文件所在的目錄下運行。否則,運行vim的時候還要用“:set tags=”命令設定“tags”文件的路徑,這樣vim才能找到“tags”文件。在完成編碼時,可以手工刪掉tags文件。
參考資料 >