Плагин 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.