2014-01-09 39 views
12

我試圖把忽略設定在.vimrc裏ctrlp還是搜索忽略目錄

但是當我用ctrlp搜索下軌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工作在以下時間。

我想也許有一些設置將禁用忽略設置?

這裏是我的文件夾

. 
├── 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'忽略列表...... – Kent

+0

您是否正在使用注意'g:ctrlp_custom_ignore'的插件?在普通的vim中,設置這樣一個全局變量不會有任何影響。 – benjifisher

+0

你可以在你打給vim的目錄裏輸出'tree'或'find .'嗎?我們不知道您的文件夾和文件設置如何,並且這對我們獲得想法會有所幫助。理想情況下,您可以在這裏給我們完整的輸出:https://asciinema.org/ –

回答

4

可以使用wildignore VIM設置這CtrlP將拿起的結構。

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

嗨你的設置只在第一次運行'CtrlP'時工作,並且在以下時間不工作。我不知道,這一定是我的問題。 – newBike

21

如果鍵入:help ctrlp-options和閱讀了一下,你會發現:

注1:在默認情況下,wildignoreG:ctrlp_custom_ignore只有 申請時globpath()用於掃描的文件,從而這些選項時克定義的命令 不適用: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中,按F5ctrlp模式,或運行: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選項。