PHP源码阅读方法 使用VIM + Ctags查看源码

通常在Linux或其他*Nix环境我们都使用VIM作为代码编辑工具,在纯命令终端下,它几乎是无可替代的。它具有非常强大的扩展机制,在文字编辑方面基本上无所不能。

推荐在Linux下编写代码的读者或多或少的试一试ctags。 ctags支持非常多的语言,可以将源代码中的各种符号(如:函数、宏类等信息)抽取出来做上标记并保存到一个文件中,供其他文本编辑工具(VIM,EMACS等)进行检索。它保存的文件格式符合UNIX的哲学(小即是美),使用也比较简洁:

#在PHP源码目录(假定为~/public_html/php-5.3.13)执行:
$ cd ~/public_html/php-5.3.13
$ ctags -R
 
#小技巧:在当前目录生成的tags文件中使用的是相对路径,
#若改用 ctags -R ~/public_html/ ,可以生成包含完整路径的ctags,就可以随意放到任意文件夹中了。 
 
#在~/.vimrc中添加:
set tags+=~/public_html/php-5.3.13/tags
#或者在vim中运行命令:
:set tags+=~/public_html/php-5.3.13/tags

上面代码会在~/public_html/php-5.3.13目录下生成一个名为tags的文件,这个文件的格式如下:

{tagname}<Tab>{tagfile}<Tab>{tagaddress}
1 !_TAG_FILE_FORMAT>--2>--/extended format; --format=1 will not append ;" to lines/
2 !_TAG_FILE_SORTED>--1>--/0=unsorted, 1=sorted, 2=foldcase/
3 !_TAG_PROGRAM_AUTHOR>---Darren Hiebert>-/[email protected]/
4 !_TAG_PROGRAM_NAME>-Exuberant Ctags>//
5 !_TAG_PROGRAM_URL>--http://ctags.sourceforge.net>---/official site/
6 !_TAG_PROGRAM_VERSION>--5.5.4>--//
7 A>--ext/hash/hash_gost.c>---89;">---d>--file:
8 AA>-ext/gd/libgd/gd.h>--/^>-int AA;$/;">m>--struct:gdImageStruct
9 AA>-ext/hash/hash_gost.c>---101;">--d>--file:
10 AAL_Bx_Ax>--ext/gd/libgd/gd.h>--/^>-int AAL_Bx_Ax;$/;">-m>--struct:gdImageStruct
11 AAL_By_Ay>--ext/gd/libgd/gd.h>--/^>-int AAL_By_Ay;$/;">-m>--struct:gdImageStruct
12 AAL_LAB>ext/gd/libgd/gd.h>--/^>-float AAL_LAB;$/;">-m>--struct:gdImageStruct

它的每行是上面的这样一个格式,第一列是符号名(如上例的AAL_Bx_Ax宏),第二列是该符号的文件位置以及这个符号所在的位置。 VIM可以读取tags文件,当我们在符号上(可以是变量名之类)使用CTRL+]时VIM将尝试从tags文件中检索这个符号。如果找到则根据该符号所在的文件以及该符号的位置打开该文件,并将光标定位到符号定义所在的位置。 这样我们就能快速的寻找到符号的定义。

使用 Ctrl+] 就可以自动跳转至定义,Ctrl+t 可以返回上一次查看位置。这样就可以快速的在代码之间“游动”了。

转自:第二节 源码结构、阅读代码方法 《TIPI:深入理解PHP内核》

你可能感兴趣的:(PHP源码阅读方法 使用VIM + Ctags查看源码)