使用VIM + Ctags
通常在Linux或其他*Nix环境我们都使用VIM作为代码编辑工具,在纯命令终端下,它几乎是无可替代的。 它具有非常强大的扩展机制,在文字编辑方面基本上无所不能。 不过Emacs用户请不要激动,笔者还没有真正使用Emacs,虽然我知道它甚至可以煮咖啡, 还是等笔者有时间了或许会试试煮杯咖啡边喝边写。
推荐在Linux下编写代码的读者或多或少的试一试ctags。 ctags支持非常多的语言,可以将源代码中的各种符号(如:函数、宏类等信息)抽取出来做上标记并保存到一个文件中, 供其他文本编辑工具(VIM,EMACS等)进行检索。 它保存的文件格式符合UNIX的哲学(小即是美), 使用也比较简洁:
#在PHP源码目录(假定为/server/php-src)执行:
$ cd /server/php-src
$ ctags -R
#小技巧:在当前目录生成的tags文件中使用的是相对路径,
#若改用 ctags -R /server/ ,可以生成包含完整路径的ctags,就可以随意放到任意文件夹中了。
#在~/.vimrc中添加:
set tags+=/server/php-src/tags
#或者在vim中运行命令:
:set tags+=/server/php-src/tags
上面代码会在/sever/php-src目录下生成一个名为tags的文件,这个文件的格式如下:
{tagname}<Tab>{tagfile}<Tab>{tagaddress} EG Zend/zend_globals_macros.h /^# define EG(/;" d
它的每行是上面的这样一个格式,第一列是符号名(如上例的EG宏),第二列是该符号的文件位置以及这个符号所在的位置。 VIM可以读取tags文件,当我们在符号上(可以是变量名之类)使用CTRL+]时VIM将尝试从tags文件中检索这个符号。 如果找到则根据该符号所在的文件以及该符号的位置打开该文件, 并将光标定位到符号定义所在的位置。 这样我们就能快速的寻找到符号的定义。
使用 Ctrl+] 就可以自动跳转至定义,Ctrl+t 可以返回上一次查看位置。这样就可以快速的在代码之间“游动”了。
习惯这种浏览代码的方式之后,大家会感觉很方便的。不过若你不习惯使用VIM这类编辑器,也可以看看下面介绍的IDE。