手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ctags(1)

名称

ctags - 创建用于 ex 和 vi 的标记文件

用法概要

/usr/bin/ctags [-aBFtuvwx] [
-f tagsfile] file...
/usr/xpg4/bin/ctags [-aBFuvwx] [
-f tagsfile] file...

描述

ctags 实用程序基于指定的 C、C++、Pascal、FORTRAN、yacc(1)lex(1) 资源为 ex(1) 创建标记文件。标记文件给出指定对象(在本例中为函数和 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 运行输出可能更可取。

–w

禁止警告诊断消息。

–x

生成对象名称列表、定义了每个名称的行号和文件名,以及该行的文本,并在标准输出上输出该信息。这是可输出为脱机可读取函数索引的一个简单索引。

操作数

支持以下 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 {} \;

请注意,必须严格按照示例所示输入空格。

环境变量

有关影响 ctags 执行的以下环境变量的说明,请参见 environ(5):LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES 和 NLSPATH。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

文件

tags

输出标记文件

属性

有关下列属性的说明,请参见 attributes(5)

/usr/bin/ctags

属性类型
属性值
可用性
developer/base-developer-utilities

/usr/xpg4/bin/ctags

属性类型
属性值
可用性
system/xopen/xcu4
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

ex(1)lex(1)vgrind(1)vi(1)yacc(1)attributes(5)environ(5)standards(5)

附注

对于 FORTRAN 和 Pascal,对函数子例程过程的识别是以一种非常简单的方式执行的。不会尝试处理块结构;如果在不同的块中有同名的两个 Pascal 过程,则会失败。

用于确定是查找 C 函数还是查找 Pascal 和 FORTRAN 函数的方法是 hack。

ctags 实用程序不了解有关 #ifdefs 的信息。

ctags 实用程序应当了解 Pascal 类型。要检测 typedef,需要依赖格式良好的输入。使用 –tx 将仅显示 typedef 的最后一行。