最近在linux下写代码,总是要查看定义和调用关系,每次都切换到windows下用source insight实在不方便,于是试水ctags+cscope。
我只希望快速查看变量、结构的定义和函数调用关系,所以用的也简单,省略概念介绍,直接上有用的:
遵照GNU标准,
./configure make make install
三步简化 完成安装
ctags和cscope的使用分两步:
1.生成ctags和cscope数据库文件
2.使用命令进行查找和索引等功能
生成ctags数据库文件:
ctags -R
这时,在执行命令的当前目录,产生一个ctags文件,vim打开,查看内容就会明白ctags的原理
生成cscope数据库文件:
cscope -Rbq
在当前目录产生三个文件,cscope.in.out cscope.out cscope.po.out
接着需要使用他们的功能进行查找与索引
对于ctags只需记住四个快捷键足够:
:tags {ID}跳转到标签ID处
:tags显示标签栈
CTRL-]跳转到当前光标下的标签处(相当于SI中的CTRL+=)
CTRL-T跳转到标签栈中较早的标签处(相当于SI中的ALT+<)
对于cscope我也只需记住两个命令:
c: 查找调用本函数的函数
d: 查找本函数调用的函数
为使用方便,将cscope的命令在vimrc中添加如下代码:
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
使用时,按CTRL+\作为进入命令模式的前缀符,按c则查看调用本函数的函数,按d则查看本函数调用的函数。
另外,笔者是个很懒的人,一下也不愿意多敲
在bashrc中,添加命令别名,以及实现方法:
alias haha='ctags_cscope_func' ctags_cscope_func() { ctags -R cscope -Rbq }之后source ~/.bashrc
便可通过只输入一次命令haha,完成索引数据库文件的生成了