vim + ctags + cscope + taglist
来源:互联网 发布:淘宝手机详情怎么设置 编辑:程序博客网 时间:2024/05/18 02:41
1. ctags 和 cscope
ctags下载地址:http://ctags.sourceforge.net
下载完成之后,解压,然后执行configure脚本生成Makefile文件,然后make,然后执行sudo make install来安装ctags。
cscope官网地址:http://cscope.sourceforge.net,可以在官网找到下载链接。然后解压,同ctags一样,先执行configure脚本,然后make,然后执行sudo make install来安装。
OK,ctags和cscope安装完成了,就可以在Linux下方便阅读内核源代码了,从此就可以丢掉烦人的sourceinsight了。
首先是ctags,常用的命令是ctags -R *,-R表示递归搜索,生成完成之后,将在当前目录下生成tags文件。那接下来看看如果使用ctags。
1) 查找一个函数名或者变量名,在shell下执行vim -t tag_name。
2) 在一个tag处往下查找所定义处,在tag处执行命令'ctrl + ]',往回查找使用命令'ctrl + T'。
3) 直接查找一个tag,使用命令'ta tag_name'。
OK,我们已经知道大概的ctags用法了。
那再来看cscope用法了,cscope同ctags类似,但比ctags更强大。
同ctags一样,首先需要使用cscope -R -b -q命令来生成cscope数据库,这条命令执行之后,将会在当前目录下生成3个文件,cscope.out、cscope.in.out和cscope.po.out,其中cscope.out是最基本的符号索引,后面两个.out文件是使用'-q'选项生成的,可以加快cscope的索引速度。在默认情况下,cscope生成数据库之后会进入一个查询界面,一般这个界面都是不需要的,所以使用了'-b'选项,如果已经进入了这个界面,可以使用'ctrl+d'来退出。
'-R'选项表示递归搜索。在使用cscope时,如果在项目目录中未找到头文件,会自动到/usr/include/目录中查找,如果不想这样做,可以使用'-k'选项。
cscope默认只解析.c、.h、.l、.y文件,默认是忽略c++和java文件的,虽然cscope是支持的。如果希望解析c++、java文件,需要把这些文件的名字和路径保存在一个cscope.files的文件中,当cscope发现在当前目录中存在cscope.files文件时,就会把cscope.files中列出的文件生成索引数据库,通常使用find命令来生成cscope.files文件,例如:
要在vim中使用cscope,首先使用vim打开一个文件,然后在vim中输入下面的命令:
那来说明一下这几个选项的意思。
注意cscope与ctags结合一起使用,效果更好。
当然,这样敲不停的敲命令是很麻烦的,好在,cscope提供了快捷键,需要在.vimrc中映射一下,例如(来自cscope_maps.vim):
说明一下,我要使用cs find s命令,需要按下'ctrl+\',然后再迅速的按下's'键,后面的cword即表示当前光标的所处位置。好在cscope可以设置超时,例如:
我们每次打开vim时都需要手动输入cs add命令添加一个数据库,很麻烦的,可以在vim中配置一下,打开vim时自动加入,例如:
要使用taglist插件需要一定条件的,在taglist官网上说了:
vim taglist插件可以从这里下载:http://vim-taglist.sourceforge.net。下载的taglist是一个.zip文件,解压完成之后我们把其中的plugin、doc这两个目录拷贝到~/.vim目录下去,这两个目录中的内容如下:
要在vim中使用taglist,首先需要配置一下~/.vimrc文件,里面内容稍许有点多,大家可以参考taglist的帮助文件。例如:
例如:
最后如果要手动打开、关闭taglist可以在vim中输入命令'TlistOpen'、'TlistClose',或者输入命令'q'来退出taglist。
ctags下载地址:http://ctags.sourceforge.net
下载完成之后,解压,然后执行configure脚本生成Makefile文件,然后make,然后执行sudo make install来安装ctags。
cscope官网地址:http://cscope.sourceforge.net,可以在官网找到下载链接。然后解压,同ctags一样,先执行configure脚本,然后make,然后执行sudo make install来安装。
OK,ctags和cscope安装完成了,就可以在Linux下方便阅读内核源代码了,从此就可以丢掉烦人的sourceinsight了。
首先是ctags,常用的命令是ctags -R *,-R表示递归搜索,生成完成之后,将在当前目录下生成tags文件。那接下来看看如果使用ctags。
1) 查找一个函数名或者变量名,在shell下执行vim -t tag_name。
2) 在一个tag处往下查找所定义处,在tag处执行命令'ctrl + ]',往回查找使用命令'ctrl + T'。
3) 直接查找一个tag,使用命令'ta tag_name'。
OK,我们已经知道大概的ctags用法了。
那再来看cscope用法了,cscope同ctags类似,但比ctags更强大。
同ctags一样,首先需要使用cscope -R -b -q命令来生成cscope数据库,这条命令执行之后,将会在当前目录下生成3个文件,cscope.out、cscope.in.out和cscope.po.out,其中cscope.out是最基本的符号索引,后面两个.out文件是使用'-q'选项生成的,可以加快cscope的索引速度。在默认情况下,cscope生成数据库之后会进入一个查询界面,一般这个界面都是不需要的,所以使用了'-b'选项,如果已经进入了这个界面,可以使用'ctrl+d'来退出。
'-R'选项表示递归搜索。在使用cscope时,如果在项目目录中未找到头文件,会自动到/usr/include/目录中查找,如果不想这样做,可以使用'-k'选项。
cscope默认只解析.c、.h、.l、.y文件,默认是忽略c++和java文件的,虽然cscope是支持的。如果希望解析c++、java文件,需要把这些文件的名字和路径保存在一个cscope.files的文件中,当cscope发现在当前目录中存在cscope.files文件时,就会把cscope.files中列出的文件生成索引数据库,通常使用find命令来生成cscope.files文件,例如:
find . -type f > cscope.files这条命令会将当前目录下的所有文件都加入到cscope.files文件中(包括子目录下的文件),在使用cscope命令时可以省略掉'-R'选项,因为在cscope.files文件中已经包含了子目录中的文件。、
要在vim中使用cscope,首先使用vim打开一个文件,然后在vim中输入下面的命令:
:cs add cscope.out即使用cs add命令为vim添加一个数据库,然后就可以使用cs find命令来进行查找了,首先我们输入cs help命令来查看一下帮助:
cscope commands:add : Add a new database (Usage: add file|dir [pre-path] [flags])find : Query for a pattern (Usage: find c|d|e|f|g|i|s|t name) c: Find functions calling this function d: Find functions called by this function e: Find this egrep pattern f: Find this file g: Find this definition i: Find files #including this file s: Find this C symbol t: Find this text stringhelp : Show this message (Usage: help)kill : Kill a connection (Usage: kill #)reset: Reinit all connections (Usage: reset)show : Show connections (Usage: show)
那来说明一下这几个选项的意思。
c:查找调用该函数的函数。d:查找该函数调用的函数。e:类似于egrep。f:查找一个文件,相当于find命令。g:查找函数、宏,枚举等定义的地方。i:查找include本文件的文件。s:查找一个c语言符号。t:查找字符串。
注意cscope与ctags结合一起使用,效果更好。
当然,这样敲不停的敲命令是很麻烦的,好在,cscope提供了快捷键,需要在.vimrc中映射一下,例如(来自cscope_maps.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>
说明一下,我要使用cs find s命令,需要按下'ctrl+\',然后再迅速的按下's'键,后面的cword即表示当前光标的所处位置。好在cscope可以设置超时,例如:
set timeoutlen=4000即设置有效时间为4s,默认只有1s。
我们每次打开vim时都需要手动输入cs add命令添加一个数据库,很麻烦的,可以在vim中配置一下,打开vim时自动加入,例如:
" add any cscope database in current directoryif filereadable("cscope.out") cs add cscope.out " else add the database pointed to by environment variable elseif $CSCOPE_DB != "" cs add $CSCOPE_DBendif
要使用taglist插件需要一定条件的,在taglist官网上说了:
* vim 6.0版本或以上。* ctags 5.0版本或以上。* 另外还需要在.vimrc中加入下面的内容:filetype on
vim taglist插件可以从这里下载:http://vim-taglist.sourceforge.net。下载的taglist是一个.zip文件,解压完成之后我们把其中的plugin、doc这两个目录拷贝到~/.vim目录下去,这两个目录中的内容如下:
├── doc│ └── taglist.txt└── plugin └── taglist.vim
要在vim中使用taglist,首先需要配置一下~/.vimrc文件,里面内容稍许有点多,大家可以参考taglist的帮助文件。例如:
Tlist_Ctags_Cmd:指定ctags的安装路径,如果已经在PATH环境变量中的话,该选项是可选的。Tlist_Use_Right_Window:在右侧窗口显示,默认在窗口左侧显示。Tlist_Auto_Open:在打开vim时自动打开taglist。Tlist_Exit_OnlyWindow:如果vim窗口中最后只有taglist时自动退出vim。
例如:
let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'let Tlist_Use_Right_Window = 1let Tlist_Auto_Open = 1let Tlist_Exit_OnlyWindow = 1
最后如果要手动打开、关闭taglist可以在vim中输入命令'TlistOpen'、'TlistClose',或者输入命令'q'来退出taglist。
注:taglist中窗口之间切换使用ctrl + ww命令。
0 0
- vim+ctags+taglist+cscope
- vim + ctags + cscope+taglist
- vim+ctags+cscope+taglist
- vim+Taglist+cscope+ctags
- vim+ctags+taglist+cscope
- vim + cscope + ctags + taglist
- vim + ctags + cscope + taglist
- vim cscope+ctags+taglist
- vim + ctags + taglist + cscope + cppcomplete
- ubuntu vim+ctags+taglist+cscope
- vim+ctags+cscope+taglist+nerdtree
- Vim配置 Vim+Ctags+Taglist+cscope
- vim+ctags+taglist+cscope+cppcomplete+global
- vim+ctags+taglist+cscope+cppcomplete+global
- vim + ctags + taglist + cscope + cppcomplete + global
- vim+ctags+taglist+cscope+cppcomplete+global
- vim + ctags + taglist + cscope 阅读代码
- ctags+taglist+cscope+VIM for C development
- hostapd 调试信息
- 为何响应时间常被测错
- 《剑指Offer》学习笔记--面试题20:顺时针打印矩阵
- 关于android手机mtk平台 信号格数的修改
- 【tcp-ip学习总结】基于udp的多人聊天室,带有登录注册功能
- vim + ctags + cscope + taglist
- 关于cocos2d-x项目导入到eclipse中clean项目时产生的错误
- exe4j安装过程详解
- 11-vmware中安装vm-tools的方法
- NodeJS异常处理uncaughtException篇
- _C_#ifdef
- window7+vs2013+DirectShow(windows sdk v7.1)配置
- 水过一道并查集 hdu1232
- spring面试题