如何使用shell magic使用GNU etags创建递归etags?

Wil*_*mKF 8 c++ bash etag gnu exuberant-ctags

标准GNU etags不支持目录的递归遍历,如旺盛所做ctags -R.如果我只能访问GNU etags,我怎样才能使用bash shell magic来获取etags为当前目录中的所有C++文件*.cpp*.h文件以及当前目录下的所有目录生成TAGS表,以创建一个TAGS表当前目录,其具有用于emacs解析TAGS表条目的正确路径名.

Tho*_*mas 17

Emacs的维基往往是常见问题的解答或最佳实践的良好来源.对于您的特定问题,Windows和Unixen都有一个解决方案:

http://www.emacswiki.org/emacs/RecursiveTags#toc2

基本上,您运行命令来查找所有.cpp和所有.h文件(如果使用不同的文件结尾,则更改文件选择器,例如,.C)并将结果传递给etags.由于Windows似乎没有xargs,因此您需要一个可以从stdin读取的更新版本的etags(请注意该行末尾的短划线表示stdin).当然,如果你使用最新版本的etags,你也可以使用dash参数而不是xargs.

Windows:

cd c:\source-root
dir /b /s *.cpp *.h *.hpp | etags --your_options -
Run Code Online (Sandbox Code Playgroud)

Unix:

cd /path/to/source-root
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 5

此命令为 .c、.cpp、.Cpp、.hpp、.Hpp .h 文件递归创建默认名称“TAGS”的 etags 文件

find . -regex ".*\.[cChH]\(pp\)?" -print | etags -
Run Code Online (Sandbox Code Playgroud)