如何映射ctrl/p清除缓存并刷新NERDTree根节点?

如何映射ctrl/p清除缓存并刷新NERDTree根节点?

我如何映射<leader>r清除 CtrlP 的缓存并刷新NERDTree 的根目录?

伪代码,我有:

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

CtrlPClearCache清除缓存,但是我还没有找到一个命令来刷新 NERDTree 的根节点,而不在 NERDTree 窗口中。

答案1

刷新 CtrlP 和 NERDTree

我使用自定义键映射来刷新NERDTreeCtrlP

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)

答案2

我猜你必须聚焦 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

相关内容