web-dev-qa-db-ja.com

Exuberant ctagsで複数のディレクトリを除外する方法は?

私は自分がやりたいことで運のない熱狂的なタグを探して使用しようとしました。私は.git、node_modules、testなどのディレクトリを除外したいプロジェクトで作業しようとしているMacを使用しています。ctags -R --exclude=[.git, node_modules, test]私は何の見返りも得られません。コアディレクトリで実行するだけです。これを達成する方法に関するアイデアはありますか?

43
pertrai1

--excludeオプションは、ファイルのリストを想定していません。 ctagsのマニュアルページによると、「このオプションは必要な回数指定できます。」そのため、次のようになります。

ctags -R --exclude=.git --exclude=node_modules --exclude=test

60
aalazz

[〜#〜] r [〜#〜] ead [〜#〜] t [〜#〜] he [〜#〜] f [〜 #〜] antastic [〜#〜] m [〜#〜] anualalwaysが最初のステップであるべき問題を解決しようとする試み。

$ man ctagsから:

--exclude=[pattern]
  Add  pattern to a list of excluded files and directories. This option may
  be specified as many times as desired. For each file name  considered  by
  both the complete path (e.g. some/path/base.ext) and the base name  (e.g.
  base.ext)  of  the  file, thus allowing patterns which match a given file
  name irrespective of its path, or match only a specific path.  If  appro-
  priate  support is available from the runtime library of your C compiler,
  then pattern may contain the usual Shell wildcards (not  regular  expres-
  sions)  common  on Unix (be sure to quote the option parameter to protect
  the wildcards from being expanded by the Shell  before  being  passed  to
  ctags;  also be aware that wildcards can match the slash character, '/').
  You can determine if Shell wildcards are available on  your  platform  by
  examining  the output of the --version option, which will include "+wild-
  cards" in the  compiled  feature  list;  otherwise,  pattern  is  matched
  against file names using a simple textual comparison.

  If  pattern begins with the character '@', then the rest of the string is
  interpreted as a file name from which to read exclusion patterns, one per
  line.  If  pattern  is  empty,  the list of excluded patterns is cleared.
  Note that at program startup, the default exclude list contains "EIFGEN",
  "SCCS",  "RCS", and "CVS", which are names of directories for which it is
  generally not desirable to descend while processing the --recurse option.

あなたが得る最初の2つの文から:

$ ctags -R --exclude=dir1 --exclude=dir2 --exclude=dir3 .

これは少し冗長かもしれませんが、エイリアスやマッピングなどの目的です。別の方法として、2番目の段落からこれを取得します。

$ ctags -R [email protected] .

.ctagsignoreに以下を含めます。

dir1
dir2
dir3

これにより、入力しなくてもこれらの3つのディレクトリを除外できます。

33
romainl

1つの--excludeオプションで複数を処理するために、中括弧でコンマ区切りリストをカプセル化できます。

ctags -R --exclude={folder1,folder2,folder3}

これは、コマンドを発行している場所のルートにあるフォルダーに対してのみ機能するようです。ネストされたフォルダーを除外するには、個別の--excludeオプションが必要です。

11
voodooGQ