【转】ctags使用详解
2019-01-13 本文已影响0人
RonZheng2010
参考资料
ctags使用详解(转载)
https://www.cnblogs.com/justkong/p/6265506.html
1. --list-maps
ctags可以根据文件的扩展名以及文件名的形式确定该文件是何种语言。用--list-maps查看默认情况下哪些扩展名对应哪些语言。
ctags --list-maps
2. --list-kinds=c++
查看c++语言可以识别哪些语法元素。
ctags --list-kinds=c++
3. --c++-kinds
ctags识别很多元素,但未必全都记录,例如“函数声明”这一语法元素默认是不记录的。可以控制ctags记录的语法元素的种类,例如,下面的命令要求记录c++文件中的函数声明,包括各种外部和前向声明:
ctags -R --c++-kinds=+px
4. --list-languages=c++
指定扫描那种语言的文件。也可以指定文件的扩展名。下面的例子要求也扫描扩展名为.inl的文件。
ctags --langmap=c++:+.inl
5. -h
有些头文件的扩展名不是.h或.hpp。以下的命令指定.inc文件也是头文件。
ctags -h +.inc
6. --fields
tag对语法元素的描述取决于语法元素的种类。可以在命令行中指定显示哪些描述,以哪种格式显示等。比如下面的命令。
" i 表示如果有继承,要标明父类;
" a 表示如果是类的成员,要标明其access属性(即是public的还是private的);
" S 表示如果是函数,要标明函数的signature;
" K 表示要显示语法元素类型的全称;
" z 表示在显示语法元素的类型时,使用格式kind:type。
ctags -R --fields=+aiKSz
7. --extra
ctags在记录成员函数时,默认情况下tag的名字只包括该函数的名字,不包括类名,这样很多不同类但同名的函数所对应的tag名字都一样。于是在VIM中使用函数名来定位时就会出现很多选择,很麻烦。如果想用包括类名的函数全名进行定位,就得要求ctags记录全名。
如下面的命令:
ctags --extra=+q
8. --exclude
可以要求ctags不要扫描某些目录或文件,比如下面的命令:
ctags --exclude=lex.yy.cc
9. 常用法
以下命令是ctags的常用法。
" 递归搜索所有文件
"
" 记录的语法元素要标明父类
" 记录c++文件中的函数声明
" 类成员要标明其access属性;
" 函数要标明函数的signature;
" 函数记录全名
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .