vim中使用gtags
概述
以前一直使用的是vim + cscope,偶尔看到gun global工具,觉得不错,所以顺便研究了以下。
优点:
- 可以完美替代cscope
- 速度更快,tags更小
- 使用pygments插件,解析的语言多达154种
- 可以集成到vim中
- 社区活跃度高
与其它工具特性对比:Comparison with Similar Tools · oracle/opengrok Wiki · GitHub
增加语言分析扩展:(下面配置方式不正确,会导致无法生成GTAGS,)
使用pygments来分析语言,支持的语言在gtags.conf
中有配置,约154种语言。要想pygments工作依赖如下配置:
- 安装pygments:
sudo pip install pygments
- 为bash环境下面的gtags使用:在~/.bashrc 配置中增加
GTAGSCONF指向的必须存在,gtags.conf在global编译完成后会在datadir目标路径下生成
export GTAGSCONF=/home/wsk/bin/gtags/data/gtags/gtags.conf
export GTAGSLABEL=pygments
配置是否生效可以通过gtags --explain
来测试验证
- 为vim环境下面的gtags使用:与bash环境下面的方法雷同
let $GTAGSCONF = '/home/wsk/bin/gtags/data/gtags/gtags.conf'
let $GTAGSLABEL = 'pygments'
创建标签的原理
会基于.git
, hg
, .svn
和 rootmark来设置基于哪个路径来创建标签。创建的标签目录与代码路径相对应。
let g:gen_tags#root_marker = ".repo"
: .repo
存在于项目代码根目录
wsk@wsk:~/.cache/tags_dir$ tree
.
├── homewskgtags
│ ├── GPATH
│ ├── GRTAGS
│ └── GTAGS
├── homewsktestcrepo
│ ├── GPATH
│ ├── GRTAGS
│ └── GTAGS
vim配置
个人使用的是gen_tags.vim,生成标签比较方便。
配置如下
let g:gen_tags#gtags_default_map = 1
let g:gen_tags#root_marker = ".repo"
let $GTAGSCONF = '/home/wsk/bin/gtags/data/gtags/gtags.conf'
let $GTAGSLABEL = 'pygments'
本文来自博客园,作者:whilewell,转载请注明原文链接:https://www.cnblogs.com/viiv/p/15709027.html