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.