Cscope 的使用

在vim中,使用Cscope来快速定位函数的定义,查找函数的原型,很方便。

在我Fedora8的机器中,已经默认安装了cscope这个程序。

刚刚使用cscope,不是很熟悉,很多“先进的”功能留待以后慢慢挖掘。 这里先写一下vim中简单的使用cscope,以便能够在源代码中:
 1. 快速切换至函数的定义。
 2. 函数的声明.
 3. 查找某个函数被使用的情况。

首先,让vim支持cscope,在~/.vimrc中加入:
"set cscopequickfix=s-,c-,d-,i-,t-,e-"

其次,要在源代码目录内生成相关的cscope的信息.
这里以libpcap代码为例
#cd /usr/code/libpcap
#cscope -Rbq

#把生成的cscope文件导入到vim中来
#:cs add /usr/code/libpcap/cscope.out /usr/code/libpcap/

下面就可以在vim中进行实际演练操作了.

1.把光标移到某个函数上,使用Ctrl+],就可以跳到函数的定义中.

2.查找某个函数的声明和定义:
  :cs find g strcpy

3.如果出现找出多个函数声明和定义的情况,可以使用quickFix窗口进行选择切换:
   :cw

另外,更多功能可以查找相关的帮助,以下转载了一些cs find的技巧. 可以用得着.

-----以下为转载的.  作者(吴垠)
--------http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
cscope的主要功能是通过同的子命令"find"来实现的
"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"
posted @ 2008-04-21 16:36  shipfi  阅读(18615)  评论(1编辑  收藏