排除Exuberant CTags中的目录

时间:2011-11-19 09:44:27

标签: 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

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

3 个答案:

答案 0 :(得分:16)

在某些时候,定义您想要编入索引的文件列表可能更容易;将该列表保存到文件中,并使用ctags -L <filename>仅为所选择的几个编制索引。

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

find . -path ./Documentation -prune -o -print > indexme

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

答案 1 :(得分:9)

ack -f | ctags -L -

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

使用ack --dump查看ack的内置文件类型。

答案 2 :(得分:0)

ctags -R --exclude="thirdparty/test/**"

使用“dir/**”修复我的情况