J'ai regardé et essayé d'utiliser des ctags exubérants sans succès avec ce que je voulais faire. Je suis sur un Mac essayant de travailler dans un projet où je veux exclure des répertoires tels que .git, node_modules, test, etc. Quand j'essaye quelque chose comme ctags -R --exclude=[.git, node_modules, test]
Je ne reçois rien en retour. Je n'ai vraiment besoin que de l'exécuter dans mon répertoire principal. Des idées sur la façon d'accomplir cela?
L'option --exclude
N'attend pas de liste de fichiers. Selon la page de manuel de ctags
, "Cette option peut être spécifiée autant de fois que souhaité." Donc, c'est comme ça:
ctags -R --exclude=.git --exclude=node_modules --exclude=test
R ead T he F antastic M anual devrait toujours être la première étape de toute tentative de résoudre un problème.
De $ 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.
Des deux premières phrases vous obtenez:
$ ctags -R --exclude=dir1 --exclude=dir2 --exclude=dir3 .
qui peut être un peu bavard, mais c'est à cela que servent les alias et les mappages, etc. Comme alternative, vous obtenez ceci du deuxième paragraphe:
$ ctags -R [email protected] .
avec ce qui suit dans .ctagsignore
:
dir1
dir2
dir3
ce qui revient à exclure ces 3 répertoires sans autant taper.
Vous pouvez encapsuler une liste séparée par des virgules avec des accolades pour gérer les multiples avec un --exclude
option:
ctags -R --exclude={folder1,folder2,folder3}
Cela semble fonctionner uniquement pour les dossiers à la racine de l'endroit où vous exécutez la commande. L'exclusion de dossiers imbriqués nécessite un --exclude
option.