标准GNU etags不支持目录的递归遍历,如繁琐的ctags -R所做.如果我只能访问GNU etags,我如何使用bash shell magic来获取etags为当前目录中的所有C文件* .cpp和* .h文件以及当前目录下的所有目录生成TAGS表在当前目录中创建一个TAGS表,该表具有emacs的正确路径名以解析TAGS表条目.
解决方法:
Emacs Wiki通常是解决常见问题或最佳实践的良好来源.对于您的特定问题,Windows和Unixen都有一个解决方案:
http://www.emacswiki.org/emacs/RecursiveTags#toc2
基本上,您运行一个命令来查找所有.cpp和所有.h文件(如果您使用不同的文件结尾,例如更改文件选择器,例如.C),并将结果传递给etags.由于Windows似乎没有xargs,因此您需要一个可以从stdin读取的更新版本的etags(请注意该行末尾的短划线表示stdin).当然,如果你使用最新版本的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