Plugin VIM ctrlp.vim: comment rescanner des fichiers?


152

Je suis tombé sur l'impressionnant plugin ctrlp.vim . C'est une bonne alternative au plugin Command-T que j'ai utilisé auparavant. Ce que je n'ai pas aimé à propos de Command-T, c'est qu'il faudrait environ 20 à 30 secondes pour réanalyser les fichiers lorsqu'il est appelé pour la première fois après le démarrage de vim.

CtrlP fonctionne beaucoup plus rapidement mais il ne semble pas effectuer une nouvelle analyse automatique des fichiers nouvellement créés. Comment dois-je déclencher une nouvelle analyse manuellement?

Merci!


3
Ceci est répondu très clairement dans la documentation.
Mark Wilden

Réponses:


283

De la documentation :

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

Cela suppose que vous êtes déjà en mode ctrl-p. Notez que vous pouvez appuyer sur F5 au milieu d'une requête, c'est-à-dire que vous pouvez taper quelques caractères, trouver qu'il ne correspond pas à un fichier récemment mis à jour et appuyer sur F5 pour actualiser immédiatement. Il vous montrera automatiquement la correspondance si le fichier vient d'être ajouté au cache ctrl-p.


105
Notez que cela doit être fait en mode CTRL-P. Donc, 1. ctrl-p2.F5
David Kay

1
Fonctionne presque pour moi, je le vois se mettre à jour mais il ne trouve pas les fichiers récemment ajoutés
xer0x

1
@ xer0x Assurez-vous que vous êtes dans le bon CWD. Eu le même problème lors de l'utilisation de NERDTree.
jsbeckr

9
Juste pour ajouter, vous ne pouvez pas rechercher votre propre fichier pendant que vous le modifiez actuellement.
Daryll Santos

58

Comme Jeet le dit, vous pouvez appuyer sur, F5mais si cela ne fonctionne pas, vous pouvez toujours exécuter :CtrlPClearCachece qui F5est censé fonctionner.

De la documentation

: CtrlPClearCache Vide
le cache du répertoire de travail actuel. La même chose que d'appuyer sur CtrlP.
Pour activer ou désactiver la mise en cache, utilisez la commande | g: ctrlp_use_caching | option.


J'ai des fenêtres d'écran GNU mappées sur mes touches Fn, donc c'est parfait - merci!
LeonardChallis

6

Si vous le souhaitez, vous pouvez automatiquement casser le cache lors d'une sauvegarde, il sera donc forcé de s'actualiser lors de la prochaine utilisation.

Mettez ceci dans votre vimrc (crédit 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

Malheureusement, il n'y a aucun moyen de conserver automatiquement le cache en arrière-plan.


2
sur enregistrer semble assez cher. existe-t-il un déclencheur possible pour créer un nouveau fichier?
Alex Moore-Niemi

4

J'ai ajouté ceci à .vimrc qui désactive la mise en cache ctrlp

g:ctrlp_use_caching = 0


C'est probablement la réponse la meilleure et la plus précise à la question initiale. Surtout si vous êtes sur un ordinateur (je vous regarde Apple ..) où la ligne de fonction a besoin d'une touche de modification alternative pour accéder.
Devon Kiss

j'aime cette réponse, même sans cache, ctrp est déjà assez rapide, peut utiliser Ag pour augmenter la vitesse
Nhan Tran

2

Je sais que c'est une vieille question, mais c'est tellement simple que je dois commenter. Mettez ceci dans votre .vimrc

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

Cela actualisera le cache, puis appellera CtrlP. Plus de fichiers manquants.


2
Pourquoi ne pas simplement désactiver la mise en cache avec g:ctrlp_use_caching?
Martin Tournoij
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.