因为在阅读源码过程当中需要各种跳转以及查看各种变量的定义以及函数原型声明,所以这个时候插件的作用就体现出来了。
所以这两天学了三个插件(cscope、ctags和taglist),这里将自己的学习成果分享下,可以加深自己的印象,同时提供给有需要的人。
1、cscope:
2、Ctags1、功能:可以建立一个交叉引用文件让用户在源程序当中浏览指定到元素代码;我们可以通过变量和函数跳转到其定义处,也可以查看各函数的调用以及某个函数调用了哪些函数。
2、选项:-h:帮助;
-b(build):创建交叉引用文件;
-q:允许快速符号查找
-R:子目录也建立索引文件
3、运行(在建立了索引文件之后就可以运行,如果搜索成功):
(1)0-9a-zA-Z:编辑相应到行号
(2)tab:在菜单和匹配结果之间切换
(3)up & down:在菜单或匹配结果之间切换
(4)+/-:匹配结果翻页
(5)>/>>:将搜索结果写入或附加到文件中
(6)^e:对搜索结果一项一项进行更改(^d退出这种模式)
4、在menu中到操作
(1)^y:上一个搜索
(2)^f:下一个搜索
(3)^r:重新建立索引文件
(4)!:进入一个shell(^d 退回到cscope)
5、打开源文件之后到操作:
(1)^+]将跳到光标所在到变量或函数到定义处,^+T返回
(2):cs find s name—查找C语言符号name——函数名、宏、枚举值
:cs find g name—查找name(函数、宏、枚举)定义位置
:cs find d name—查找name函数调用到函数
:cs find c name—查找调用name函数到函数
:cs find t name—查找name字符串
:cs find f name—查找并打开文件
:cs find i name—查找包含本文件到文件
(3)^+/ 再按s表示:cs find s命令(其余到同理);(但是这要在.vimrc当中进行设置见:http://cscope.sourceforge.net/cscope_maps.vim)
说明(转自http://blog.csdn.net/longxin007/article/details/1876564):
如: nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
1、nmap 表示在vim的普通模式下,即相对于:编辑模块和可视模式,以下是几种模式
:map普通,可视模式及操作符等待模式
:vmap 可视模式
:omap 操作符等待模式
:map! 插入和命令行模式
:imap 插入模式
:cmap 命令行模式
2、<C-/>表示:Ctrl+/
3、s表示输入(即按:s)s
4、: 表示输入':'
5、“cs find s"表示输入"cs find s"也即是要输入的命令
6、<C-R>=expand("cword")总体是为了得到:光标下的变量或函数。cword 表示:cursor word, 类似的还有:cfile表示光标所在处的文件名吧
7、<CR><CR>就是回车吧,不太清楚
Ctags貌似没有cscope那么强大。其主要的功能就是定位变量和函数的定义。
1、首先需要为此文件生成标签列表:进入文件目录,执行tag -R;
a、在命令行模式下查找:进入到文件目录,执行vim -t name(函数名),这时,将打开包含name函数定义的文件;
b、打开一个.c文件,执行 :set tags=....../tags;
输入:tag name,即跳转到name函数或变量定义处;
输入:tags,可以查看以往的查看历史
c、当光标停留在某个标识符上面时,按ctrl+],既可跳转到标识符定义处;按ctrl+T即可调回
2、分割窗口
a、有时候需要在两个窗口当中查看不同的文件,这个时候就可以用分割窗口命令实现::split,分割之后我们可以在一 个窗 口当中进行tag跳转。在两个窗口进行切换到命令为ctrl+w+w
3、taglist
taglist可以将窗口分割,在左侧显示本文件各全局变量和定义的函数;
可以用ctrl+w+w在两个窗口之间进行条状,当跳转到左侧时,可以用方向案将来进行选择,选中想要查看的变量可以enter来跳转到文件中的变量定义和函数定义处。当需要退出两个窗口时,用q来退出。