利用ctags提升看、写代码的效率
2014-08-20 10:51
253 查看
用vi有一段时间了。要方便的查看c、c++代码的话,还是要依赖一些工具、插件之类的东西,比如用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后面的符号
p(Prototypes)表示给只有函数声明的头文件也生成tag(以前很强烈的的一个需求)
s(eXternal)表示给外部变量声明生成tag
d(Define)表示给宏定义生成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",方便跳转定位,减少重复标签带来的歧义
f(file),给文件名生成tag,方便跳转到某个文件,很有用
-R(recurse)
递归遍历一个目录,将目录下的所有源码文件的符号都解析到tags里面
二.将生成的tags路经配置到.vimrc文件里面,跳转的时候,vi会顺序查找每个tags,ctrl+]以第一个找到的符号为准。
可能同名符号有很多,ctrl+]只会简单跳转到第一个,可以::tn跳转到下一个同名符号,:tp跳转到上一个同名符号。用g+]可以把所有的符号列出来供你选择,
比如想跳转到某个文件,可以这样:
:ta后面跟上文件名
也可以先v模式,选定文件名,然后跳转
另外, :ta支持正则表达式, 比如可以:ta /h.*domain.h
一.目前我使用的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后面的符号
p(Prototypes)表示给只有函数声明的头文件也生成tag(以前很强烈的的一个需求)
s(eXternal)表示给外部变量声明生成tag
d(Define)表示给宏定义生成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",方便跳转定位,减少重复标签带来的歧义
f(file),给文件名生成tag,方便跳转到某个文件,很有用
-R(recurse)
递归遍历一个目录,将目录下的所有源码文件的符号都解析到tags里面
二.将生成的tags路经配置到.vimrc文件里面,跳转的时候,vi会顺序查找每个tags,ctrl+]以第一个找到的符号为准。
可能同名符号有很多,ctrl+]只会简单跳转到第一个,可以::tn跳转到下一个同名符号,:tp跳转到上一个同名符号。用g+]可以把所有的符号列出来供你选择,
比如想跳转到某个文件,可以这样:
:ta后面跟上文件名
也可以先v模式,选定文件名,然后跳转
另外, :ta支持正则表达式, 比如可以:ta /h.*domain.h
相关文章推荐
- 利用c模块代码,提升python代码执行效率
- C/C++中利用空指针简化代码,提高效率
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 一个分号将代码效率提升100倍
- 利用 AWK 的数值计算功能提升工作效率
- 利用交叉测试提升软件测试效率
- 挑战30天C++入门极限-C/C++中利用空指针简化代码,提高效率
- C++修炼笔记----------利用合并排序提升排序效率(分而治之---Divide-Conquer )
- 让的PHP代码飞起来的40条小技巧(提升php效率)
- VS代码自动提示、语法着色、高亮显示,提高开发效率,提升代码质量
- 利用 AWK 的数值计算功能提升工作效率
- 利用命令行提升Windows Server 2008管理效率
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 利用OpenMP提升效率
- SQL效率提升之一些SQL编写建议并有效利用索引
- C/C++中利用空指针简化代码,提高效率
- 利用命令行 提升Windows Server 2008管理效率
- JavaScript:利用StringBuffer类提升+=拼接字符串效率
- 利用 AWK 的数值计算功能提升工作效率
- paip.提升效率---质量控制--代码风格模板化