转自:http://blog.csdn.net/b_fushuaibing/article/details/5380403
1. 创建环境
首先在目录下建立cscope索引文件
find -name '*.c' > cscope.file
cscope -Rbkq
这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
上面所用到的命令参数,含义如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
接下来,就可以在vim里读代码了。
不过在使用过程中,发现无法找到C++的类、函数定义、调用关系。仔细阅读了cscope的手册后发现,原来cscope在产生索引文件时,只搜索类型为C, lex和yacc的文件(后缀名为.c, .h, .l,.y),C++的文件根本没有生成索引。不过按照手册上的说明,cscope支持c++和Java语言的文件。
于是按照cscope手册上提供的方法,先产生一个文件列表,然后让cscope为这个列表中的每个文件都生成索引。
为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".cc"的文件,并把查找结果重定向到文件cscope.files中。
然后cscope根据cscope.files中的所有文件,生成符号索引文件。
最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。
cs help
find 的选项
0或则S:查找本符号
1或则G:查找本定义
2或则D:查找本函数调用的函数
3或则C:查找调用本函数的函数
4或则T:查找本字符串
6或则E:查找本EGREP模式
7或则F:查找本文件
8或则I:查找包含本文件的文件
为了方便地使用cscope,我们还需要下载cscope的键盘映射设置,这样就可以在gvim中简单地通过快捷键来使用 cscope,而不必敲复杂的命令了。键盘映射可以从这里下载:http://cscope.sourceforge.net/cscope_maps.vim
将下载到的 cscope_maps.vim 放在gvim的插件目录里,如 C:/Program Files/Vim/vimfiles/plugin 中。Linux用户可以放在 $HOME/.vim/plugin 中。
运行cscope命令,出现两个面板,上方是一个查找结果的显示面板,下方是一个查找条件指定面板。使用TAB键在两个面板间切换。
应用实例
下面以使用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阅读源码
http://docs.sun.com/app/docs/doc/820-1210/bjanq?l=zh&a=view