开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

在 Vim 中使用 PHP 进行丰富的 ctags

我听说PHP开发人员在开发时采用IDE的一个原因是能够单击类或函数名称并跳转到声明。听起来很神奇,这绝对是我想要的东西。

我解决这个问题的一种方法是采用PEAR编码标准来命名我的类。由于它们定义了类名到文件系统的一对一映射(用目录分隔符替换下划线字符(_)),我通常可以非常快速和轻松地打开类文件,特别是如果我从项目安装的基本目录开始。

然而,今天,我发现了exuberantctags,该库可用于生成索引文件,将语言对象映射到源文件以及源文件中声明它们的行。与其名称相反,它不仅适用于C语言;它目前支持33种不同的编程语言,包括PHP。

我决定今天在ZendFramework核心库上试用它。第一次运行时,它非常有用。然而,它只是映射类,此外,只有那些用单个词“类”定义的类——抽象类和接口完全被排除在外。因此,我查看了文档,看看是否可以改变这种行为。

而且,作为一个Unix程序,我当然可以。首先,您可以使用一个简单的标志向它索引的项目添加功能。此外,您可以使用POSIX正则表达式来优化它搜索的内容。

我编写了以下脚本来创建我的标签索引:

#!/bin/bash
cd /path/to/framework/library
exec ctags-exuberant -f ~/.vim/mytags/framework \
-h \".php\" -R \
--exclude=\"\.svn\" \
--totals=yes \
--tag-relative=yes \
--PHP-kinds=+cf \
--regex-PHP='/abstract class ([^ ]*)//c/' \
--regex-PHP='/interface ([^ ]*)//c/' \
--regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)//f/'

此脚本在文件$HOME/.vim/mytags/framework中创建标签索引。它通过树递归地扫描PHP文件,排除在.svn目录中找到的任何文件(我正在使用来自subversion存储库的签出)。索引中的文件路径是相对于标签文件创建的;这很重要,因为如果没有提供,vim无法跳转到该文件,因为它找不到它。--PHP-kinds=+cf告诉它索引类和函数。接下来,我有三个正则表达式。第一个告诉它匹配以“抽象类”开头的类作为类。第二个告诉它把接口作为类来匹配。最后一点是让以可见性运算符开头的PHP5方法作为函数进行匹配。

索引文件生成后(不到一秒),您在vim中需要做的就是告诉它加载它::settags=~/.vim/mytags/framework.在这一点上,你可以做各种有趣的事情。将光标放在类名或方法名的任意位置,然后按Ctrl-],您将跳转到文件及其声明行;Ctrl-T然后带你回去。如果将调用更改为Ctrl-W],它将拆分当前窗口并在新窗格中打开声明。(如果您熟悉帮助如何与Vim一起工作,这应该看起来很熟悉。)

坚持使用Vim来满足您的PHP编辑需求的另一个原因。:-)

未经允许不得转载:我爱分享网 » 在 Vim 中使用 PHP 进行丰富的 ctags

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏