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.