ctags簡(jiǎn)介:
“哦陪毡,這個(gè)多的文件雏掠,我該如何去查看XX函數(shù)的實(shí)現(xiàn)术健!”相信這是很多朋友的抱怨。太多的文件導(dǎo)致我們無(wú)法去定位一個(gè)函數(shù)的實(shí)現(xiàn)或者一個(gè)宏定義的位置裁替。顯然對(duì)于源碼的閱讀和個(gè)人的學(xué)習(xí)都是非常不利的项玛。多么希望有一個(gè)軟件能夠輸入命令就能夠精確的定位函數(shù)的位置。是的弱判,現(xiàn)在有這么一個(gè)工具:ctags,它需要和vim編輯器配合使用襟沮,讓源碼閱讀可以更加輕松。
什么是ctags裕循?
ctags(Generate tag files for source code)是vim下方便代碼閱讀的工具臣嚣。盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM剥哑。并且VIM中已經(jīng)默認(rèn)安裝了Ctags硅则,它可以幫助程序員很容易地瀏覽源代碼。
ctags更新地址:http://ctags.sourceforge.net/, 這個(gè)網(wǎng)站是ctags的官方網(wǎng)站株婴,你可以在上面下載到關(guān)于ctags的最新內(nèi)容怎虫。
ctags能夠定位什么內(nèi)容?
- 用#define定義的宏
- 枚舉型變量的值
- 函數(shù)的定義困介、原型和聲明
- 名字空間(namespace)
- 類型定義(typedefs)
- 變量(包括定義和聲明)
- 類(class)大审、結(jié)構(gòu)(struct)、枚舉類型(enum)和聯(lián)合(union)
- 類座哩、結(jié)構(gòu)和聯(lián)合中成員變量或函數(shù)
配置自己的環(huán)境滿足ctags:
安裝ctags徒扶,如果是redhat,則直接使用yum命令安裝:
在指定的源碼位置生成tags文件根穷,并且我們添加很多參數(shù)來(lái)完善ctags的功能(為了體現(xiàn)其功能的強(qiáng)大姜骡,我用它來(lái)生成linux源碼的tags文件):
然后我們查看tags內(nèi)容就可以發(fā)現(xiàn),原來(lái)tags就是linux內(nèi)核代碼中各個(gè)元素的索引屿良,這也就是ctags結(jié)合vim可以快速進(jìn)行定位的原因了(查詢就是通過(guò)這個(gè)文件內(nèi)容來(lái)定位的):
tags路徑必須寫入vim的配置文件中圈澈,才能在vim里面正確跳轉(zhuǎn),所以我們要進(jìn)行添加:
完成之后我們就可以進(jìn)行查找了尘惧,這里我們以printf的為例(你很快就會(huì)見識(shí)到ctags的威力了)康栈,如果是有經(jīng)驗(yàn)的程序員,我想你一定會(huì)很快的反應(yīng)出printf函數(shù)在什么文件中,呵呵啥么。還好有經(jīng)驗(yàn)的人并不是很多登舞。。悬荣。
ctags的使用方法有一下幾種:
-
直接在命令行上操作:
-
在vim的模式下用“:ta ”命令:
在光標(biāo)制定的位置下直接使用“ctrl+]”逊躁,就可以定位到函數(shù)的定義位置:
關(guān)于ctags的用法有很多,以下是我們列舉的部分:
- "Ctrl-o"退回原來(lái)的地方隅熙;
- [{ 轉(zhuǎn)到上一個(gè)位于第一列的"{";
- }] 轉(zhuǎn)到下一個(gè)位于第一列的"{"核芽;
- { 轉(zhuǎn)到上一個(gè)空行囚戚;
- } 轉(zhuǎn)到下一個(gè)空行;
- gd 轉(zhuǎn)到當(dāng)前光標(biāo)所指的局部變量的定義轧简;
- * 轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞下一次出現(xiàn)的地方 驰坊;
- # 轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞上一次出現(xiàn)的地方;