当我使用(位于目录 A 中的)
但是如果我在另一个目录(目录 B)中打开了一个以上的文件,则它不会刷新以显示目录 B 的内容(而仍然显示目录 A 的内容)。
NERDTree
在 vim 中打开一个文件时,它运行良好。但是如果我在另一个目录(目录 B)中打开了一个以上的文件,则它不会刷新以显示目录 B 的内容(而仍然显示目录 A 的内容)。
NERDTree
能否自动刷新呢?我使用一种自定义的映射方式,而不是切换到 NERDTree
窗口、按下 R,然后再切回来,它可以帮我完成这个操作:
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>
一旦设置好,按下 Leader + r 就会刷新 NERDTree
。
注意:由于我还使用 CtrlP,我的实际键位图在刷新 NERDTree 后还有最后一步刷新 CtrlP
我厌恶手动刷新我的NERDTree插件的想法。因此,我在我的.vimrc
中添加了以下内容:
map <C-n> :call NERDTreeToggleAndRefresh()<CR>
function NERDTreeToggleAndRefresh()
:NERDTreeToggle
if g:NERDTree.IsOpen()
:NERDTreeRefreshRoot
endif
endfunction
:NERDTreeFind
。 - steinar/
等),我预计这会导致 NERDTree 挂起几分钟。 - shallowThought在打开新文件后,只需输入:NERDTreeFind
命令即可。它将选择NerdTree中当前正在编辑的文件节点。如果该节点不存在,则NerdTree将使用当前文件目录作为根目录初始化一个新树。
您可以使用自动命令来跟踪打开vim时的目录。
au VimEnter * NERDTreeFind
对于任何在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
这样的命令时非常重要。
let NERDTreeChDirMode=2
。 - romainl
r
键即可。 - James M