2014-01-09 2 views
12

Я пытался поставить игнорировали установку в .vimrcctrlp все еще ищет игнорируемый Адресную книгу

Но когда я использовал ctrlp искать по рельсам приложения папка

Он по-прежнему искать папку 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 искать в папке рельсов приложения, Но все же 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

Я не вижу 'vendor' в вашем списке игнорирования dir ...... – Kent

+0

Вы используете плагин, который обращает внимание на' g: ctrlp_custom_ignore'? В простом vim установка такой глобальной переменной не будет иметь никакого эффекта. – benjifisher

+0

Вы могли бы дать вывод 'tree' или' find .' в каталоге, в котором вы вызываете vim внутри? Мы не знаем, как выглядят ваши папки и настройки файлов, и это было бы полезно для нас, чтобы получить представление. В идеале вы дадите нам полную информацию здесь: https://asciinema.org/ –

ответ

4

Вы можете использовать параметр wildignore ВЬЕТ который CtrlP подберет на.

set wildignore+=*\\vendor\\** 
+0

Привет, ваш настрой работал только в первый раз, когда я запустил «CtrlP», и не работал в следующие моменты времени. Я понятия не имею, это должны мои проблемы. – newBike

21

Если вы наберете :help ctrlp-options и читать немного, вы найдете:

Примечание # 1: по умолчанию, wildignore и г: 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 
+0

Добавление, которое дает мне '' 'E108: Нет такой переменной:« g: ctrlp_user_command »' '' –

+0

@IanVaughan: ваш плагин 'ctrlp' обновлен? В моем случае это значение было установлено по умолчанию, но если это не так, необходимо добавить защитника. Проверьте мой обновленный ответ. – BenC

+0

Очистка кеша важна, если вы уже нашли файлы, которые хотите исключить, и пытаетесь их исключить впоследствии. – Paul

13

часть моего файла .vimrc.возможно, это поможет

set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor 
2

Проверьте, если вы используете какой-то конкретной команды поиска, например:

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.