使用GNU GLOBAL索引代码
什么是GLOBAL
GLOBAL是GNU出品的一款代码索引工具.
GLOBAL有什么优点
-
原生支持C, C++, 汇编等6种语言的代码索引, 借助插件支持的更多达25种
-
支持多种查找功能, 例如最常用的查找定义, 调用和文件位置等
-
提供gtags-cscope命令, 兼容cscope
-
相对于cscope, 查找匹配更加快速和准确
-
支持增量更新, 而且比cscope的增量更新快很多很多
-
开发活跃, 上一次发布新版本是两个月前, 而cscope的上一次是两年前
如何使用GLOBAL
简单讲, 在代码目录中执行gtags -i
建立索引数据库, 然后使用global命令查找匹配. 例如global symbol
查看symbol的定义, global -r symbol
查看symbol在哪被引用, 等等. 详见: https://www.gnu.org/software/global/globaldoc_toc.html
Vim中使用GLOBAL的小技巧
继承Vim中cscope的接口和键绑定:
:set cscopeprg=gtags-cscope
自动从当前文件夹递归向上搜索索引数据库并加载:
function! LoadDatabase()
let db = findfile("GTAGS", ".;")
if (!empty(db))
set nocscopeverbose
exe "cs add " . db
set cscopeverbose
endif
endfunction
autocmd BufEnter *.[ch] call LoadDatabase()