Ctags

简述

Ctags,为源码建立标签文件tags ,以帮助在源文件中定位
vim往往可以通过其他插件实现函数,变量等的查找,或者实现源码间切换
而这些插件依赖于tags文件

安装

Ubuntu上可以通过一下命令安装:

$ sudo apt-get install ctags  

其他平台,待续

tags中对象列表

用#define定义的宏  
枚举型变量的值  
函数的定义、原型和声明  
名字空间(namespace)  
变量(包括定义和声明)  
类(class)、结构(struct)、枚举类型(enum)和联合(union)  
类、结构和联合中成员变量或函数  

用参数生成我们需要的tags文件  

具体详细的参数,就不再写了,直接使用下面这条略显完备commmand:

$ ctags -R -c++-kinds=+px --fields=+ialS --extra=+q

每个参数解释如下:

-R		|		ctags递归生成子目录的tags(在项目的根目录下很有意义)  
-c++-kinds=+px	|	ctags记录c++文件中的函数声明,各种外部和前向声明  
--fields=+ials	|	ctags要求描述的信息,其中:  
	i	-->表示如果有继承,则表示出父类  
	a	-->表示如果元素是类成员的话,要标明其调用权限(即public或者private)  
	l	-->表示包含标记源文件的语言  
	S	-->表示函数的签名(即函数原型或者参数列表)  
--extra=+q		|	强制要求ctags做如下操作:  
	如果某个语法元素是类的一个成员,ctags默认会给其记录一行,
	以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。

插件和使用

  1. 很多插件依赖于tags文件,例如omnicppcomplete,tagslist,echofunc
    关于这些插件的安装,可以查看之前的《Vim下的fancy的插件》

  2. Vim中的简单使用

     Ctrl + ]		|		cursor移动到某个元素,按下此组合键,就会跳转到对应定义  
     Ctrl + o		|		按下此组合键,即可返回原来的地方  
     g + d			|		cursor在局部变量出,按下此组合键,就会跳转到局域变量定义处  
    


blog comments powered by Disqus