VIM ctrlp.vim eklentisi: dosyaları nasıl yeniden tarayabilirim?


152

Müthiş ctrlp.vim eklentisine rastladım . Daha önce kullandığım Command-T eklentisine iyi bir alternatif . Command-T hakkında sevmediğim şey, vim başlatıldıktan sonra ilk kez çağrıldığında dosyaları yeniden taramanın yaklaşık 20-30 saniye sürmesi.

CtrlP çok daha hızlı çalışır, ancak yeni oluşturulan dosyalar için otomatik olarak yeniden taranmaz. Yeniden taramayı manuel olarak nasıl tetiklemeliyim?

Teşekkürler!


3
Bu, dokümantasyonda çok açık bir şekilde cevaplanmaktadır.
Mark Wilden

Yanıtlar:


283

Gönderen belgeler :

<F5>
  - Refresh the match window and purge the cache for the current directory.
  - Remove deleted files from MRU list.

Bu zaten ctrl-p modunda olduğunuzu varsayar. Sorgunun ortasına F5 tuşuna basabileceğinizi, yani birkaç karakter yazabileceğinizi, yakın zamanda güncellenmiş bir dosyayla eşleşmediğini bulabileceğinizi ve ardından yenilemek için F5 tuşuna basabileceğinizi unutmayın. Dosya ctrl-p önbelleğine yeni eklenmişse eşleşmeyi otomatik olarak gösterir.


105
Bunun CTRL-P modundayken yapılması gerektiğini unutmayın. Yani, 1. ctrl-p2.F5
David Kay

1
Neredeyse benim için çalışıyor, güncelleme olduğunu görüyorum, ancak yeni eklenen dosyaları bulamıyor
xer0x

1
@ xer0x Doğru CWD'de olduğunuzdan emin olun. NERDTree kullanırken aynı sorun vardı.
jsbeckr

9
Sadece eklemek için, şu anda düzenlerken kendi dosyanızı arayamazsınız.
Daryll Santos

58

As Jeet tuşuna diyor F5o her zaman çalıştırabilirsiniz işe yaramazsa ama :CtrlPClearCachebudur F5çalıştırmak gerekiyordu.

Gönderen dokümantasyon

: CtrlPClearCache
Geçerli çalışma dizininin önbelleğini temizler . CtrlP'nin içine basmakla aynı.
Önbelleği etkinleştirmek veya devre dışı bırakmak için | g: ctrlp_use_caching | seçeneği.


GNU ekran pencereleri Fn tuşlarıma eşleştirildi, bu yüzden bu mükemmel - teşekkürler!
LeonardChallis

6

İsterseniz, bir kayıt gerçekleştiğinde önbelleği otomatik olarak bozabilirsiniz, böylece bir sonraki kullanımda yenilenmeye zorlanacaktır.

Bunu vimrc'nize koyun (kredi docwhat ):

" CtrlP auto cache clearing.
" ----------------------------------------------------------------------------
function! SetupCtrlP()
  if exists("g:loaded_ctrlp") && g:loaded_ctrlp
    augroup CtrlPExtension
      autocmd!
      autocmd FocusGained  * CtrlPClearCache
      autocmd BufWritePost * CtrlPClearCache
    augroup END
  endif
endfunction
if has("autocmd")
  autocmd VimEnter * :call SetupCtrlP()
endif

Ne yazık ki, önbelleği otomatik olarak arka planda taze tutmanın bir yolu yoktur.


2
tasarruf biraz pahalı gibi görünüyor. yeni bir dosya oluşturmak için olası bir tetikleyici var mı?
Alex Moore-Niemi

4

Bunu ctrlp önbelleğe almayı kapatan .vimrc dosyasına ekledim

g:ctrlp_use_caching = 0


Bu muhtemelen orijinal sorunun en iyi ve en doğru cevabıdır. Özellikle fonksiyon satırının erişmek için alternatif bir değiştirici tuşa ihtiyaç duyduğu bir bilgisayardaysanız (Apple'a bakıyorum ..).
Devon Kiss

i bu önbellek ile bile, ctrp zaten yeterince hızlı, hızı artırmak için Ag kullanabilirsiniz
Nhan Tran

2

Bunun eski bir soru olduğunu biliyorum, ama yorum yapmak zorunda olduğum kadar basit. Bunu .vimrc'nize koyun

:nnoremap <c-p> :CtrlPClearCache<bar>CtrlP<cr>

Bu önbelleği yenileyip CtrlP'yi çağırır. Artık eksik dosya yok.


2
Neden yalnızca önbelleğe almayı devre dışı bırakmıyorsunuz g:ctrlp_use_caching?
Martin Tournoij
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.