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
Ответы
Ответ 1
Если вы наберете :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
Ответ 2
часть моего файла .vimrc. возможно, это поможет
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor
Ответ 3
Вы можете использовать параметр wildignore
vim, который будет удерживать CtrlP.
set wildignore+=*\\vendor\\**
Ответ 4
Проверьте, используете ли вы какую-то определенную команду поиска, например:
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
.