我试图在.vimrc中放置忽略的设置
但是当我使用ctrlp
在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$'
\ }
当我在.vimrc
217 let g:NERDTreeIgnore=['\~$', 'vendor']
218 set wildignore+=*\\vendor\\**
当我第一次使用CTRLP在RAILS app文件夹下搜索时,它有效
但是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
答案 0 :(得分:25)
如果您输入:help ctrlp-options
并阅读一下,您会发现:
注意#1:默认情况下, wildignore 和 g:ctrlp_custom_ignore 当 globpath()用于扫描文件时应用,因此这些选项 使用 g:ctrlp_user_command 定义的命令时不应用 被使用。
因此,您可能需要unlet g:ctrlp_user_command
(可能设置为默认命令)以实际使用@TomCammann建议的wildignore
。例如,在~/.vimrc
中添加:
if exists("g:ctrlp_user_command")
unlet g:ctrlp_user_command
endif
set wildignore+=*\\vendor\\**
之后,您需要刷新ctrlp
缓存:在Vim中,在ctrlp
模式下按 F5 ,或运行:CtrlPClearAllCaches
,或删除缓存直接在shell中的目录:
rm -r ~/.cache/ctrlp/ # On Linux
答案 1 :(得分:16)
我的.vimrc文件的一部分。也许它会有所帮助
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor
答案 2 :(得分:4)
您可以使用CtrlP将选择的wildignore
vim设置。
set wildignore+=*\\vendor\\**
答案 3 :(得分:3)
检查您是否使用了某些特定的搜索命令,例如:
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
选项。
答案 4 :(得分:0)
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
中的任何文件。