ctags(1)
名称
ctags - 创建用于 ex 和 vi 的标记文件
用法概要
/usr/bin/ctags [-aBFtuvwx] [-f tagsfile] file...
/usr/xpg4/bin/ctags [-aBFuvwx] [-f tagsfile] file...
描述
The ctags utility makes a tags file for ex(1) or vi(1) from the specified C, C++, Pascal, FORTRAN, yacc(1), and lex(1) sources.标记文件给出指定对象(在本例中为函数和 typedef)在一组文件中的位置。标记文件的每一行都包含对象名称、定义了该对象的文件以及该对象定义的地址指定。函数将通过模式进行搜索,typedef 将通过行号进行搜索。说明符是在行上的各个字段中指定的,由 SPACE 或 TAB 字符分隔。使用标记文件,ex 可以快速查找这些对象的定义。
通常情况下,ctags 将标记说明放置在一个名为 tags 的文件中;可以使用 –f 选项覆盖此行为。
名称以 .c 或 .h 结尾的文件将被认为是 C 或 C++ 源文件并将在其中搜索 C/C++ 例程和宏定义。名称以 .cc、.C 或 .cxx 结尾的文件将被认为是 C++ 源文件。名称以 .y 结尾的文件将被认为是 yacc 源文件。名称以 .l 结尾的文件将被认为是 lex 文件。对于其他文件,则会首先检查它们是否包含任何 Pascal 或 FORTRAN 例程定义;如果未包含,则会再次对其进行处理以查找 C 定义。
在 C 或 C++ 程序中,标记 main 将被特殊对待。构成的标记是通过以下方式创建的:将 M 附加到 file 之前,并删除结尾 .c、.cc、.C 或 .cxx(如果有),还将删除前导路径名组件。这使得 ctags 可以在具有多个程序的目录中使用。
选项
与输出相关的选项的优先顺序是:–x、–v,然后是其余的选项。支持以下选项:
- –a
将输出附加到现有的 tags 文件。
- –B
使用后向搜索模式 (?。 。 。 ?)。
- –f tagsfile
将标记说明放置在名为 tagsfile 而非 tags 的文件中。
- –F
使用前向搜索模式 (/. . . /)(缺省值)。
- –t
为 typedef 创建标记。/usr/xpg4/bin/ctags 缺省情况下为 typedef 创建标记。
- –u
在标记中更新指定的文件,也就是说,将删除对它们的所有引用,并且将新值附加到文件。注意:此选项是以一种相当慢的方式实现的;仅重新生成 tags 文件通常更快。
- –v
在标准输出上生成索引,列出函数名称、文件名称和页号(采用 64 行页面)。因为输出按词典顺序排序,所以通过 sort –f 运行输出可能更可取。
A tagsfile will not be written when –v is specified.
- –w
Suppresses warning diagnostics.
- –x
生成对象名称列表、定义了每个名称的行号和文件名,以及该行的文本,并在标准输出上输出该信息。这是可输出为脱机可读取函数索引的一个简单索引。
A tagsfile will not be written when –x is specified.
操作数
支持以下 file 操作数:
- file.c
基名以 .c 后缀结尾的文件将被视为 C 语言源代码。
- file.h
基名以 .h 后缀结尾的文件将被视为 C 语言源代码。
- file.f
基名以 .f 后缀结尾的文件将被视为 FORTRAN 语言源代码。
示例
示例 1 按字母顺序生成条目
将 ctags 与 –v 选项一起使用将按可能不是始终适合 vgrind 的某种顺序生成条目。要按字母顺序生成结果,您可能需要通过 sort –f 运行输出。
example% ctags -v filename.c filename.h | sort -f > index
example% vgrind -x index
示例 2 构建标记文件
要为根目录为 sourcedir 的目录分层结构中的 C 源文件构建标记文件,请首先创建一个空的标记文件,然后运行 find(1)。
example% cd sourcedir ; rm -f tags ; touch tags
example% find . \( -name SCCS -prune -name \
'*.c' -o -name '*.h' \) -exec ctags -u {} \;
请注意,必须严格按照示例所示输入空格。
环境变量
See environ(7) for descriptions of the following environment variables that affect the execution of ctags: LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.
退出状态
将返回以下退出值:
- 0
成功完成。
- > 0
出现错误。
文件
- tags
output tags file
属性
有关下列属性的说明,请参见 attributes(7):
/usr/bin/ctags
|
|
可用性 |
developer/base-developer-utilities |
|
/usr/xpg4/bin/ctags
|
|
可用性 |
system/xopen/xcu4 |
接口稳定性 |
Committed(已确定) |
标准 |
|
|
另请参见
ex(1), lex(1), vgrind(1), vi(1), yacc(1), attributes(7), environ(7), standards(7)
附注
对于 FORTRAN 和 Pascal,对函数、子例程和过程的识别是以一种非常简单的方式执行的。不会尝试处理块结构;如果在不同的块中有同名的两个 Pascal 过程,则会失败。
用于确定是查找 C 函数还是查找 Pascal 和 FORTRAN 函数的方法是 hack。
ctags 实用程序不了解有关 #ifdefs 的信息。
ctags 实用程序应当了解 Pascal 类型。要检测 typedef,需要依赖格式良好的输入。使用 –tx 将仅显示 typedef 的最后一行。