web-dev-qa-db-ja.com

ctrl / pクリアキャッシュをマップしてNERDTreeルートノードを更新するにはどうすればよいですか?

マッピングするにはどうすればよいですか<leader>r CtrlPのキャッシュをクリアして更新します NERDTreeの ルートディレクトリ?

擬似コード、私は持っています:

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

CtrlPClearCacheはキャッシュをクリアしますが、NERDTreeウィンドウを表示せずにNERDTreeのルートノードを更新するコマンドが見つかりません。

2

CtrlPとNERDTreeの両方を更新します

カスタムキーマップを使用して、NERDTreeCtrlPの両方を更新します。

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

私はそれをにマッピングしました Leaderr、しかし、あなたはそれをあなたが望むものにマップすることができます。


仕組み:

  1. :NERDTreeFocus<cr>-- NERDTreeウィンドウへの変更
  2. R-ルートノードを更新します
  3. <c-w><c-p>-前に選択したウィンドウに戻ります
  4. :CtrlPClearCache<cr>-CtrlPキャッシュを更新します

注:再帰的なマップバージョンでのみ機能します(つまり、noremapまたはnnoremapの代わりにmapまたはnmap)

3
Sheharyar

ルートを更新するには、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
2
Ingo Karkat