Wtyczka VIM ctrlp.vim: jak ponownie przeskanować pliki?


152

Natknąłem się na niesamowitą wtyczkę ctrlp.vim . To dobra alternatywa dla wtyczki Command-T, z której korzystałem wcześniej. To, co mi się nie podobało w Command-T, to to, że ponowne przeskanowanie plików zajęłoby około 20-30 sekund, gdy jest ono uruchamiane po raz pierwszy po uruchomieniu vima.

CtrlP działa znacznie szybciej, ale nie wydaje się, aby automatycznie skanował ponownie w poszukiwaniu nowo utworzonych plików. Jak ręcznie uruchomić ponowne skanowanie?

Dzięki!


3
Odpowiedzi na to jest bardzo jasne w dokumentacji.
Mark Wilden,

Odpowiedzi:


283

Z dokumentacji :

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

Zakłada się, że jesteś już w trybie ctrl-p. Zwróć uwagę, że możesz nacisnąć F5 w środku zapytania, tj. Możesz wpisać kilka znaków, stwierdzić, że nie pasuje do ostatnio zaktualizowanego pliku i nacisnąć F5, aby odświeżyć się w tym momencie. Automatycznie pokaże ci dopasowanie, jeśli plik został właśnie dodany do pamięci podręcznej ctrl-p.


105
Zauważ, że należy to zrobić w trybie CTRL-P. Tak więc 1. ctrl-p2.F5
David Kay

1
Prawie działa dla mnie, widzę, że się aktualizuje, ale nie znajduje nowo dodanych plików
xer0x

1
@ xer0x Upewnij się, że jesteś we właściwym CWD. Miałem ten sam problem podczas korzystania z NERDTree.
jsbeckr

9
Aby dodać, nie możesz wyszukiwać własnego pliku podczas jego edycji.
Daryll Santos

58

Tak jak mówi Jeet , możesz nacisnąć, F5ale jeśli to nie zadziała, zawsze możesz biec, :CtrlPClearCacheco F5powinno działać.

Z dokumentacji

: CtrlPClearCache
Opróżnij pamięć podręczną bieżącego katalogu roboczego. To samo, co naciśnięcie wewnątrz CtrlP.
Aby włączyć lub wyłączyć buforowanie, użyj | g: ctrlp_use_caching | opcja.


Mam okna ekranu GNU zmapowane do moich klawiszy Fn, więc to jest idealne - dzięki!
LeonardChallis

6

Jeśli chcesz, możesz automatycznie zepsuć pamięć podręczną podczas zapisywania, więc będzie ona zmuszona do odświeżenia przy następnym użyciu.

Umieścić to w swoim vimrc (kredyt 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

Niestety nie ma sposobu, aby automatycznie zachować świeżość pamięci podręcznej w tle.


2
oszczędzanie wydaje się trochę drogie. czy istnieje możliwy wyzwalacz do tworzenia nowego pliku?
Alex Moore-Niemi

4

Dodałem to do .vimrc, który wyłącza buforowanie ctrlp

g:ctrlp_use_caching = 0


To prawdopodobnie najlepsza i najdokładniejsza odpowiedź na pierwotne pytanie. Zwłaszcza jeśli jesteś na komputerze (patrzę na ciebie Apple…), gdzie wiersz funkcji wymaga alternatywnego klawisza modyfikującego, aby uzyskać dostęp.
Devon Kiss

Podoba mi się ta odpowiedź, nawet bez pamięci podręcznej, ctrp jest już wystarczająco szybki, może użyć Ag do zwiększenia prędkości
Nhan Tran

2

Wiem, że to stare pytanie, ale jest tak proste, że muszę to skomentować. Umieść to w swoim .vimrc

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

To odświeży pamięć podręczną, a następnie wywoła CtrlP. Nigdy więcej brakujących plików.


2
Dlaczego po prostu nie wyłączyć buforowania za pomocą g:ctrlp_use_caching?
Martin Tournoij
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.