vim java 函数跳转_阅读 php 源码,ctags 配合 vim 实现代码跳转

在阅读 php 源码的时候,为了方便跳转到相应的函数定义的位置,需要使用 ctags 来生成 tags 文件,再配合 vim 来实现跳转。

安装 ctags

macOS 上使用 ctags 非常简单,一般都预装了 ctags 。

如果没有安装,可以使用 brew install ctags 来安装。

tags 文件

在 php 源码根目录,执行 ctags -R, 就会在当前目录下生成一个名为 tags 的 文件。

1

2

3

4

5

6

7

8

9

10~/codes/php-src(master*) » tail -n 20 tags

zval_marked_greyZend/zend_gc.h/^uint32_t zval_marked_grey;$/;"mstruct:_zend_gc_globals

zval_object_property_dumpext/standard/var.c/^static void zval_object_property_dump(zval *zv, zend_ulong index, zend_string *key, int level) \/* {{{ *\/$/;"ffile:

zval_opt_copy_ctorZend/zend_variables.h/^#define zval_opt_copy_ctor(/;"d

zval_possible_rootZend/zend_gc.h/^uint32_t zval_possible_root;$/;"mstruct:_zend_gc_globals

zval_ptr_dtorZend/zend_execute.c/^#define zval_ptr_dtor(/;"dfile:

zval_ptr_dtorZend/zend_execute.c/^#undef zval_ptr_dtor$/;"dfile:

zval_ptr_dtorZend/zend_variables.h/^#define zval_ptr_dtor(/;"d

zval_ptr_dtor_nogcZend/zend_variables.h/^#define zval_ptr_dtor_nogc(/;"d

zval_ptr_dtor_wrapperZend/zend_variables.h/^#define zval_ptr_dtor_wrapper /;"d

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25~/codes/php-src(master*) » ctags --list-kinds

C

c classes

d macro definitions

e enumerators (values inside an enumeration)

f function definitions

g enumeration names

l local variables [off]

m class, struct, and union members

n namespaces

p function prototypes [off]

s structure names

t typedefs

u union names

v variable definitions

x external and forward variable declarations [off]

Java

c classes

e enum constants

f fields

g enum types

i interfaces

l local variables [off]

m methods

p packages

查看 ctags 支持哪些语言可以使用 ctags --list-languages 来查看:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19~/codes/php-src(master*) » ctags --list-languages

....

C

C++

Flex

Fortran

HTML

Java

JavaScript

Lisp

Lua

Make

MatLab

OCaml

Pascal

Perl

PHP

Python

...

大概有 41 种,不过 并没有看到 对 go 的支持,应该是因为 go 语言还是比较年轻的原因。

使用 tags

一般情况下,在 tags 文件所在目录使用 vi (vim) 打开源码文件,在文件中使用快捷键 ctrl+] 即可实现跳转,ctrl+t 即可回到跳转之前的位置。

如果无法跳转,提示 E433: No tags file ,则需要手动指定 tags 文件,通过 vim 命令或者直接修改 vim 的配置文件 vimrc 均可:

1

2

3

4

5#在~/.vimrc中添加:

set tags+=~/codes/php-src/tags

#或者在vim中运行命令:

:set tags+=~/codes/php-src/tags

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值