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.

Другие вопросы по тегам