尽管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就没多大意义了。