当我使用 (Directory A in) 在 vim 中打开文件时NERDTree
,它运行良好。
但是,如果我在另一个目录(目录 B)中再打开一个文件,它不会刷新以显示目录 B 的内容(虽然它仍然显示目录 A)。
可以NERDTree
自行自动刷新吗?
从https://gist.github.com/geekontheway/2667442:只需按r
或R
键刷新当前树。可以映射到自动刷新.vimrc
我没有切换到NERDTree
窗口,点击R并切换回来,而是使用了一个自定义地图来为我完成它:
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>
设置后,按Leader+r将刷新NERDTree
。
注意:由于我也使用了 CtrlP,所以我的实际键映射在刷新 NERDTree 后还有最后一步刷新 CtrlP
打开新文件后,只需发出:NERDTreeFind
命令。它将选择 NerdTree 中的当前编辑文件节点。如果该节点不存在,则 NerdTree 将初始化一棵新树,其根为当前文件的目录。
您可以在打开 vim 时使用自动命令来跟踪目录。
au VimEnter * NERDTreeFind
I detested the idea of having to manually refresh my NERDTree plugin. So, I've added this to my .vimrc
:
map <C-n> :call NERDTreeToggleAndRefresh()<CR>
function NERDTreeToggleAndRefresh()
:NERDTreeToggle
if g:NERDTree.IsOpen()
:NERDTreeRefreshRoot
endif
endfunction
Now, NERDTree refreshes every time I open it.
对于在 2016 年看到此内容的任何人,这对我有用:
autocmd CursorHold,CursorHoldI * call NERDTreeFocus() | call g:NERDTree.ForCurrentTab().getRoot().refresh() | call g:NERDTree.ForCurrentTab().render() | wincmd w
享受!
无论打开什么新文件,NerdTree 都会一直指向最初打开 vim 的目录。
要更改它,请将光标放在 NerdTree 窗口内所需的目录节点上,然后按cd
。
NerdTree 将在命令行中确认目录更改:
NERDTree:CWD 现在是:[此处的新目录]
请注意,这通常也会更改 vim 的工作目录,这在运行诸如:edit somefile
.