Ctags 目前应该是有三个版本,普通版本,Exuberant 版本,以及 Universal 版本。
目前普通版本应该用得都比较少了,没人维护,不过 Mac 默认自带的就是这个版本。
因为目前 brew 安装 Exuberant Ctags 很方便,一句命令搞定:
$ brew install ctags
所以 brew 上用 Exuberant 版本的应该比较多。
不过这个版本依然是很古老的版本,从 ctags --version的信息可以看到此版本也应该到 2009 年就停止更新了:
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
虽然版本老,但是依旧很经典。我用它生成 PHP 的 tags 列表,一向很顺利。直到 Traits 的出现。
Exuberant Ctags 并不支持 traits,不过借助于 Ctags 灵活的配置,实现 traits 的 tag 生成也是完全可能的,关键在于 --regex-php 参数的设定:
ctags --regex-php=/^[ \t]*trait[ \t]+([a-z0_9_]+)/\1/t,traits/i ...
看得出来,此参数值的正则就是用来匹配 关键词 trait 后面的单词的。
虽然经典版本的确经典,但是赶不上新时代的潮流注定会被取代。Universal Ctags 就是经典的革命者。目前项目活跃度还比较高…… 估计你已经猜到,这个版本的 Ctags,是默认支持 traits 的。想跟上时代的脚步?请按下面的指示:
# 使用 homebrew 举例,其他平台可尝试自行搜索安装方法
brew tap universal-ctags/universal-ctags
brew install --HEAD universal-ctags
安装结束,以后使用 ctags 时只要在参数 --php-kinds 里指定 t,就可以支持 trait 了,按 Universal Ctags 自己的说法,比使用 --regex-php 参数的方式快了 10 倍哦。
写作累,服务器还越来越贵
求分担,祝愿好人一生平安
天使打赏人