• 在Vim中使用gtags


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

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

  • 相关阅读:
    [翻译]跟我一起边译边学之Linux:目录
    [翻译]跟我一起边译边学之Linux:致谢 Acknowledgments
    计算机图形学资源收集01
    计算机图形学资源收集02
    计算机图形学资源收集04
    计算机图形学资源收集03
    C#二十几种设计模式事例下载(源码)
    在WinForm应用程序中嵌入WPF控件
    .net网站与Winform窗体的数据交互(JS调用Winform后台方法实现)
    C#调用rar.exe解压一个rar文件
  • 原文地址:https://www.cnblogs.com/kuang17/p/9449258.html
Copyright © 2020-2023  润新知