开门见山,本人的环境是ubuntu14.04。计划用ctags和cscope两款工具打造简单的IDE
1. ctags,taglist的安装使用
下面的地址可以找到适合自己的ctags安装版本,我安装的是ctags-5.8
http://ctags.sourceforge.net
解压缩ctags-5.8.tar.gz : $tar -xzf ctags-5.8.tar.gz
$cd ctags-5.8
用vi打开INSTALL,上面有详细的安装说明,根据说明敲以下命令
$./configure //为你的系统配置package
$make //编译这些package
$sudo make install //开始安装ctags程序
$make clean //去除安装过程中产生的*.o文件
到源码存放的目录的上层目录执行 $ctags -R命令,如我的执行目录为/wrk/prog/,源码存放于/wrk/prog/src/下。则在/wrk/prog目录下可以看到生成一个tags文件。
安装并编译完tags文件后,还需在.vimrc中写入以下设置
set tags=/wrk/prog/tags
或者打开的vim文件中输入
:set tags=/wrk/prog/tags
此时你就可以在vim文件中使用下面的命令来查看代码了
Ctrl + ] //寻找定义的地方
Ctrl + t 或者 Ctrl + o //返回上一级
但是还可以更进一步,即让vim中显示当前程序的相关信息,那么你就需要安装一个vim插件taglist
在下面的地址中搜taglist关键字,会找到taglist.vim的一个script类型,
http://vim.sourceforge.net/search.php
taglist.vim中可以找到很多版本,我安装了当时最新的一个版本taglist_46.zip。下面是下aglist_46.zip载地址
vim.sourceforge.net/scripts/download_script.php?src_id=19574
解压:$unzip taglist_46.zip
解压之后要把taglist插件安装到vim中:
$sudo cp doc/taglist.txt /usr/share/vim/vim74/doc/
$sudo cp plugin/taglist.vim /usr/share/vim/vim74/plugin/
在打开的程序文件中输入:Tlist。此时VIM就会像sourceinsight一样左边打开一个窗口,显示当前程序的相关信息
2. cscope的安装和使用
如果我们不仅想找到定义的位置,同时还想知道在程序中哪些地方用了该函数,哪些地方对这个变量进行了赋值等等。那么我们就需要安装另外一个工具cscope。
下载并安装:
$sudo apt-get install cscope
如果你是在http://cscope.sourceforge.net/下载,那么就要执行如下几步进行安装
$./configure //为你的系统配置package
$make //编译这些package
$sudo make install //开始安装程序
到原始代码的上一层目录,输入生成cscope数据库命令:$cscope -Rbq
会生成3个cscope相关文件:cscope.in.out,cscope.po.out,cscope.out
下面就要把刚刚生成的cscope.out加入到vim中,把下面的命令写入vimrc中
cs add /wrk/prog/cscope.out /wrk/prog/
或者当你打开vim文件时输入这行命令
:cs add /wrk/prog/cscope.out /wrk/prog/
这样就可以使用cscope了,下面介绍cscope的一些快捷键。我这里喜欢用Ctrl + x作为起始组合键,当然你也可以换成其他的组合键,只要不与其他的组合键冲突就好
nmap <C-x>s :cs find s <C-R>=expand("<cword>")<CR><CR> "Find this C symbol
nmap <C-x>g :cs find g <C-R>=expand("<cword>")<CR><CR> "Find this definition
nmap <C-x>c :cs find c <C-R>=expand("<cword>")<CR><CR> "Find functions calling this function
nmap <C-x>t :cs find t <C-R>=expand("<cword>")<CR><CR> "Find this text string
nmap <C-x>e :cs find e <C-R>=expand("<cword>")<CR><CR> "Find this egrep pattern
nmap <C-x>f :cs find f <C-R>=expand("<cfile>")<CR><CR> "Find this file
nmap <C-x>i :cs find i <C-R>=expand("<cfile>")<CR><CR> "Find files #including this file
nmap <C-x>d :cs find d <C-R>=expand("<cword>")<CR><CR> "Find functions called by this function
当然你也可以在下面的地址下载cscope_map.vim,里面有详细的快捷键设置。
http://cscope.sourceforge.net/cscope_maps.vim