儘管ctags對於c語言的編寫已經幫助很大,但在分析大型程序時,使用gtags則能夠更準確的定位函數。
gtags的功能就不多說了,請參看:
http://www.gnu.org/software/global/
我用的是windows下的gvim,下面具體講一下如何在vim中運用gtags。
首先在vimrc中添加一個映射來生成gtags的文件:
map <F6> :exec "!gtags &"<cr>
下載gtags.vim插件:
http://www.vim.org/scripts/script.php?script_id=893
再對幾個常用操作作映射:
let Gtags_OpenQuickfixWindow = 0
nmap <F2> :Gtags -gi<cr>"在項目文件中搜索匹配的單詞(忽略大小寫)
nmap <A-e> :Gtags -gi<cr><cr><cr>*.[ch]<cr>"在項目文件中搜索光標所在的單詞
nmap <C-[> :Gtags<cr><cr>"跳轉到光標所在函數的定義
nmap <A-r> :Gtags -r<cr><cr>"搜索光標所在函數的引用
"不用altkeys映射到窗口列表
set winaltkeys=no
gtags的函數解析比ctags強大,但是在輸入函數名搜索函數時,gtags無法識別*並且區分大小寫,這一點沒有ctags好,而且vi裏的很多插件都是基於ctags的。
但裝了gtags後,cscope就沒多大意義了。