ctags 常用命令行选项

本文的 ctags 用的是 Universal-ctags

命令格式:

1
ctags [options] [source_file(s)]
选项 说明
–list-languages 列出所有支持的语言
-D macro=definition 定义 C 预处理宏
-e,–output-format=etags emacs 使用这种格式的 tags 文件
-f tagfile 生成的 tag 文件,默认是 tags ,etags 默认是 TAGS
-G,–guess-language-eagerly 根据文件内容猜测语言
-R, –recurse 递归查找文件
-L 一个文件,里面是输入文件列表,file 为 - 表示从标准输入读取

使用 ctags 生成 tags 文件

建一个测试项目 TestCTags, 里面放三个文件, test.h test.cpp main.cpp

test.h

1
2
3
4
5
6
#pragma once

#include <string>

std::string Echo(const std::string& msg);

test.cpp

1
2
3
4
5
#include "test.h"

std::string Echo(const std::string& msg) {
    return msg;
}

main.cpp

1
2
3
4
5
6
7
#include "test.h"

int main() {

    Echo("Hello");
    return 0;
}

然后我们可以对整个目录生成 TAG 文件。

1
ctags -eGR *

也可以对指定文件生成 TAG 文件。

1
fd ".cpp" | ctags -eG -L -

fd 是一个跨平台的文件查找工具:https://github.com/sharkdp/fd