2013年(50)
分类: LINUX
2013-03-29 23:53:36
原文地址:内核源码阅读vim+cscope+ctags+taglist 作者:lwp225
重新装了一下机子,以前配置好的工具现在又得重新装,好久没装过阅读内核源代码的工具了,忘的都差不多了,今天重新装,自己以前也总结过,今天贴出来和大家分享一下。
1. 首先介绍一下这些工具。
vim:linux下强大的编辑器。
ctags:生成tag文件的命令,这个是其他工具的基础。
taglist:需要ctags的支撑,直接在左边列出函数列表,全局参数列表。
cscope:比较强大,可以对函数以及部分类型定义进行跳转。其实cscope是来代替ctags的功能的。
2.安装工具。
(1)安装ctags和cscope比较简单,只要在终端下敲一下命令就ok了!
sudo apt-get install ctags
sudo apt-get install cscope
(2)taglist是vim的一个源代码浏览插件,不需要安装。只需要加入两个配置文件和在.vimrc中添加相应的配置即可。
可以到上下载taglist插件,也可以去官方网站去下载最新的插件。插件中有两个文件,
一个taglist.vim,另一个是taglist.txt。
1.3.1 将taglist.vim添加到/usr/share/vim/vim73/plugin/下。
1.3.2 将taglist.txt添加到/usr/share/vim/vim73/doc下。
1.3.3 在~/.vimrc配置文件的最后添加如下配置:
map
3.使用cscope:
(1)在你需要浏览源码的根目录下使用下面命令:$cscope -Rbkq其中:(注意:进入vim之后要先输入cs add cscope.out,才可以输入命令搜索,如果嫌麻烦的话可以直接将cs add cscope.out添加到vimrc下。以后就可以直接查找了。)
R 表示把所有子目录里的文件也建立索引
b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
k 在生成索引文件时,不搜索/usr/include目录
(2)常用的命令:
:cs find s ---- 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
:cs find g ---- 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
:cs find d ---- 查找本函数调用的函数:cs find c ---- 查找调用本函数的函数
:cs find t: ---- 查找指定的字符串
:cs find e ---- 查找egrep模式,相当于egrep功能,但查找速度快多了
:cs find f ---- 查找并打开文件,类似vim的find功能
:cs find i ---- 查找包含本文件的文件
Ctrl+]将跳到光标所在变量或函数的定义处 Ctrl+T返回
4.使用ctags:
在你需要浏览源码的根目录下使用下面命令:$cscope -R,
其中"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。然后使用vim打开一个C文件。使用F8来打开taglist的窗口,如果要想知道某个人函数或者结构体在什么地方,只要将光标移动到函数上,然后按住CTRL+]即可,看完后安CTRL+O又会回到原来的地方。在左边的tlist窗口和右边正常的编辑区切换用 ctrl+2w个,ctrl+t 返回跳转到标签的前一次位置(即上一个标签)。
5.使用taglist:
在taglist窗口中,可以使用下面的快捷键:
o 在一个新打开的窗口中显示光标下tag
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zo
- 将tag折叠起来,同zc
* 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口
6.其他的工具:
appcomplete:需要ctags的支撑,可以补全类型或者函数名。
global:和cscope,taglist功能差不多,对大型的工程用处比较大一些。