Плагин Vim Ctrlp имеет возможность глобально игнорировать определенные имена папок. Например:
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
Тем не менее, у меня есть правило игнорирования, характерное для одного проекта. Я хотел бы что-то более похожее на .gitignore
файл.
Есть ли способ игнорировать определенную папку в конкретном проекте без изменения моей глобальной конфигурации?
Ответы:
Используйте пользовательскую команду листинга
Ctrlp позволяет вам указать, какую команду использовать для получения списка файлов в папке. Поэтому, если вы хотите исключить что-либо по имени
beets.txt
, вы можете сделать:Это глобально, но оно начинает указывать на ответ: введите собственную команду оболочки.
Более того, Ctrlp позволяет вам вводить несколько команд оболочки с маркерами, что означает «если вы видите этот маркер в корневом каталоге, используйте эту команду».
Я нашел это
:help ctrlp
и немного изменил, основываясь на комментарии автора к проблеме.Это означает: «Если вы видите
.git
в папке, используйтеgit ls-files...
. В противном случае, если вы видите.hg
, используйтеhg --cwd...
, в противном случае используйте обычныйfind
».Таким образом, чтобы игнорировать определенную папку в одном проекте, разработайте команду, которая будет игнорировать эту папку, а затем поместите уникальный маркер в этом проекте, чтобы позволить Ctrlp использовать эту специальную команду здесь .
(В моем случае я на самом деле хотел игнорировать файлы, которые были внутри
.gitignore
, поэтомуgit ls-files
команда выше работает для меня.)источник
Если вы используете бэкэнд Silver Searcher для CtrlP (что намного быстрее), просто добавьте
.agignore
файл в каталог вашего проекта в том же формате, что и.gitignore
:Кроме того, сохранить глобальный
~/.agignore
файл.Добавьте Silver Searcher в качестве бэкэнда с этим в вашем
.vimrc
источник
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. Ограничение глубины полезно, если я случайно нажал ctrl-p при редактировании файла в моей домашней папке. Я обнаружил, что скрытый флаг будет включать файлы в .git /Определяет намеренно неотслеживаемые файлы в файле
Чтобы решить это с помощью файла, как
.gitignore
(основанного на решении Nathan grep), я создал файл с именем.ctrlpignore
и поместил шаблоны, которые следует игнорировать, разделив их строками:И моя конфигурация ctrlp:
Возможно,
.gitignore
сам по себе можно использовать для игнорирования файлов в ctrlp, без необходимости создавать новый файл, чтобы сделать почти то же самое.источник
Как сказал Вагнер Андраде ,
.ctrlpignore
было бы неплохо использовать отдельно .Более надежная и удобная настройка vim выглядит следующим образом:
.ctrlpignore
может быть помещен в любой каталог, который будет распознан как корневой каталог ctrlp. Вот пример, каждая строка начинается с./
vim ~/.ctrlpignore
Замечания:
grep -F
будет интерпретировать шаблон, напр. «./.tmp», как фиксированная строка, если вы не хотите, чтобы ваш «./ptmp» был отфильтрован. Есть еще некоторые тривиальные ошибки: './.tmp' также отфильтрует './.tmp2'. Забудь об этом, мне не нравится\.
g:ctrlp_custom_ignore
будет проигнорировано, еслиg:ctrlp_user_command
установлено. Это можно сделать в более сложномg:ctrlp_user_command
белый список вместо черного списка также возможен. Более удобно, если реализовано в отдельном скрипте
источник