Плагин VIM ctrlp.vim: как повторно сканировать файлы?


152

Я столкнулся с удивительным плагином ctrlp.vim . Это хорошая альтернатива плагину Command-T, который я использовал ранее. Что мне не понравилось в Command-T, так это то, что при повторном запуске файлов после первого запуска vim потребуется около 20-30 секунд.

CtrlP работает намного быстрее, но, похоже, автоматически не сканирует вновь созданные файлы. Как мне вручную запустить повторное сканирование?

Спасибо!


3
На это очень четко ответили в документации.
Марк Уилден

Ответы:


283

Из документации :

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

Это предполагает, что вы уже находитесь в режиме ctrl-p. Обратите внимание, что вы можете нажать F5 в середине запроса, то есть вы можете ввести несколько символов, обнаружить, что он не соответствует недавно обновленному файлу, и нажать F5, чтобы обновить его прямо сейчас. Он автоматически покажет вам совпадение, если файл был только что добавлен в кэш ctrl-p.


105
Обратите внимание, что это должно быть сделано в режиме CTRL-P. Итак, 1. ctrl-p2.F5
Дэвид Кей

1
Почти работает для меня, я вижу, что он обновляется, но не находит новые добавленные файлы
xer0x

1
@ xer0x Убедитесь, что вы находитесь в правильном CWD. Была такая же проблема при использовании NERDTree.
jsbeckr

9
Просто добавьте, что вы не можете искать свой собственный файл во время редактирования.
Дэрил Сантос

58

Как говорит Джит, вы можете нажать, F5но если это не сработает, вы всегда можете запустить :CtrlPClearCacheто, что F5должно бежать.

Из документации

: CtrlPClearCache Очистить
кэш для текущего рабочего каталога. Так же, как нажатие внутри CtrlP.
Чтобы включить или отключить кэширование, используйте | g: ctrlp_use_caching | вариант.


У меня есть экранные окна GNU, связанные с моими клавишами Fn, так что это прекрасно - спасибо!
Леонард Чаллис

6

Если вы хотите, вы можете автоматически уничтожить кеш, когда произойдет сохранение, поэтому он будет обновлен при следующем использовании.

Поместите это в свой vimrc (кредит 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

К сожалению, нет способа автоматически сохранять кеш свежим в фоновом режиме.


2
на сохранение кажется довольно дорогим. Есть ли возможный триггер для создания нового файла?
Алекс Мур-Ниеми

4

Я добавил это в .vimrc, который отключает кеширование ctrlp

g:ctrlp_use_caching = 0


Это, вероятно, лучший и самый точный ответ на оригинальный вопрос. Особенно, если вы находитесь на компьютере (я смотрю на вас, Apple ..), где строке функций требуется альтернативная клавиша-модификатор для доступа.
Девон поцелуй

Мне нравится этот ответ, даже без нашего кеша, ctrp уже достаточно быстр, может использовать Ag для повышения скорости
Нхан Чан

2

Я знаю, что это старый вопрос, но он настолько прост, что я должен комментировать. Поместите это в свой .vimrc

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

Это обновит кеш, а затем вызовет CtrlP. Нет больше отсутствующих файлов.


2
Почему бы просто не отключить кеширование с помощью g:ctrlp_use_caching?
Мартин Турной
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.