ctrlp все еще ищет в игнорируемом каталоге
Я пытался поставить игнорируемые настройки в.vimrc
Но когда я использовал ctrlp
искать в папке приложения rails
Это все еще искать vendor
папка, поэтому заняло много времени.
Но когда поиск был завершен, я не смог ничего найти под vendor
Это было так странно! Как это исправить.
Вот мой файл настроек .vimrc.
http://d.pr/i/yMtK http://d.pr/i/Hy4u
" Sane Ignore For ctrlp
let g:ctrlp_custom_ignore = {
\ 'dir': '\.git$|vendor\|\.hg$\|\.svn$\|\.yardoc\|public\/images\|public\/system\|data\|log\|tmp$',
\ 'file': '\.exe$\|\.so$\|\.dat$'
\ }
Когда я добавил код в конце .vimrc
217 let g:NERDTreeIgnore=['\~$', 'vendor']
218 set wildignore+=*\\vendor\\**
Это сработало, когда я впервые использовал CTRLP для поиска в папке приложения RAILS, но все же NOT
работал в следующие времена.
Я думаю, может быть, есть некоторые настройки отключат игнорируемые настройки?
Вот структура моей папки
.
├── Gemfile
├── Gemfile.lock
├── README.rdoc
├── Rakefile
├── app
│ ├── assets
│ ├── controllers
│ ├── helpers
│ ├── mailers
│ ├── models
│ ├── uploaders
│ ├── views
│ └── workers
├── auto.sh
├── config
│ ├── application.rb
│ ├── application.yml
│ ├── boot.rb
│ ├── database.yml
│ ├── environment.rb
│ ├── environments
│ ├── initializers
│ ├── locales
│ ├── macbookair_whenever_schedule.rb
│ ├── menu_navigation.rb
│ ├── navigation.rb
│ ├── resque.god
│ ├── resque_schedule.yml
│ ├── routes.rb
│ ├── schedule.rb -> ubuntu_whenever_schedule.rb
│ ├── tinymce.yml
│ └── ubuntu_whenever_schedule.rb
├── config.ru
├── db
│ ├── development.sqlite3
│ ├── migrate
│ ├── migrate_should_be_skip
│ ├── production.sqlite3
│ ├── schema.rb
│ └── seeds.rb
├── doc
│ └── README_FOR_APP
├── lib
│ ├── assets
│ ├── auto_tools
│ ├── tasks
│ └── url_automation_module.rb
├── log
│ ├── apalog
│ ├── development.log
│ ├── passenger.80.log
│ ├── production.log
│ └── prodution.log
├── output_name
├── public
│ ├── 404.html
│ ├── 422.html
│ ├── 500.html
│ ├── exports
│ ├── favicon.ico
│ ├── results.zip
│ ├── robots.txt
│ ├── sandbox
│ └── uploads
├── script
│ ├── delayed_job
│ └── rails
├── test
│ ├── fixtures
│ ├── functional
│ ├── integration
│ ├── performance
│ ├── test_helper.rb
│ └── unit
├── test.sh
├── tmp
│ ├── cache
│ ├── pids
│ ├── restart.txt
│ ├── sessions
│ └── sockets
├── tmplog
└── vendor
└── bundle
4 ответа
Если вы печатаете :help ctrlp-options
и прочитав немного, вы найдете:
Примечание #1: по умолчанию wildignore и g:ctrlp_custom_ignore применяются только тогда, когда globpath() используется для сканирования файлов, поэтому эти параметры не применяются, когда используется команда, определенная с помощью g:ctrlp_user_command.
Таким образом, вам может понадобиться unlet g:ctrlp_user_command
(возможно, для команды по умолчанию) для фактического использования wildignore
в соответствии с рекомендациями @TomCammann. Например, в вашем ~/.vimrc
, добавлять:
if exists("g:ctrlp_user_command")
unlet g:ctrlp_user_command
endif
set wildignore+=*\\vendor\\**
После этого вам нужно обновить ctrlp
кеш: в Vim нажмите F5 в ctrlp
режим или запустить :CtrlPClearAllCaches
или удалите каталог кеша прямо в вашей оболочке:
rm -r ~/.cache/ctrlp/ # On Linux
Часть моего.vimrc файла. возможно это поможет
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor
Вы можете использовать wildignore
vim, с помощью которого CtrlP подберет.
set wildignore+=*\\vendor\\**
Проверьте, используете ли вы какую-то конкретную команду поиска, например:
let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux
let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows
Такая конфигурация игнорирует g:ctrlp_custom_ignore
вариант.
wildignore
может использоваться другими командами, причина отказа для g:ctrlp_custom_ignore
является g:ctrlp_user_command
, например, вот мой:
if executable('rg')
let g:ctrlp_user_command = 'rg %s --files --hidden --color=never --glob ""'
endif
В этом случае у rg есть собственный способ игнорирования, просто укажите .git
к .gitignore
, rg не будет искать файлы в .gitignore
.