1、ctag linux
固然,第一步就是要下載它!一條命令搞定:vim
$sudo apt-get install ctags函數
若是不幸提示找不到軟件包ctags,首先你也許應該update一下你的軟件源,還不行的話試試把ctags改爲 exuberant-ctagsspa
下載完了你就能夠用它來產生咱們的標籤文件tags 了,tags文件是實現跳轉功能的英雄,就是它把咱們送到咱們想要去的地方的——好比我在個人程序裏寫了一個庫函數foo,在某個時刻我想查看這個庫函數自己是怎麼實現的?那我只需把光標停在關鍵詞上,再按一下組合鍵 ( ctrl + ] ) 就會馬上幫我跳轉到庫函數foo的源代碼的地方,按一下組合鍵 ( ctrl + o ) 就能夠跳回來!很厲害吧?固然若是foo是庫函數對一個系統調用的封裝,你就能夠順着tags 給咱們提供的道路跳到內核去查看源代碼是怎麼寫的,固然這期間可能會有不止簡單的兩層封裝定義,但咱們一次次跳轉就能夠深刻其裏,瞭解內幕!哈哈!怎麼作?全程僅需兩步,follow me!.net
第一步 ,在咱們的跳轉目的地 執行這條命令:插件
$ctags -Rblog
好比我想要個人程序能隨時去庫函數 裏查詢原型,那我就能夠在庫函數源代碼的頂層目錄~/downloads/glibc-2.9下執行上面那條命令:遞歸
~$cd ~/downloads/glibc-2.9get
~/downloads/glibc-2.9$ctags -R原型
命令中的選項-R 的意思是:遞歸地進入當前目錄下的全部子目錄,把在該目錄下的全部文件的關鍵詞(包括函數名、宏、文件名等等關聯到一塊兒,而且寫入一個tags文件)。固然,你若是想讓你的函數能夠跳轉到內核,那麼你應該在內核源代碼的頂層目錄下執行這條命令。
第二步 ,在/etc/vim/vimrc文件中,添加一句話(權且把他們稱爲au指令吧,由於它以au開頭,注意大小寫),寫上咱們程序的所在地 。例如我在完成了第一步後,在我機器的vimrc中添加的內容以下:
au BufEnter /home/seton/programs /* setlocal tags+=/home/seton/downloads/ glibc-2.9/tags
固然,你要把上面灰色底色標註出來的路徑換成你本身機器上的具體路徑。其中/home/seton/programs/*的意思是:在該路徑下的所 有文件(由於用了通配符*)均可以經過tags文件實現跳轉(包括其子目錄),而這個tags文件,就是由後面這個路徑/home/seton /downloads/glibc-2.9/tags指定。帥!也許你會問,那我就乾脆寫成 /* 就行啦,那麼系統中的任何一個文件我均可以跟gilbc-2.9關聯,實現跳轉,固然你能夠這麼作,但有時候你並不須要這麼作。
這就搞定了,你如今就能夠斟杯卡布奇諾享受自由跳轉的樂趣了,但咱們能夠加更多的東西,好比把內核源代碼也添加進來,必要時咱們就跳到內核中去瞧 瞧,怎麼實現,如法炮製,先在內核源代碼頂層目錄執行指令ctags -R,而後在/etc/vim/vimrc文件中再添加一句話便可,固然添加時要把tags所在的路徑替換成內核源代碼的路徑。例如,變成這樣:
au BufEnter /home/seton/programs /* setlocal tags+=/home/seton/downloads/ glibc-2.9/tags
au BufEnter /home/seton/kernel_programs /* setlocal tags+=/home/seton/downloads/ linux-2.6.31/tags
固然你還須要一個很是重要的vim命令ts ,由於你要跳轉的關鍵詞可能出如今庫函數中,也可能出如今內核源碼中,也可能同時都有對此關鍵字的定義,這時候你就要在vim命令模式下敲入:ts 來羅列出全部出現該聲明關鍵詞的地方(顯然你應該先把光標停在你想要跳轉的關鍵詞上面),而後按相應的序號在進行跳轉。羅列的次序跟你在vimrc中寫au指令的順序相關,誰寫在上面就先羅列誰。
2、Taglist
Taglist是vim的一個插件,能夠方便地在終端側邊顯示出當前程序全部的函數、宏等信息,支持鼠標雙擊跳轉,對於規模比較大的代碼而言,這是一個很是實用功能。
Taglist的使用很是簡單,只需在網上下載一個配置文件便可,能夠用下面這個連接下載:
http://download.csdn.net/source/249784
下載完了解壓,將會蹦出倆文件夾(doc和plugin),而後就瀟灑地把這兩個文件夾扔到主目錄下的隱藏文件夾.vim吧!(沒有這個隱藏文件夾的話就mkdir一個)。搞定以後,用vim打開你的程序源碼,敲下命令:Tlist 打開列表,再輸入一次關閉列表。試試看看效果吧。
原文出處:http://blog.csdn.net/seton040/article/details/4718615