Как отобразить ctrl / p, очистить кеш и обновить корневой узел NERDTree?

1

Как мне карту <leader>r который очищает кеш CtrlP и обновляет NERDTree-х корневая директория?

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

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

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

Christian Fazzini
источник

Ответы:

2

Обновите CtrlP и NERDTree

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

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

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


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

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

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

Sheharyar
источник
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
Ingo Karkat
источник
Нет ли способа обновить дерево узлов без открытого окна / буфера NERDTree?
Christian Fazzini
Вы должны спросить у автора плагина точный ответ (или просмотреть (довольно сложные) источники), но обычно это не так, поскольку большинство команд Vim работают только с текущим буфером.
Ingo Karkat