Используйте пользовательскую команду листинга
Ctrlp позволяет вам указать, какую команду использовать для получения списка файлов в папке. Поэтому, если вы хотите исключить что-либо по имени beets.txt
, вы можете сделать:
let g:ctrlp_user_command = 'find %s -type f | grep -v "beets.txt"'
Это глобально, но оно начинает указывать на ответ: введите собственную команду оболочки.
Более того, Ctrlp позволяет вам вводить несколько команд оболочки с маркерами, что означает «если вы видите этот маркер в корневом каталоге, используйте эту команду».
Я нашел это :help ctrlp
и немного изменил, основываясь на комментарии автора к проблеме.
let g:ctrlp_user_command = {
\ 'types': {
\ 1: ['.git', 'cd %s && git ls-files --cached --exclude-standard --others'],
\ 2: ['.hg', 'hg --cwd %s locate -I .'],
\ },
\ 'fallback': 'find %s -type f'
\ }
Это означает: «Если вы видите .git
в папке, используйте git ls-files...
. В противном случае, если вы видите .hg
, используйте hg --cwd...
, в противном случае используйте обычный find
».
Таким образом, чтобы игнорировать определенную папку в одном проекте, разработайте команду, которая будет игнорировать эту папку, а затем поместите уникальный маркер в этом проекте, чтобы позволить Ctrlp использовать эту специальную команду здесь .
(В моем случае я на самом деле хотел игнорировать файлы, которые были внутри .gitignore
, поэтому git ls-files
команда выше работает для меня.)