ctrlp仍会搜索被忽略的目录

new*_*ike 18 vim ctrlp

我试图在.vimrc中放置忽略的设置

但是当我用ctrlprails搜索rails app文件夹时

它仍然搜索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$'
  \ }
Run Code Online (Sandbox Code Playgroud)

当我在最后添加代码 .vimrc

217 let g:NERDTreeIgnore=['\~$', 'vendor']
218 set wildignore+=*\\vendor\\**
Run Code Online (Sandbox Code Playgroud)

当我第一次使用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
Run Code Online (Sandbox Code Playgroud)

Ben*_*enC 27

如果您输入:help ctrlp-options并阅读一下,您会发现:

注意#1:默认情况下,wildignoreg: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\\**
Run Code Online (Sandbox Code Playgroud)

在此之后,你需要刷新ctrlp缓存:在Vim中,按F5ctrlp模式,或运行:CtrlPClearAllCaches,或直接在你的shell删除缓存目录:

rm -r ~/.cache/ctrlp/      # On Linux
Run Code Online (Sandbox Code Playgroud)


小智 17

我的.vimrc文件的一部分.也许它会有所帮助

  set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor
Run Code Online (Sandbox Code Playgroud)


Tom*_*ann 5

您可以使用wildignoreCtrlP 将选择的vim 设置。

set wildignore+=*\\vendor\\**
Run Code Online (Sandbox Code Playgroud)


小智 5

检查您是否正在使用某些特定的搜索命令,例如:

let g:ctrlp_user_command = 'find %s -type f'        " MacOSX/Linux
let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d'  " Windows
Run Code Online (Sandbox Code Playgroud)

这种配置会忽略该g:ctrlp_custom_ignore选项。