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

Як каже Jeet, ти можеш натиснути, F5але якщо це не працює, ти завжди можеш запустити :CtrlPClearCacheте, що F5повинно працювати.

З документації

: CtrlPClearCache
Очищення кешу поточної робочої каталоги. Те саме, що натиснути всередині CtrlP.
Щоб увімкнути або вимкнути кешування, використовуйте | g: ctrlp_use_caching | варіант.


У мене екрани GNU відображені на моїх клавішах Fn, тому це ідеально - дякую!
LeonardChallis

6

Якщо ви хочете, ви можете автоматично перебрати кеш-пам'ять, коли збереження відбудеться, тому він буде змушений оновитись при наступному використанні.

Помістіть це у своєму vimrc (кредитний документ ):

" 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 для підвищення швидкості
Nhan Tran

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.