原文連結:http://blog.chinaunix.net/u/22968/showart_432334.html
- 使用Cscope
cscope的tag產生最簡單的方法是:
在你的開發工程的最上層目錄執行cscope-indexer,它會遍曆下面的所有目錄,產生兩個檔案,一個是cscope.files,這個檔案記錄需要產生tags的檔案名稱,可以手工修改,另一個是cscope格式的tags檔案cscope.out。完成後,你在產生了cscope.out的目錄開啟工程的任意檔案,就可以使用Ctrl-]跳轉尋找類型定義了。
更多內容請參考下面兩篇文章:
http://cscope.sourceforge.net/cscope_vim_tutorial.html
http://cscope.sourceforge.net/large_projects.html
2.使用taglist
taglist的功能是即時產生當前檔案的函數列表和全域變數列表,便於索引。
在vim中命令模式下使用
Tlist 開啟或者關閉當前檔案的索引;
TlistSync 立即在開啟的索引視窗中定位當前的游標所在位置屬於哪個函數或者結構定義中。
還有其他命令,請參考它的協助檔案。
ctags的使用
其實cscope是用來替代ctags功能的,ctags的應用廣泛,還有其他很多的軟體依賴它。
例如要產生cppcomplete需要的tags檔案的話,需要運行下面的命令:
代碼:
ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files
注意,我在最後使用了參數"-L cscope.files" 這僅僅是借用拉cscope產生的檔案索引來協助ctags去查詢相關工程檔案產生tags。
使用cppcomplete
cppcomplete的使用我只是簡單的發現它可以根據上述方法產生的tags檔案來自動補全類型成員。
使用很簡單,就是在你需要補全類型成員時,按F8鍵就可以拉。它一般第一次使用時,需要讓你確認是使用已有的tags檔案還是再產生一次。一般我們自己控制產生tags檔案的時機,它就使用就行拉。
但它也受到ctags的分析能力比較差的限制,可能不是每次都能幫到你。
使用global
在工程的最上層目錄執行命令:
gtags
等待它完成所有需要的global自己格式的tags的產生
產生完後,需要的就是在產生tags的目錄開啟你的工程的任意檔案,用如下命令查詢相互關聯類型引用和關聯關係:
代碼:
Gtags xxxx 尋找xxxx的定義
Gtags -r xxxx 尋找xxxx的引用
Gtags -s xxxx 尋找xxxx出現的地方
它的提示資訊很有顯,不如cscope更直觀,但對大型分析的比較完整。
有時它無法正常分析的類型 可以試試用帶-s 的參數的方式找找類型定義。再不行,我就不清楚拉