56

当我使用 (Directory A in) 在 vi​​m 中打开文件时NERDTree,它运行良好。

但是,如果我在另一个目录(目录 B)中再打开一个文件,它不会刷新以显示目录 B 的内容(虽然它仍然显示目录 A)。

可以NERDTree自行自动刷新吗?

4

6 回答 6

94

https://gist.github.com/geekontheway/2667442:只需按rR键刷新当前树。可以映射到自动刷新.vimrc

于 2013-10-05T11:41:57.897 回答
9

刷新 NERDTree 的键盘映射

我没有切换到NERDTree窗口,点击R并切换回来,而是使用了一个自定义地图来为我完成它:

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

设置后,按Leader+r将刷新NERDTree


注意:由于我也使用了 CtrlP,所以我的实际键映射在刷新 NERDTree 后还有最后一步刷新 CtrlP

于 2016-10-22T21:39:07.200 回答
5

打开新文件后,只需发出:NERDTreeFind命令。它将选择 NerdTree 中的当前编辑文件节点。如果该节点不存在,则 NerdTree 将初始化一棵新树,其根为当前文件的目录。

您可以在打开 vim 时使用自动命令来跟踪目录。

au VimEnter * NERDTreeFind

于 2011-12-22T07:07:59.660 回答
2

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.

于 2021-01-15T20:47:48.920 回答
2

对于在 2016 年看到此内容的任何人,这对我有用:

autocmd CursorHold,CursorHoldI * call NERDTreeFocus() | call g:NERDTree.ForCurrentTab().getRoot().refresh() | call g:NERDTree.ForCurrentTab().render() | wincmd w

享受!

于 2016-09-16T06:58:48.387 回答
1

无论打开什么新文件,NerdTree 都会一直指向最初打开 vim 的目录。

要更改它,请将光标放在 NerdTree 窗口内所需的目录节点上,然后按cd

NerdTree 将在命令行中确认目录更改:

NERDTree:CWD 现在是:[此处的新目录]

请注意,这通常也会更改 vim 的工作目录,这在运行诸如:edit somefile.

于 2011-12-21T01:52:57.247 回答