分类: LINUX
2011-12-29 13:47:45
这两天想要在linux下编写量比较大的代码,听说vim+cscope可以实现类似sourceinsight的功能,就花了半天时间学习cscope的使用。
1. vim的准备
首先 vim --version | grpe
cscope,看看vim是否支持cscope,如果不支持需要重新安装vim。最简单的是在./configure
后加上-enable-cscope,当然可以在Makefile文件(./src/Makefile)中修改(把原来的注释去掉),这是最根本的:
CONF_OPT_CSCOPE = --enable-cscope
然后安装:make && make install
2. cscope的准备
安装cscope(我的版本15.6),由于是非root用户,需要./configure --prefix=$HOME/local/cscope指可执行定文件和man文件的地址。
3. 生成所需的文件
前两样都具备了,现在可以在vim中用cscope来看代码了。怎么看?? 如同sourceingight一样,cscope需要一些数据文件(数据库&索引)来查找代码的相关关键字信息。
这些文件需要手工生成: 格式: cscope [options]
下面是cscope的常用选项:
现在进入代码的根目录然后:cscope -Rbq。这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
cscope缺省只解析C文件(.c和.h)、lex文件(.l)和yacc文件(.y),虽然它也可以支持C++以及Java,但它在扫描目录时会跳过C++及Java后缀的文件。如果你希望cscope解析C++或Java文件,需要把这些文件的名字和路径保存在一个名为cscope.files的文件。当cscope发现在当前目录中存在cscope.files时,就会为cscope.files中列出的所有文件生成索引数据库。
一般用如下命令生成包含cpp文件的cscope.files:
find ./ -name "*.h" -o -name "*.c" -o -name "*.cpp" > cscope.files
在cscope.files生成以后,就可以cscope -bq来得到索引(.out)文件了。
4. 在vim中使用cscope
在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。
可以看到,想查找一个关键词要输入不少命令,降低了效率,其实可以通过快捷键实现快速查找。下面是从网上找到的一个.vimrc中进行cscope选项和键盘映射的脚本段:
初次使用可能会觉得恨不适应,慢慢习惯了就好。在VIM的网站上有很多与cscope相关的插件:,还有cscope的主页: 。