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'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM