1

Как мне сопоставить <leader>r который очищает кеш CtrlP и обновляет корневой каталог NERDTree ?

Псевдокод у меня есть:

map <Leader>r :CtrlPClearCache<cr>g:NERDTreeMapRefreshRoot<cr>

CtrlPClearCache очищает кеш, но я не нашел команды для обновления корневого узла NERDTree, не находясь в окне NERDTree.

2 ответа2

2

Обновите CtrlP и NERDTree

Я использую пользовательскую карту ключей для обновления как NERDTree и CtrlP:

nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>:CtrlPClearCache<cr>

Я сопоставил его с Leader + r, но вы можете сопоставить его с тем, что вы хотите.


Как это устроено:

  1. :NERDTreeFocus<cr> - Изменения в окне NERDTree
  2. R - обновляет корневой узел
  3. <c-w><c-p> - возврат к ранее выбранному окну
  4. :CtrlPClearCache<cr> - обновляет кэш CtrlP.

Примечание. Работает только с рекурсивными версиями карты (т. Е. Map или nmap вместо noremap или nnoremap).

1

Я предполагаю, что вы должны сфокусировать окно NERDTree, чтобы обновить рут. Это должно сделать трюк:

nnoremap <Leader>r :CtrlPClearCache<cr>call NERDTreeMapRefreshRoot()<cr>
function! NERDTreeMapRefreshRoot()
    if nerdtree#isTreeOpen()
        call nerdtree#putCursorInTreeWin()
        call nerdtree#invokeKeyMap('R')
        " Go back to previous window.
        wincmd p
    endif
endfunction

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .