一、安装cscope

安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装。

  1. sudo apt-get install cscope

二、插件安装

这里选择的是Vundle来管理vim插件,所以只需要在.vimrc中添加Plugin 'brookhong/cscope.vim',然后执行:PluginInstall就搞定了。

三、生成标记库

cscope在执行过程中实际上是通过扫描标记库来首先找到标记以及标记的位置,从而实现跳转的,因此首先需要为个人的代码项目生成一个完整的标记库。

  1. binresist@binresist:~/work_space/KStoreCode/Kstore> cscope --help
  2. Usage: cscope [-bcCdehklLqRTuUvV] [-f file] [-F file] [-i file] [-I dir] [-s dir]
  3. [-p number] [-P path] [-[-] pattern] [source files]
  4.  
  5. -b Build the cross-reference only.
  6. -C Ignore letter case when searching.
  7. -c Use only ASCII characters in the cross-ref file (don't compress).
  8. -d Do not update the cross-reference.
  9. -e Suppress the <Ctrl>-e command prompt between files.
  10. -F symfile Read symbol reference lines from symfile.
  11. -f reffile Use reffile as cross-ref file name instead of cscope.out.
  12. -h This help screen.
  13. -I incdir Look in incdir for any #include files.
  14. -i namefile Browse through files listed in namefile, instead of cscope.files
  15. -k Kernel Mode - don't use /usr/include for #include files.
  16. -L Do a single search with line-oriented output.
  17. -l Line-oriented interface.
  18. -num pattern Go to input field num (counting from ) and find pattern.
  19. -P path Prepend path to relative file names in pre-built cross-ref file.
  20. -p n Display the last n file path components.
  21. -q Build an inverted index for quick symbol searching.
  22. -R Recurse directories for files.
  23. -s dir Look in dir for additional source files.
  24. -T Use only the first eight characters to match against C symbols.
  25. -U Check file time stamps.
  26. -u Unconditionally build the cross-reference file.
  27. -v Be more verbose in line mode.
  28. -V Print the version number.
  29.  
  30. Please see the manpage for more information.

参数比较多,但一般来说cscope -Rbq就够用了,R表示递归,默认cscope会进入搜索页面,b可以不进入这个页面,q会生成索引,加快查找速度。

在代码根目录下使用,建立数据库

  1. cscope -Rbq

四、在vim中添加标记库

上面执行过后会生成三个文件,cscope.out就是生成的数据库,cscope.in.out和cscope.po.out是q控制对应的索引。使用vim打开项目中某个文件,然后cscope add cscope.out就能够识别该数据库,方便后续使用。

五、vim中使用cscope查找

使用cscope find s xxx来进行cscope的使用即可。s是参数,其他参数及意义如下:

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

vim插件cscope使用方法的更多相关文章

  1. Vim插件推荐

    看下文时要知道我的<leader>键就是\. ctags C程序阅读辅助工具.在看C/C++代码的时候经常需要在文件之间跳来跳去,这是很麻烦的事,ctags就是解决这种问题的.ctags是 ...

  2. linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的

    发现一个比ack更快更好用的:  https://github.com/ggreer/the_silver_searcher   , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...

  3. VIM插件攻略

    工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.好吧,我知道这是废话...不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样 ...

  4. vim插件和配置

    vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...

  5. Linux 核心阅读工具vim+ctags+cscope+taglist

    今天.介绍vim+ctags+cscope+taglist的内核阅读配置. 当使用过之后,我相信大部分人都会舍弃之前的Eclipse(我就是活生生的一个样例).我们先来看看实现的界面是怎么样的: 我们 ...

  6. 【转载】跟我一起学习VIM - vim插件

    目录 写在前面:Life Changing Editor 什么是VIM 为什么选VIM 为什么选其它 为什么犹豫选择它们 VIM >= SUM(现代编辑器) 如何学习VIM 一秒钟变记事本 VI ...

  7. 跟我一起学习VIM - vim插件合集

    2016-06-14 15:04 13333人阅读 评论(0) 收藏 举报 分类: Linux(104)  目录(?)[+]  前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教 ...

  8. vim 插件配置博客记录

    本来打算自己写下各种经常使用vim的插件安装方法, 可是搜索了下, 发现别人都写过了, 在写一遍也没有意思, 特此记录. Vim 经常使用命令 http://blog.csdn.net/hittata ...

  9. 「个人vim插件+配置」

    2016.10.4 filetype indent on syntax on set nu ai ci si set sw= ts= set autochdir set backspace= colo ...

随机推荐

  1. IDE引入mindmap插件,在项目中添加思维导图

    1.打开IDE,file--settings--plugins,搜索IDEA Mind Map 2.点击install,进行下载,然后按照提示restart重启IDEA,安装完成 3.创建mind m ...

  2. jmeter线程组基本设置

    线程组基本设置 在线程组界面中可以设置以下数据,进行控制线程组: 1.取样器错误后要执行的动作: 继续:忽略错误,继续执行 Start Next Thread Loop: 忽略错误,线程当前循环终止, ...

  3. Go语言入门篇-项目常见用法&语法

    一.导入包用法: //_表示仅执行该包下的init函数(不需要整个包导入) import _ "git.xx.xx/baases/identity/cachain/version" ...

  4. Spring中单例模式中的饿汉和懒汉以及Spring中的多例模式

    链接:https://pan.baidu.com/s/1wgxnXnGbPdK1YaZvhO7PDQ 提取码:opjr 单例模式:每个bean定义只生成一个对象实例,每次getBean请求获得的都是此 ...

  5. Java Mail 附件名太长导致接收端附件名解析出错

    问题前提:公司需要往邮件中写 excle 文件,返送成功后发现文件格式有误(如:xxxx.bat 等文件后缀),但是有些文件又不会, 后来发现是由于文件名称太长所导致. 问题原因:java mail中 ...

  6. uboot常用命令

    一. 常用简单命令 1.1. help命令 a. 帮助查看其他命令的使用方法,类型linux下man b. 示例: help help x210 # help help help [command . ...

  7. Django之F和Q查询

    一.F查询 rom django.db.models import F from app01.models import Book Book.objects.update(price=F(" ...

  8. ACdream 1424 Diversion( 树链剖分 )

    Diversion Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit St ...

  9. 编辑SE16N表的函数

    函数:SE16N_INTERFACE 此外还可以SE16N 输入对应的查询条件后执行debug该变量 GD-SAPEDIT = ‘X’ 和GD-EDIT = ‘X’ 来实现当前SE16N 中该表的编辑

  10. 第七讲 自定义Realm实现授权

    1.仅仅通过配置文件来指定权限不够灵活,并且不方便,在实际的应用中大多数情况下都是将用户信息,角色信息,权限信息保存到了数据库中.所以需要从数据库中去获取相关的数据信息.可以使用shiro提供的Jdb ...