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)
此命令为 .c、.cpp、.Cpp、.hpp、.Hpp .h 文件递归创建默认名称“TAGS”的 etags 文件
find . -regex ".*\.[cChH]\(pp\)?" -print | etags -
Run Code Online (Sandbox Code Playgroud)