分类: LINUX
2012-09-08 10:34:34
Linux下阅读源代码的方法很多,聪明人从标题应该就可以知道,需要(g)vim Taglist ctags。3者配合,真是珠联璧合,功力无限啊!
(1)vim/gvim
什么是vim/gvim,如果看官连vi都不知道,那就别往下看了。一些对Linux一知半解的人说,vi不就是一个和Win下的note pad一样的工具吗?其实大错特错了,如果仅仅是和note pad一样的功能,那它早就不叫vi了。
(2)Taglist
Taglist是一个vim的源代码浏览插件,具体功能介绍还烦请各位看官自己google一下。很多事情还需要亲身经历才有用,别人代劳是不行的。
需要安装这个插件,插件下载地址:Taglist下载地址
里面有很多版本,可以下载目前最新版本:
下载后,首先解压,怎么解压?自己想办法吧。
然后在用户主目录下建立一个隐藏文件夹.vim,并将Taglist解压得到的目录中的plugin复制到.vim目录中。当然,连同其他目录一同复制进去也没有问题。
(3)Ctags
Ctags是一个用于生产tags文件的软件。下载地址,还是上网搜搜吧,还是说了吧:。
下载有进行解压编译安装即可。怎么解压编译安装?当然,比Win下直接双击setup.exe要复杂一些,但是不同世界有不同规则,没有办法,呵呵。
刚刚解压出目录下有一个Makefile.in文件,分别执行:
./configure ./configure作用 读取 Makefile.in 来产生 Makefile
make 执行Makefile,生产可执行文件
make install 把生成的可执行文件拷贝到用户指定目录,并做修改权限,新建文件夹等操作
(4)阅读源代码
首先进入准备查看的源代码的目录,先生成一个tags文件。
$ ctags -R
"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"tags"文件中包括这些对象的列表:
l 用#define定义的宏
l 枚举型变量的值
l 函数的定义、原型和声明
l 名字空间(namespace)
l 类型定义(typedefs)
l 变量(包括定义和声明)
l 类(class)、结构(struct)、枚举类型(enum)和联合(union)
l 类、结构和联合中成员变量或函数
1) 用命令行。在运行vim的时候加上"-t"参数,例如:
[/home/brimmer/src]$ vim -t foo_bar
这个命令将打开定义"foo_bar"(变量或函数或其它)的文件,并把光标定位到这一行。
2) 在vim编辑器内用":ta"命令,例如:
:ta foo_bar
3) 最方便的方法是把光标移到变量名或函数名上,然后按下"Ctrl-]"。用"Ctrl-o"退回原来的地方。
注意:运行vim的时候,必须在"tags"文件所在的目录下运行。否则,运行vim的时候还要用":set tags="命令设定"tags"文件的路径,这样vim才能找到"tags"文件。
在函数中移动光标
[{ 转到上一个位于第一列的"{"
}] 转到下一个位于第一列的"{"
{ 转到上一个空行
} 转到下一个空行 ([ and ] 也分别是两个指令)
gd 转到当前光标所指的局部变量的定义
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方
然后使用vim打开一个C文件。如果要想知道某个人函数或者结构体在什么地方,只要将光标移动到函数上,然后按住CTRL+]即可,看完后安CTRL O又会回到原来的地方。
查看函数列表。还需要启动Taglist,在Vim的命令状态输入:TlistToggle,在Vim界面的左面就会出现函数列表。按住CTRL+WW(2次W),可以切换到函数列表区,移动到函数名称行后按ENTER即可查看函数代码。
gvim
可 能很多看官对vim的命令操作不熟悉,或者不习惯键盘操作,那就可以使用gvim加上以上两个工具即可。只要使用gvim打开C文件,然后启用函数列表, 直接双击函数名称就会跳转到函数处。按住CTRL 鼠标左右键即可跟踪或者回退,操作更加方便,比Win下很多工具还要好。
参考资料:http://blog.csdn.net/rilon1988/article/details/4014435
为方便下载,附上附件 taglist_45.zip
需要把 ctags-5.8.zip 后缀名改成ctags-5.8.tar.gz,才可以在Linux下面就行操作
xiaoqiang_linux2013-05-13 17:13:49
若要默认打开taglist,_vimrc中加入
let Tlist_Auto_Open=1
set tags=tags;
set autochdir
注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目 录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。