当我在vim中使用(目录A in)打开文件时NERDTree,它运行良好.
但是,如果我在另一个目录(目录B)中再打开一个文件,它不会刷新以显示目录B的内容(虽然它仍然显示目录A).
可以NERDTree自动刷新吗?
我没有切换到NERDTree窗口,点击R并切换回来,而是使用为我做的自定义地图:
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>
Run Code Online (Sandbox Code Playgroud)
设置后,按Leader+r将刷新NERDTree。
注意:由于我也使用 CtrlP,所以我的实际键映射在刷新 NERDTree 后还有最后一步刷新 CtrlP
小智 9
我讨厌必须手动刷新我的 NERDTree 插件的想法。所以,我已将其添加到我的.vimrc:
map <C-n> :call NERDTreeToggleAndRefresh()<CR>
function NERDTreeToggleAndRefresh()
:NERDTreeToggle
if g:NERDTree.IsOpen()
:NERDTreeRefreshRoot
endif
endfunction
Run Code Online (Sandbox Code Playgroud)
现在,每次打开 NERDTree 都会刷新。
打开新文件后,只需发出命令:NERDTreeFind。它将选择 NerdTree 中当前编辑的文件节点。如果该节点不存在,则 NerdTree 将初始化一棵新树,并将根作为当前文件的目录。
您可以在打开 vim 时使用自动命令来跟踪目录。
au VimEnter * NERDTreeFind
无论打开什么新文件,NerdTree 都会始终指向最初打开 vim 的目录。
要更改它,请将光标放在 NerdTree 窗口内所需的目录节点上,然后按cd。
NerdTree 将在命令行中确认目录更改:
NERDTree:CWD 现在是:[此处的新目录]
请注意,这通常还会更改 vim 的工作目录,这在运行:edit somefile.