排除Exuberant CTags中的目录

Cod*_*key 17 exuberant-ctags

我正在使用一个非常大的代码库,我发现选择包含哪些目录用于Exuberant Ctags是有用的.

--exclude选项适用于消除单个文件和目录名称(使用全局通配符),但我无法弄清楚如何排除包含多个目录的路径模式.

例如,我可能想要排除目录tests,但仅在处理时thirdparty\tests(在Windows下).问题是如果我只是使用--exclude=tests我排除太多目录,包括我正在积极处理的代码中的测试目录.

以下是我尝试过的一些事情:

--exclude=thirdparty\tests
--exclude=thirdparty\\tests
--exclude=*\thirdparty\tests
--exclude=*\\thirdparty\\tests
--exclude=thirdparty/tests
Run Code Online (Sandbox Code Playgroud)

Ctags默默地忽略了所有这些,如检查标签文件所证明的那样.

如何仅在目录父目录之前排除目录?

添加:

这是我的ctags --version输出:

Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul  9 2009, 17:05:35
  Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
  Optional compiled features: +win32, +regex, +internal-sort
Run Code Online (Sandbox Code Playgroud)

sar*_*old 16

在某些时候,可能更容易定义您想要编入索引的文件列表; 将该列表保存到文件,并使用ctags -L <filename>索引只选择少数.

这允许您使用find(1)修剪您不想索引的目录,例如:

find . -path ./Documentation -prune -o -print > indexme
Run Code Online (Sandbox Code Playgroud)

将跳过所有子目录中的所有文件./Documentation.

  • 有人可以一步一步地做这个过程的菜鸟吗?TNX (2认同)

nam*_*ame 9

ack -f | ctags -L -
Run Code Online (Sandbox Code Playgroud)

ack将列出给定目录中的源文件.您可以使用ack -f --ruby或将范围限制为特定语言ack -f --type=ruby.您也可以将dirs排除在外--ignore-dir.

使用ack --dump看到内置的文件类型ACK.

  • 很好的答案.我用过`git ls-files | ctags -L -` (2认同)