之前一直使用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也有局限性,只能查找具体的文件,不能自动查找所有的子目录。

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

在Vim中使用gtags的更多相关文章

  1. Linux环境下shell和vim中乱码原因及消除办法

    shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...

  2. 再谈vim中多窗口的编辑

    参考:http://blog.csdn.net/shuangde800/article/details/11430659 很好 鼠标在各个窗口间循环移动: ctrl+w+(小写的 hjkl), &qu ...

  3. 在VIM中进行快速的查找和替换

    VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f ...

  4. vim中替换命令

    在VIM中进行文本替换:       1.  替换当前行中的内容:    :s/from/to/    (s即substitude)         :s/from/to/     :  将当前行中的 ...

  5. vim中 set 用法设置

    vi set用法from google search一.常用收集如下:(vi set)set autoindent     在插入模式下,对每行按与上行同样的标准进行缩进,与shiftwidth选项结 ...

  6. vim中输入tab符

    今天在写Makefile时各种出错.后来发现是all:的下一行,make前面必须是tab符,不能是空格. 但是vim中只要按tab就会自动转换成4个空格.平时编程需要,也不便把这个设置取消. 查了下, ...

  7. vim 中 也可以 直接安装 emmet 直接使用zen coding 生成 l指定个数的 lorem ipsum文字.

    超链接的写法: 当作为链接的文字, 比较长时, 整个作为链接 就显得不是 很适合. 可以取其中的某一个单词 作为 超链接的 关键字:如: click here to continue emmet中如何 ...

  8. vim中添加molokai.vim 配色安装

    无意中发现知乎中讨论的话题: 你认为最好看的 Vim 配色方案(color scheme)是哪款? 网友回答 排在第一位的是:molokai 啊,最经典的配色 既然molokai这么经典,当然要用了. ...

  9. 解决vi/vim中粘贴会在行首多很多缩进和空格的问题

    解决vi/vim中粘贴会在行首多很多缩进和空格的问题 secureCRT会将你原来的文本原封不动的按照字符串的样式发送给服务器.所以当你的服务器上的vim设置为autoindent的话,在i模式下,那 ...

随机推荐

  1. SQL统计信息解释

    [SQL基础]统计信息解释 在平时优化SQL的时候,最长用的就是:SET STATISTICS ON,它可以用来查看我们写的查询语句到底性能如何,不过,究竟这个性能的指标是怎么样的呢?首先需要明白的, ...

  2. vsftpd基于mysql的认证方式

    安装epel源: cd /etc/yum.repos.d wget http://mirrors.neusoft.edu.cn/epel/epel-release-latest-6.noarch.rp ...

  3. windows server 2012泛域名解析配置

    应测试要求,要将一个泛域名(*.office.baibai.com)解析到一个内网的IP(10.1.100.240)地址上(使用域控DNS解析)...以下为我的配置过程,做的时候将图顺便接了下来: 1 ...

  4. 20145103 《Java程序设计》第7周学习总结

    20145103<Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1 认识时间与日期 就目前来说,即使标注为GMT(无论是文件说明,或者是API的日期时间字 ...

  5. kafka log文件和offset原理

    log与offset 日志存储路径根据配置log.dirs ,日志文件通过 topic-partitionId分目录,再通过log.roll.hours 和log.segment.bytes来分文件, ...

  6. c# iText 生成PDF 有文字,图片,表格,文字样式,对齐方式,页眉页脚,等等等,

    #region 下载说明书PDF protected void lbtnDownPDF_Click(object sender, EventArgs e) { int pid = ConvertHel ...

  7. MySQL索引最左原则

    通过实例理解单列索引.多列索引以及最左前缀原则 实例:现在我们想查出满足以下条件的用户id: 因为我们不想扫描整表,故考虑用索引. 单列索引: ALTER TABLE people ADD INDEX ...

  8. KVM irqfd and ioeventfd

    In previous article vhost architecture we mentioned that vhost and the guest signal each other by ir ...

  9. CSS布局框架 960GS

    1.960GS 特点 小巧简单,功能单一(仅仅做排版的工作,其他东西靠自己.)(三个文件:reset.css,960.css,font.css) 界面宽960px,适合目前主流1/2以上显示器都满屏宽 ...

  10. Windows 下配置Git

    在Windows上安装git很长时间了,一直都没有配置,就是简单的使用.当然配置后就可以在任意目录下使用git命令.其实就是配置下git的环境变量. 首先,当然下载windows版本:点我下载 安装直 ...