之前一直使用vim+ctags+cscope来弄c的代码,最近看同事使用gtags,觉得在搜索方面要高级很多,网上大多都是emacs+gtags的资料,而vim的则比较少,这里搞通了之后,做个记录。

1.下载、安装 global

wget http://tamacom.com/global/global-6.6.2.tar.gz

tar xzvf global-6.6.2.tar.gz

cd global-6.6.2

./configure

make && make install

2.将生成的文件拷贝到.vim对应的目录

cp gtags-cscope.vim  gtags.vim ~/.vim/plugin/

(我没有使用vbundle安装插件,因此直接拷贝到了plugin目录)

3.在代码的根目录中执行

cd ~/postgresql-10.1

gtags

会生成几个文件:GPATH  GRTAGS  GTAGS

4.在.vimrc中添加gtags配置

set cscopetag " 使用 cscope 作为 tags 命令
set cscopeprg='gtags-cscope' " 使用 gtags-cscope 代替 cscope "gtags.vim 设置项
let GtagsCscope_Auto_Load = 1
let CtagsCscope_Auto_Map = 1
let GtagsCscope_Quiet = 1

(即使添加这些,我的cscope和ctags还是照样可以使用)

5.打开代码,可以使用了,但是效果和emacs还是有点不一样:

1)在根目录中,可以查找某个函数,然后打开文件

root@seg01 postgresql-10.1]# global -x pg_parse_query
pg_parse_query 596 src/backend/tcop/postgres.c pg_parse_query(const char *query_string)

2)打开文件

[root@seg01 postgresql-10.1]# vim src/backend/tcop/postgres.c

3)使用Gtags查找:Gtags pg_parse_query(这里会自动补全,使用tab键)

结果显示在quickfix中,多条结果可以用鼠标来点击,或者cn下一条,cp上一条来选择

6.其他几个使用说明

01.Gtags func:查看定义处
02.Gtags -r func:查看引用处
03.Gtags -s text:查看未被数据库定义的tags
04.copen:打开quick fix显示窗口
05.cclose:关闭quick fix显示窗口
06.cn:下一项
07.cp:上一项
08.cl:列出查询到的相关项
09.ccN:到列表中第N个符号处
10.Gtags -g pattern:搜索pattern指定的字符串
11.Gtags -gie -pattern:-e选项可以用于搜索’-‘字符,但是基础搜索,没有元字符,-i选项忽略大小写,类似于grep的选项
12.GtagsCuorsor:取决于光标位置,要是在定义处,查询其引用,要是在引用处,跳转至其定义处,否则就是Gtags -s命令
13.Gtags -P text:查询包含text的路径名,Gtags -P后接/dir/为列出叫做dir目录下文件,后接\.h$列出所有的include文件
14.Gtags -f file:列出file里的符号,Gtags -f %则列出当前文件的符号

7.在之前ctags+cscope中,查找定义和查找使用都很方便,但是有时候是找不到目标的···

有一种情况最不好找了,一个函数记得一部分名称,没法搜索到,但是用gtags后就好搜索了,会自动补全。

8.cscope中常用的几个命令:

cs find s : 查找符号,会显示列表出来

cs find g :查找定义

cs find c: 查找调用本函数的函数

cs find c: 查找本函数调用的函数

cs find t:查找本字符串

9.使用vimgrep也有局限性,只能查找具体的文件,不能自动查找所有的子目录。

配好之后感觉还是很爽的,这样查找起来方便很多。

最新文章

  1. win10平台mysql5.6.34免安装版(绿色版zip)的配置以及密码和编码设置
  2. qt_文本编辑器实现_附带详细注释和源码下载
  3. cellspacing,cellpadding什么区别
  4. 如何修改 EM12c 中 SYSMAN 用户的密码?
  5. 操作haproxy配置文件教师版
  6. Maximum Gap
  7. Java反射和动态代理
  8. CentOS 7 安装教程
  9. 【NLP】Conditional Language Models
  10. VS2017 带参数启动调式程序
  11. MySQL 索引建立原则及注意事项
  12. kubernetes 的pod控制器
  13. Proguard使用最新,最全教程,亲自试验
  14. awbeci网站之技术篇
  15. pycharm破解补丁的使用
  16. 解决 在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”
  17. js事件、事件委托
  18. Eclipse中设置背景颜色与字体大小和xml文件中字体大小调整
  19. JavaScript转换与解析JSON的方法
  20. #!/bin/sh简介

热门文章

  1. 【C#】枚举和字符串以及数字之间的互相转换
  2. spring数据源、数据库连接池
  3. (转)国内yum源的安装(163,阿里云,epel)
  4. 20145303 《Java程序设计》第5周学习总结
  5. 《Java程序设计》实验4
  6. mysql数据库无法连接(JDBC)java.net.ConnectException: Connection timed out
  7. bat(续七)-for语句(循环结构)
  8. Commons Configuration之二基本特性和AbstractConfiguration
  9. Python学习札记(三) I/O
  10. mac 下如何建立vue-cli项目