利用ctags提升看、写代码的效率

来源:互联网 发布:新浪娱乐 网络兼职 编辑:程序博客网 时间:2024/05/16 09:05

vi有一段时间了。要方便的查看cc++代码的话,还是要依赖一些工具、插件之类的东西,比如用ctags生成符号链接文件。用ctrl+]可以方便的跳转到符号的定义处。vi初学者可能只是简单的使用ctags,而没有使用ctags的一些有用的选项。不加选项使用ctags的话,只能生成一些最基本的符号链接信息。

一.目前我使用的ctags的完整参数,供参考:

alias ctags="ctags -I __THROW --c-kinds=+pxd --fields=+iaS --extra=+qf -R "(将其加入profile,使得登陆机器后自动生效)

 

-I __THROW

ctags可能不能正确解析一些符号,比如如下函数声明,需要将__THROW忽略

extern int listen (int __fd, int __n) __THROW

 

--c-kinds=+pxd

+号表示enable后面的符号,-号表示disable后面的符号

pPrototypes)表示给只有函数声明的头文件也生成tag(以前很强烈的的一个需求)

seXternal)表示给外部变量声明生成tag

dDefine)表示给宏定义生成tag

 

--fields=+iaS

+号表示enable后面的符号,-号表示disable后面的符号

a   Access (or export) of class members(给类成员变量生成tag

i   Inheritance information(给继承信息生成tag

S   Signature of routine (e.g. prototype or parameter list)(给函数签名生成tag)

 

--extra=+qf

+号表示enable后面的符号,-号表示disable后面的符号

q给类成员对象生成标签的时候,成员标签前面加上类名标识:"class::member",方便跳转定位,减少重复标签带来的歧义

ffile),给文件名生成tag,方便跳转到某个文件,很有用

 

-Rrecurse

递归遍历一个目录,将目录下的所有源码文件的符号都解析到tags里面

 

二.将生成的tags路经配置到.vimrc文件里面,跳转的时候,vi会顺序查找每个tagsctrl+]以第一个找到的符号为准。

可能同名符号有很多,ctrl+]只会简单跳转到第一个,可以::tn跳转到下一个同名符号,:tp跳转到上一个同名符号。用g+]可以把所有的符号列出来供你选择,

 

 

比如想跳转到某个文件,可以这样:

 

:ta后面跟上文件名

也可以先v模式,选定文件名,然后跳转

另外, :ta支持正则表达式, 比如可以:ta /h.*domain.h

0 0