Source Insight是Windows下最方便浏览代码的工具。但是Source Insight是没有Linux版本的。为了方便在Linux下浏览代码并进行学习,可以利用Vim配合Cscope + Ctags + Taglist来打造Linux下的Source Insight。
Cscope是Vim适用的工具和插件,通过Cscope可以方便地获知某个函数的定义以及被哪些函数调用。
可以在http://cscope.sourceforge.net/下载源码包,然后解压,编译安装。
./configure make make install
使用cscope前,必须为代码生成一个cscope数据库。假设当前代码在/usr/src/linux目录下,则运行下列命令。
cd /usr/src/linux cscope –Rbq
然后会生成3个文件:cscope.in.out,cscope.out,cscope.po.out。
用vim打开代码文件,将刚才生成的cscope文件导入到vim中。
vim init/main.c :cs add /usr/src/linux/cscope.out /usr/src/linux
也可以将下面语句添加到vim的配置文件.vimrc中。
if fileradable("cscope.out") cs add csope.out elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif
Cscope的功能通过它的子命令“find”来实现。
cs find c|d|e|g|f|i|s|t name
可以在.vimrc中添加下面的快捷键,免得每次都要输入一长串命令。
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("<cword>")<CR><CR> nmap <C-@>i :cs find i ^<C-R>=expand("<cword>")<CR>$<CR> nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
使用时,将光标停留在要查找的对象上,按下<C-@>g,即先按“Ctrl+@”,然后很快再按“g”,将会查找该对象的定义。
ctags -R
Example:
su -
在/usr/include 下执行ctags -R生成一个标签文件tags
vim /etc/vim/vimrc添加 set tags=/usr/include/tags
使用vim打开源文件,把光标放在关键词上
按ctrl + ] 查找,按ctrl + t 返回。
能够列出原文件中的tag(macro、variable、function、class,etc)并跳转。由于taglist依赖于ctags,所以要先安装ctags,否则taglist装了也没法用。
1、下载taglist
从 http://www.vim.org/scripts/script.php?script_id=273 官方网站上下载taglist安装包。
2、搭建步骤
install details
2.1. Download the taglist.zip file and unzip the files to the $HOME/.vim or the
$HOME/vimfiles or the $VIM/vimfiles directory. After this step, you should
have the following two files (the directory structure should be preserved):
plugin/taglist.vim - main taglist plugin file
doc/taglist.txt - documentation (help) file
Refer to the |add-plugin|, |add-global-plugin| and |runtimepath| Vim
help pages for more details about installing Vim plugins.
2.2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or $VIM/vimfiles/doc
directory, start Vim and run the ":helptags ." command to process the
taglist help file. Without this step, you cannot jump to the taglist help
topics.
2.3. If the exuberant ctags utility is not present in your PATH, then set the
Tlist_Ctags_Cmd variable to point to the location of the exuberant ctags
utility (not to the directory) in the .vimrc file.
2.4. If you are running a terminal/console version of Vim and the terminal
doesn't support changing the window width then set the
'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file.
2.5. Restart Vim.
2.6. You can now use the ":TlistToggle" command to open/close the taglist
window. You can use the ":help taglist" command to get more information
about using the taglist plugin.
3、配置 /etc/vim/vimrc
let Tlist_Ctags_Cmd="/usr/bin/ctags"
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Left_Window=1
let Tlist_Auto_Open=1