vim入门--添加cscope功能

1、cscope安装
   1. 软件下载:http://sourceforge.net/project/showfiles.php?group_id=4664
   2. 软件安装:
         1. ./configure --with-flex  (注:如果平台是Linux,最好带上 --with-flex选项)
         2. make  (注:我没有遇到错误)
         3. make install (注: 直接安装好了)

2、运行cscope

       运行cscope命令,出现两个面板,上方是一个查找结果的显示面板,下方是一个查找条件指定面板。使用TAB键在两个面板间切换,也可使用上下左右方向件和翻页键在同一面板内贴换位置。选中显示面板的某个项,回车即可进入该文件,这是调用vim打开文件,这时就可以结合ctags使用了。当然也可以直接使用vim打开文件,结合ctags阅读源码。使用前,必须现使用“cscope-indexer -r”命令递归生成索引信息文件。特殊情况下,还需要用户使用find命令,主动生成索引信息文件,并指定给cscope工具。 cscope提供了如下九种查询方式:

Find this C symbol:
#查找指定的C符号
Find this global definition:
#查找指定的全局定义
Find functions called by this function:
#查找指定函数调用的函数
Find functions calling this function:
#查找调用指定函数的函数
Find this text string:
#查找字符串
Change this text string:
#修改指定字符串
Find this egrep pattern:
#查找匹配字符
Find this file:
#查找指定文件
Find files #including this file:
#指定引用头文件进行查找
使用“CTRL +d"退出cscope!

3、应用实例:
下面以使用cscope阅读内核源代码为例:
$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.6.tar.bz2
#从Linux内核官网下载内核源代码
$ tar xvfj linux-2.6.27.6.tar.bz2
#解压文件
$ cd linux-2.6.27.6
#进入源代码根目录
$ ctags -R
#递归生成标签文件
$ cscope-indexer -r
#递归生成索引信息文件
$ cscope
#使用cscope阅读源码

标签文件、索引信息文件只需要第一次或者代码发生变动时生成,以后使用直接运行cscope即可。

首先需要为你的代码生成一个cscope数据库。生成数据库很简单,在你的项目根目录运行下面的命令:
cscope -Rbq

如果不是c代码,使用:

$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq
这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
具体的参数的含义可以通过:man cscope 得到。-R: 在生成索引文件时,搜索子目录树中的代码

-b: 只生成索引文件,不进入cscope的界面

-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

-k: 在生成索引文件时,不搜索/usr/include目录

-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件 列表。

-I dir: 在-I选项指出的目录中查找头文件

-u: 扫描所有文件,重新生成交叉索引文件


三在VIM中使用cscope
1 、用vim编辑的时候:
vim FILENAME.c
2 把生成的cscope文件导入到vim中来
:cs add /路径/cscope.out 代码所在目录
我习惯现切换到代码所在目录再操作,所以直接使用:
:cs add cscope.out 就可以了。

3 查看是否已经连接到对应数据库
:cs s


4 cs f s xxxx 查找xxxx出现的地方,它能详细列出哪些文件的哪行的哪个函数引用,以及该行的内容.
,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可 以输入一个正则表达式,这类似于egrep程序的功能。

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

g: 查找函数、宏、枚举等定义的位置。
cs f g main 光标跳到main函数的位置

d: 查找本函数调用的函数
cs f d main 列出main函数调用的函数,输入函数所对应的数字,就可以调到相应掉用的函数

c: 查找调用本函数的函数
cs f c main 会输出找到没有匹配的结果,因为没有函数调用main函数

t: 查找指定的字符串
cs f t STRING

f: 查找并打开文件

还有在.vimrc下面加上了键盘映射
map <F8> :Tlist<CR>
这样就可以使用快捷键F8直接进入tlist模式了。这里注意<F8>和 : 之间有空格的。

在.vimrc 下加入一下两行
set tags=tags;
set autochdir
这样使用tags时可以首先在当前目录下查找tags文 件,如果没有则转到父目录查找。依次向上。

4、安装cscope.vim执行脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值