Я смотрел и пытался использовать обильные ctags без везения с тем, что я хочу сделать. Я на Mac пытаюсь работать в проекте, где я хочу исключить такие каталоги, как .git, node_modules, test и т. д. Когда я пытаюсь что-то вроде ctags -R --exclude=[.git, node_modules, test]
, я ничего не получаю взамен. Мне действительно нужно, чтобы он работал только в моем основном каталоге. Любые идеи о том, как это сделать?
Как исключить несколько каталогов с Exuberant ctags?
Ответы (5)
Опция --exclude
не ожидает списка файлов. Согласно справочной странице ctags
, «эта опция может быть указана сколько угодно раз». Итак, это так:
ctags -R --exclude=.git --exclude=node_modules --exclude=test
ctags -R your_dir
. Или я не понимаю, что вы имеете в виду.
- person aalazz; 13.09.2014
cd
зайти на него и запустить ctags -R
- person aalazz; 13.09.2014
find -name your-files -o -path your-path > list.txt; ctags -L list.txt
- person m-ric; 31.05.2016
ctags -R --exclude=node_modules
, а затем ctags -Ra node_modules/my_package
добавить теги в my_package
к файлу тегов.
- person aalazz; 01.06.2016
CmdArgs
.
- person blamb; 29.08.2017
Чтениеэтогопрекрасногофантастического руководства должно всегда быть первым шагом любая попытка решить проблему.
От 1_:
--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.
Из двух первых предложений получается:
$ ctags -R --exclude=dir1 --exclude=dir2 --exclude=dir3 .
это может быть немного многословно, но для этого и нужны псевдонимы, сопоставления и т. д. В качестве альтернативы вы получаете это из второго абзаца:
$ ctags -R [email protected] .
со следующим в .ctagsignore
:
dir1
dir2
dir3
что позволяет исключить эти 3 каталога без особого набора текста.
@
т.е. [email protected]
не работает (на самом деле работает, см. мое редактирование) РЕДАКТИРОВАТЬ: классическое решение с резиновой уткой... убедитесь, что в файле игнорирования нет каталогов, которые заканчиваться на /
- person Samaursa; 30.03.2018
Вы можете инкапсулировать список, разделенный запятыми, с помощью фигурных скобок для обработки кратных значений с помощью одной опции --exclude
:
ctags -R --exclude={folder1,folder2,folder3}
Похоже, это работает только для папок в корне, где вы вводите команду. Для исключения вложенных папок требуется отдельная опция --exclude
.
Другие ответы были прямо в точку, и я подумал, что небольшой пример может помочь:
Вы должны добавить unix-подобный стиль звездочки, чтобы исключить весь каталог.
ctags -R --exclude={.git/*,.env/*,.idea/*} ./
Мне действительно нужно, чтобы он работал только в моем основном каталоге.
Просто удалите флаг -R (рекурсия)!!!