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工作依赖如下配置:

  1. 安装pygments:sudo pip install pygments
  2. 为bash环境下面的gtags使用:在~/.bashrc 配置中增加
    GTAGSCONF指向的必须存在,gtags.conf在global编译完成后会在datadir目标路径下生成
 export GTAGSCONF=/home/wsk/bin/gtags/data/gtags/gtags.conf
 export GTAGSLABEL=pygments

配置是否生效可以通过gtags --explain来测试验证

  1. 为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'
posted @ 2021-12-19 22:50  whilewell  阅读(2018)  评论(0编辑  收藏  举报