cscope 使用

来源:互联网 发布:caxa编程 编辑:程序博客网 时间:2024/06/11 06:23

这是【用Vim打造IDE】系列的第四篇,介绍在程序中快速查找,定位的功能。

一、【用Vim打造IDE】之VIM的基本设置
二、【用Vim打造IDE】之切换工作目录
三、【用Vim打造IDE】之Ctags插件
四、【用Vim打造IDE】之cscope使用

个人觉得cscope插件是所有vim插件中最强大的一个,使用它给我带来的方便,快捷以及灵活性,使我的日常软件开发效率和读代码的效率提高了许多。在给它投票时,我投了Life Change,是的,它改变了我的生活。

Cscope最先由MIT的研究人员开发,也算是系出名门。它能够完成什么样的功能呢?我先简单的列举几条:
1、在函数调用点快速跳转到函数定义处,反之亦然。如果有多个调用点,会以列表形式给出。
2、在函数声明处快速跳转到函数定义处,反之亦然。
3、快速查找全工程里出现光标所在处的单词的地方。
4、查找本函数调用的函数。
5、查找本函数被调用的地方。
这些只是cscope功能的一小部分,如果细心挖掘,你会发现它给你平时开发带来的便利简直是太大了。总是,我是爱上它了。

一、下载安装:
你可以在cscope的主页http://cscope.sourceforge.net/上下载得到最新的版本。Windows下,将cscope.vim放到“你的VIM安装目录/vim72/plugins/”里;cscope.exe放到系统盘的system32目录下,省去你修改环境变量的麻烦。Linux下就下载源代码自己编译吧,但cscope.vim还是要放到/uses/share/vim70/plugins/下,我的Redhat是这个路径,你的可能不一样。但是注意,我的系统默认是安装了cscope的,说不定你的也是。验证方法就是:启动vim,在命令行输入:cs show。如果显示”no cscope connection”,说明已经安装了,那你可以略过这一步。

二、配置
想要它为你好好工作,符合你的使用习惯,我们还得对它进行一番调教。

1、首先,我们要做的是生成cscope文件。
Windows和Linux下都一样,首先定位到你的源代码所在的目录。如果你的源文件里只有.c和.h文件,那么运行下面的命令。

?View Code SHELL
1
cscope -Rbq

就会生成cscope.out文件。

如果有.cpp的源文件,请参照下面的步骤。Windows在本文下面下载find.exe程序,暂时替代系统自带的find.exe程序。在源代码目录下运行如下的命令:

?View Code SHELL
1
find ./ -name "*.c" -o -name "*.cpp" -o -name "*.h" >cscope.files

生成cscope.files后再运行命令:

?View Code SHELL
1
cscope -bq

就会生成三个文件,cscope.out以外的其他两个是加快索引的。
2、在vimrc里配置cscope的使用
首先,打开vimrc文件,这是vim的配置文件。不明白的请参见本系列的前面几篇文章。

在vimrc文件里添加如下的语句:

?View Code SHELL
123
"cscope设置set cscopequickfix=s-,c-,d-,i-,t-,e-cs a D:/minixsource/cscope.out D:/minixsource

当然,你得把路径改成你自己的源代码路径。好了,在命令行里输入:

?View Code SHELL
1
:cs f g boot

就可以查看boot()这个函数的定义了。再输入:

?View Code SHELL
1
:cs f c boot

就可以查看boot()函数被调用的地方了。是不是很方便呢?但是你可以更方便的进行查找,利用快捷键!要使用快捷键,我们还要对它进行配置。在vimrc文件里再添加如下的语句:

?View Code SHELL
12345678
nmap s :cs find s =expand("") :cw    "查找声明nmap g :cs find g =expand("") :cw     "查找定义nmap c :cs find c =expand("") :cw    "查找调用nmap t :cs find t =expand("") :cw    "查找指定的字符串nmap e :cs find e =expand("") :cw    "查找egrep模式,相当于egrep功能,但查找速度快多了nmap f :cs find f =expand("") :cw    "查找文件nmap i :cs find i ^=expand("")$ :cw   "查找包含本文件的文件nmap d :cs find d =expand("")  :cw   "查找本函数调用的函数

使用上面的快捷键的方法是,将光标定位到你要查找的变量,函数名或者宏定义名处。先按下Ctrl+/,松开后快速按下相应的键,比如按下g,表示查找该函数或者变量的定义;按下c表示查找本函数被调用的地方。功能很强大。

原创粉丝点击