标准 GNUetags
不支持 exuberant 所做的递归遍历目录ctags -R
。如果我只能访问 GNU etags,我如何使用 bash shell 魔术来获取 etags 为当前目录中的所有 C++ 文件*.cpp
和*.h
文件以及当前目录下的所有目录递归生成一个 TAGS 表具有正确路径名的当前目录,用于emacs
解析 TAGS 表条目。
问问题
5037 次
4 回答
19
Emacs Wiki通常是解决常见问题或最佳实践的好来源。对于您的具体问题,有适用于 Windows 和 Unixen 的解决方案:
http://www.emacswiki.org/emacs/RecursiveTags#toc2
基本上,您运行一个命令来查找所有.cpp
文件.h
(如果您使用不同的文件结尾,例如,请更改文件选择器.C
)并将结果通过管道传输到 etags。由于 Windows 似乎没有 xargs,因此您需要可以从标准输入读取的更新版本的 etags(请注意该行末尾的破折号表示标准输入)。当然,如果您使用最新版本的 etags,您也可以使用 dash 参数而不是 xargs。
窗户:
cd c:\source-root
dir /b /s *.cpp *.h *.hpp | etags --your_options -
Unix:
cd /path/to/source-root
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append
于 2012-05-25T02:09:35.007 回答
5
此命令以递归方式为 .c、.cpp、.Cpp、.hpp、.Hpp .h 文件创建默认名称为“TAGS”的 etags 文件
find . -regex ".*\.[cChH]\(pp\)?" -print | etags -
于 2016-05-16T18:03:36.500 回答
2
此处发布的大多数答案都将find
输出传递到xargs
. 如果目录树内的文件名中有空格,则会中断。
如果文件名(用于.c
和.h
文件)中有空格,则更通用的解决方案可能是:
find . -name "*.[cChH]" -exec etags --append {} \;
于 2019-07-01T20:06:32.010 回答
0
使用查找。如果需要,请查找。
于 2012-05-24T13:17:15.793 回答