20

我试图将忽略的设置放在 .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 应用程序文件夹下搜索时它有效,但NOT在以下时间仍然有效。

我猜可能有一些设置会禁用被忽略的设置?</p>

这是我的文件夹的结构

.
├── 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

5 回答 5

29

如果您键入: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\\**

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

rm -r ~/.cache/ctrlp/      # On Linux
于 2014-04-11T14:26:11.287 回答
20

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

  set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor
于 2015-01-04T12:58:19.133 回答
5

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

set wildignore+=*\\vendor\\**
于 2014-01-09T13:47:09.540 回答
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

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

于 2017-05-25T15:01:30.037 回答
0

wildignore可能被其他命令使用,失败的原因g:ctrlp_custom_ignoreg:ctrlp_user_command,例如,这里是我的:

if executable('rg')
    let g:ctrlp_user_command = 'rg %s --files --hidden --color=never --glob ""'
endif

对于这种情况,rg 有自己的忽略方式,只要放到.git.gitignorerg 不会搜索.gitignore.

于 2020-08-23T07:18:33.143 回答