ctags查看内核源码
先说说ctags吧!其实它只是用来生成一个tags文件,也就是把源代码中的对象找到、并记录下来,放到tags文件里。其他的工作就交给VIM来完成了。
“tags” 文件中包括这些对象的列表:① 用#define定义的宏② 枚举型变量的值③ 函数的定义、原型和声明④名字空间(namespace)⑤ 类型定义(typedefs)⑥变量(包括定义和声明)⑦ 类(class)、结构(struct)、枚举类型(enum)和联合(union)类、结构和联合中成员变量或函数
下面开始如何用VIM+ctags查看源码:
首先,要安装ctags。
wuting@wuting-desktop:~$ sudo apt-get install ctags
然后,进入到源码目录下:使用ctags -R命令生成tags文件。(参数-R表示,将该目录下所有的文件都包含在内)
/*
wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ sudo tags -R
也可以使用make tags命令,该命令只是将你选用的体系结构的文件包含到tags文件中。tags -R是将所有的体系结构都包含在内。
wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ sudo make tags
这里可能需要一些时间,耐心等待,毕竟内核文件还是比较大的。
*/
接下来,就可以使用命令查找你需要的函数或结构体之类的啦!一些常用的查找方法如下:
1) 用命令行。在运行vim的时候加上"-t"参数,(这里一定要与生成tags文件时在同一目录下才可以)例如:
# vim -t foo_bar
这个命令将打开定义"foo_bar"(变量或函数或其它)的文件,并把光标定位到这一行。
2) 在vim已打开的任意一个文件中,使vim处于命令模式下,使用":tag"命令,例如:
:tagfoo_bar
如果要查找的是结构体的定义可以使用ts命令,同样是在命令行模式下,输入:ts XX(要找的结构体)
这时vim会为你展现出许多个,用空格进行翻页,记下你要找的一个对应的数字,一直按空格键,直到提示你输入数字。输入对应的数字,回车就会跳转到你要查找的结构体定义处。
3) 最方便的方法是把光标移到变量名或函数名上,然后按下" Ctrl-]";用"Ctrl-o"退回原来的地方。用 Ctrl-]延着调用树向前跳转, 用Ctrl-t向回跳转(当然啦,这是建立你已经打开文件的基础之上喽!)
4) 分割窗口
":tag"命令会将当前窗口的文件替换为包含新函数的文件。怎样才能同时查看两个文件呢?你可以使用 ":split"命令将窗口分开然后再用":tag"命令。vim 有个缩写命令可以做到这些:
:stag tagname
使用下面的命令可以分割当前窗口并跳转到光标下的标签:
Ctrl-w-]
如果指定了计数参数,新窗口将包含指定的那么多行。
有这些用法基本上就够用了,再多一些基本上就是VIM的灵活运用了。另外,如果这些还不能满足你的要求时,可以使用find和grep来帮忙。假如要找fork.c,就可以用在内核目录下输入:find -name fork.c
wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ find -name fork.c
./kernel/fork.c
刚开始使用时也不能贪多,关键是要熟练的运用。如果一下子涉及的太多就可能会失去信心。(当然这是对于刚开始用,或者vim使用不熟练的人)。
一些相关的插件介绍见: