使用Vim打造IDE--Cscope

原文:

http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx

偶的贡献是整理成符合自己格式的~

 

可以使用Cscope完成如下功能:

 

查看一个函数在哪里被调用

查看变量在哪里被使用

查看一个函数调用了哪些函数

检查改动,例如增加一个枚举,会产生什么影响

检查所有的地方都进行了相应修改,例如给一个函数增加参数

在所有文件中对一个全局变量进行改名

源文件在目录中的位置

哪些文件包含这个头文件

 

Cscope地址:

http://cscope.sourceforge.net

 

解压后编译安装:

# ./configure
# make
# make install     

 

 

 

之后,在~/vimrc中增加如下一行:

 

:set cscopequickfix=s-,c-,d-,i-,t-,e-

 

这个用以设定是否使用quickfix 窗口来显示cscope的结果,quickfix请参看另一篇文章。


与Ctags类似,要使用Cscope必须先为源代码生成一个cscope数据库,。

在项目的根目录运行下面的命令:

# cd /home/zebra/myprogram/src
# cscope -Rbq
# 这样会生成三个文件
# 打开文件, 开始Coding
# cd src
# vi mymain.c

 

进入vim后需要把生成的cscope文件导入到vim中来,用下面的命令:

 

:cs add /home/zebra/myprogram/src/cscope.out  /home/zebra/myprogram/src

 

必须把两级中的cscope文件都加入。因为源码是多级目录的,仅仅具有前一个,cscope无法在子目录的源码中正确工作。

当然,如果你的源码都在同一级目录中就没关系了。

 

如果经常用cscope,可以把上述加入到~/.vimrc。

 

 

其一般使用如下:

 

:cs find g mymain 查看跳转到定义处

 

:cs find g mymain 查看引用情况,按下回车则调转到第一个引用处。

 

如果对跳转结果不满意,使用:

 

:cw  打开quickfix窗口进行挑选。

 

 

cscope的主要功能是通过子命令"find"实现。

 

 cs find c|d|e|f|g|i|s|t name

0 或 s查找本 C 符号(可以跳过注释)
1 或 g查找本定义
2 或 d查找本函数调用的函数
3 或 c查找调用本函数的函数
4 或 t查找本字符串
6 或 e查找本 egrep 模式
7 或 f查找本文件
8 或 i查找包含本文件的文件

 

 

查找都要输入长串命令的话非常不方便,Cscope的帮助手册中推荐了一些快捷键的用法。

 

下面是其中一组,也是常用的。

 

将下面的内容添加到~/.vimrc中, 并重启vim即可:


nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>

 

这样,当光标停在某个你要查找的词时, 按下<C-_>g,就会跳转到该对象的定义。其它的类似。


按这种组合键有一点技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪就回到nomal状态,可以如下解决:
<C-_>g的按法是先按"Ctrl+Shift+-", 然后很快再按"g"。

 

 

使用reset重新初始化所有连接 ,用法:

 

cs reset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值