通常在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>-/dhiebert@users.sourceforge.net/ 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 可以返回上一次查看位置。这样就可以快速的在代码之间“游动”了。