在阅读 php 源码的时候,为了方便跳转到相应的函数定义的位置,需要使用 ctags 来生成 tags 文件,再配合 vim 来实现跳转。
安装 ctags
macOS 上使用 ctags 非常简单,一般都预装了 ctags 。
如果没有安装,可以使用 brew install ctags
来安装。
tags 文件
在 php 源码根目录,执行 ctags -R
, 就会在当前目录下生成一个名为 tags
的 文件。
1 | ~/codes/php-src(master*) » tail -n 20 tags |
tags 文件的格式非常简单,以tab 分割各项,基本有以下几项内容:
第一列:tag name ,例如 zval_ptr_dtor
第二列:tag 所在的文件,例如 Zend/zend_variables.h
第三列:执行的命令,一般是指在 vi 中执行的正则搜索命令,例如 /^#define zval_ptr_dtor(/;"
第四列:tag 的类型,例如:d , 类型在不同的语言中有不同的含义。在 c 中, d 代表着 macro definitions (宏定义)
具体的各语言的 tag 的类型定义可以使用 ctags --list-kinds
来查看:
1 | ~/codes/php-src(master*) » ctags --list-kinds |
查看 ctags 支持哪些语言可以使用 ctags --list-languages
来查看:
1 | ~/codes/php-src(master*) » ctags --list-languages |
大概有 41 种,不过 并没有看到 对 go 的支持,应该是因为 go 语言还是比较年轻的原因。
使用 tags
一般情况下,在 tags 文件所在目录使用 vi (vim) 打开源码文件,在文件中使用快捷键 ctrl+]
即可实现跳转,ctrl+t
即可回到跳转之前的位置。
如果无法跳转,提示 E433: No tags file
,则需要手动指定 tags 文件,通过 vim 命令或者直接修改 vim 的配置文件 vimrc 均可:
1 | #在~/.vimrc中添加: |