概述
以前一直使用的是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'