之前使用定义cscope和ctags作为vim中定义、符号跳转工具,使用CtrlP进行模糊查找,工程比较小的时候使用感觉还可以,速度还可以。但是工程大了以后使用CtrlP模糊查找就非常慢了。于是有了换GNU Global的想法。
试用GNU Global后,与cscope相比,主要优点有:
- 支持POSIX正则查找tags;
- 生成tags比Ctags快很多;
- 增量更新数据库秒完。
GNU Global安装方法:
先到
GNU Global官网下载对应版本的二进制程序,以Windows下为例,将bin下的文件拷贝到gvim所在路径即可。然后安装gtags插件,如果使用Bundle管理vim插件,将gtags.vim加入_vimrc即可。
gtags.exe的作用是产生Global所需的tags,使用方法为命令行cd到代码根目录,执行gtags。执行成功后产生GPATH GRTAGS GTAGS三个文件。
在vim中使用Gtags的方法:
:Gtags func "查找func定义,按下Tab会自动补全;
:Gtags -r func "查找func的引用
:Gtags -g string "查找字符串
在上述参数中加入-a使用绝对路径,可以防止因路径改变而找不到位置。
具体键盘映射见vimrc: https://github.com/up2wing/fox-vim