linux查看源碼工具ctags

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)容?

  1. 用#define定義的宏
  2. 枚舉型變量的值
  3. 函數(shù)的定義困介、原型和聲明
  4. 名字空間(namespace)
  5. 類型定義(typedefs)
  6. 變量(包括定義和聲明)
  7. 類(class)大审、結(jié)構(gòu)(struct)、枚舉類型(enum)和聯(lián)合(union)
  8. 類座哩、結(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的使用方法有一下幾種:

  1. 直接在命令行上操作:


  2. 在vim的模式下用“:ta ”命令:


  3. 在光標(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)的地方;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哮独,一起剝皮案震驚了整個(gè)濱河市拳芙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皮璧,老刑警劉巖舟扎,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異悴务,居然都是意外死亡睹限,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門讯檐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)羡疗,“玉大人,你說(shuō)我怎么就攤上這事别洪∵逗蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵挖垛,是天一觀的道長(zhǎng)痒钝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)晕换,這世上最難降的妖魔是什么午乓? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮闸准,結(jié)果婚禮上益愈,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好蒸其,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布敏释。 她就那樣靜靜地躺著,像睡著了一般摸袁。 火紅的嫁衣襯著肌膚如雪钥顽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天靠汁,我揣著相機(jī)與錄音蜂大,去河邊找鬼。 笑死蝶怔,一個(gè)胖子當(dāng)著我的面吹牛奶浦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踢星,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼澳叉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沐悦?” 一聲冷哼從身側(cè)響起成洗,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藏否,沒想到半個(gè)月后瓶殃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡副签,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碌燕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片继薛。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡修壕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遏考,到底是詐尸還是另有隱情慈鸠,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布灌具,位于F島的核電站青团,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咖楣。R本人自食惡果不足惜督笆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诱贿。 院中可真熱鬧娃肿,春花似錦咕缎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晒杈,卻和暖如春嫂伞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拯钻。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工帖努, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粪般。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓然磷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親刊驴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 目錄(?)[-] 關(guān)于Vim 1 Vim的幾種模式 啟動(dòng)Vim 文檔操作 光標(biāo)的移動(dòng) 1 基本移動(dòng) 2 翻屏 3 ...
    SunnyLeong閱讀 8,664評(píng)論 0 32
  • 曾經(jīng)在思科的工廠測(cè)試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過(guò)2年半寡润,現(xiàn)在...
    戈多在地獄閱讀 1,795評(píng)論 1 13
  • 1. Vim的幾種模式 正常模式:可以使用快捷鍵命令捆憎,或按:輸入命令行。 插入模式:可以輸入文本梭纹,在正常模式下躲惰,按...
    紅線路亞灣閱讀 17,008評(píng)論 0 1
  • Ubuntu的發(fā)音 Ubuntu绍载,源于非洲祖魯人和科薩人的語(yǔ)言诡宗,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,261評(píng)論 9 467
  • 什么樣的人才機(jī)制能吸引人?什么樣的公司能讓你不分晝夜的付出努力阳谍,什么樣的公司值得一生托付蛀柴? 從畢業(yè)到最后一次離職,...
    遇見靖雯閱讀 440評(píng)論 7 8