ILD

ctags
作者:YUAN JIANPENG 邮箱:yuanjp@hust.edu.cn
发布时间:2018-7-22 站点:Inside Linux Development

使用cscope发现了一个重大的缺点,就是它包含了太多的输出,比如你要查找platform_driver结构体的定义,它会输出platform_driver的声明,很多变量等。真正的定义被淹没在输出中。因此又回过头来学习ctags。


建立数据库

ctags只能生成数据库,本身不能查询。


支持的语言,可以使用--list-languages列出来。根据文件自动映射到语言,可以使用--list-maps查看这个映射关系,如下是部分输出:

1
2
3
4
5
6
7
8
$ ctags --list-maps
Ant      *.build.xml
Asm      *.asm *.ASM *.s *.S *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68]
Asp      *.asp *.asa
Awk      *.awk *.gawk *.mawk
Basic    *.bas *.bi *.bb *.pb
BETA     *.bet
C        *.c


使用--language-force强制使用某种语言。

-f file,指定数据库文件的文件名,如果没有这个选项,默认是tags。如果file为-,则输出到标准输出。

-L file,指定一个源文件列表。

-R,如果不是通过-L选项指定源文件列表,而是通过命令行参数指定一个目录,这个选项会搜索目录下所有的源文件。


--list-kinds显示,每种语言支持的符号类型,以及默认是否包含该类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ 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] 
。。。


建立数据库时,可以指定想要的类型:

--c-kinds=+p-m

表示c语言,支持p类型,去掉m类型。


典型的命令:

1
$ ctags --c-kinds=+p -R .


VIM使用

如果当前目录有tags文件,vim启动时会自动添加。也可以手动添加:

1
: set tags+=/path/to/tags

如果只有一个tags使用=代替+=也是可以的。

当然set语句,也可以直接放在.vimrc中,这样所有的vim,在启动时,都添加。


查询

Ctrl + ] 查询光标处的引用


命令查询

: tag name

: ta name


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.