我如何映射<leader>r
清除 CtrlP 的缓存并刷新NERDTree 的根目录?
伪代码,我有:
map <Leader>r :CtrlPClearCache<cr>g:NERDTreeMapRefreshRoot<cr>
CtrlPClearCache
清除缓存,但是我还没有找到一个命令来刷新 NERDTree 的根节点,而不在 NERDTree 窗口中。
答案1
刷新 CtrlP 和 NERDTree
我使用自定义键映射来刷新NERDTree
和CtrlP
:
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>:CtrlPClearCache<cr>
我已将其映射到Leader+ r,但您可以将它映射到任何您想要的位置。
怎么运行的:
:NERDTreeFocus<cr>
- NERDTree 窗口的变更R
- 刷新根节点<c-w><c-p>
- 返回先前选择的窗口: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