zoukankan      html  css  js  c++  java
  • vim+cscope简易教程

    Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分。直到2000年4月,这个工具才由SCO公司以BSD license开源发行。

    Cscope的主页在http://cscope.sourceforge.net/,如果你的计算机上没有cscope,你可以在此处下载它,在写本文时,它的最新版本是15.8b。mac中可以用homebrew一键安装。

    1、cscope的用法很简单,首先需要为你的代码生成一个cscope数据库。在你的项目根目录运行:

    cscope -Rbqk

    2、这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。

    3、在缺省情况下,cscope在生成数据库后就会进入它自己的查询界面,我们一般不用这个界面,所以使用了"-b"选项。如果你已经进入了这个界面,按CTRL-D退出。

    4、Cscope在生成数据库中,在你的项目目录中未找到的头文件,会自动到/usr/include目录中查找。如果你想阻止它这样做,使用"-k"选项。

    5、-R表示索引子目录。R是递归的首字符简写。

    在vim中使用cscope:

    1、要在vim中使用cscope的功能,需要在编译vim时选择"+cscope"。vim的cscope接口先会调用cscope的命令行接口,然后分析其输出结果找到匹配处显示给用户。

    2、在vim中使用cscope非常简单,首先调用"cscope add"命令添加一个cscope数据库,然后就可以调用"cscope find"命令进行查找了。

    3、vim支持8种cscope的查询功能,如下:

    • s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
    • g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
    • d: 查找本函数调用的函数
    • c: 查找调用本函数的函数
    • t: 查找指定的字符串
    • e: 查找egrep模式,相当于egrep功能,但查找速度快多了
    • f: 查找并打开文件,类似vim的find功能
    • i: 查找包含本文件的文件

    4、 例如,我们想在vim 7.0的源代码中查找调用do_cscope()函数的函数,我们可以输入:":cs find c do_cscope",回车后发现没有找到匹配的功能,可能并没有函数调用do_cscope()。我们再输入":cs find s do_cscope",查找这个C符号出现的位置,现在vim列出了这个符号出现的所有位置。

    5、我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能,但它是在交叉索引数据库中查找,速度要快得多。

    6、vim提供了一些选项可以调整它的cscope功能:

    • cscopeprg选项用于设置cscope程序的位置。
    • cscopequickfix设定是否使用quickfix窗口来显示cscope的结果,详情请":help cscopequickfix";
    • 如果你想vim同时搜索tag文件以及cscope数据库,设置cscopetag选项;
    • cscopetagorder选项决定是先查找tag文件还是先查找cscope数据库。设置为0则先查找cscope数据库,设置为1先查找tag文件。我通常设置为1,因为在tag文件中查找到的结果,会把最佳匹配列在第一位。

    7、vim的手册中给出了使用cscope的建议方法,使用命令":help cscope-suggestions"查看。

    8、Using Cscope on large projects (example: the Linux kernel):http://cscope.sourceforge.net/large_projects.html

    9、the vim+cscope tutorial:http://cscope.sourceforge.net/cscope_vim_tutorial.html

    10、cscope提供一组命令,可以在vim里面更换链接,就是可以更换不同的cscope.out文件。

    :cs show   //显示当前连接
    :cs reset   //重新初始化连接
    :cs kill  {number|partial_name}   //终止某个连接

    11、显示一个简短的cscope语法概要。

    :cs help

    参考:https://blog.easwy.com/archives/advanced-vim-skills-cscope/

     
  • 相关阅读:
    Oracle OCP提纲
    Oracle redo 日志损坏的几种情况下的恢复
    Oracle 归档开启切换和归档日志删除(单实例和RAC)
    MySQL mysqldump备份与恢复
    Oracle 卸载
    MySQL脚本自动安装mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    Oracle session出现大量的inactive
    Oracle 备份与恢复基础
    NuGet 下载dll
    Azure Service Bus
  • 原文地址:https://www.cnblogs.com/litifeng/p/8448411.html
Copyright © 2011-2022 走看看