【问题标题】:OracleSolaris 11.2 - ctags and viOracleSolaris 11.2 - ctags 和 vi
【发布时间】:2026-02-04 21:30:01
【问题描述】:

在新安装的 OracleSolaris 上,我有来自 base-developer-utilities 包的 ctags。它不支持递归,所以我生成标签如下:

% cd my_sources; rm -f tags; touch tags
% find . -name '*.c' -o -name '*.h' -exec ctags -v -u {} \;

生成了标签,但由于某种原因 vim 无法理解它,即它只是看不到任何标签,尽管我用set tags 添加它们,而是报告错误E426: tag not found

标签文件中的标签

有人知道它可能有什么问题吗?谢谢。

【问题讨论】:

    标签: solaris ctags opensolaris


    【解决方案1】:

    如果vi 抱怨标签不存在,那是因为它可能不存在。您可以通过使用文本编辑器打开标签文件并搜索它来确认。

    但它不存在的原因是因为您正在覆盖find遇到的每个文件的标签文件的内容,所以它应该只包含最后一个文件的标签。为了克服这个问题,您可以添加 -a 参数,根据其 man page 可用。

    作为替代方案,您可以尝试从源代码编译更新的 ctag,以便使用带有 -R --languages=c 参数的递归模式。如果你决定从源代码编译,我建议你使用universal-ctags

    【讨论】:

    • 当然在标签文件中标记那里,而solaris ctags不支持我在原帖中提到的递归。
    • 是否支持--append?您是否考虑过从源代码编译最近的 ctags?
    • 更新了答案以符合 ctags 的限制版本,我之前没有注意到。