vim 如何在NERDTree插件中刷新

ojsjcaue  于 2022-11-24  发布在  其他
关注(0)|答案(6)|浏览(398)

当我用(目录A in)NERDTree在vim中打开一个文件时,它工作得很好。
但是如果我在另一个目录(目录B)中打开另一个文件,它不会刷新以显示目录B的内容(而仍然显示目录A)。
NERDTree可以自动刷新吗?

gcmastyq

gcmastyq1#

https://gist.github.com/geekontheway/2667442开始:只需点击rR键来刷新当前树。可以Map到.vimrc中的自动刷新

wribegjk

wribegjk2#

用于刷新NERDTree的键Map

我没有切换到NERDTree窗口,而是使用一个自定义Map来完成这一任务:

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

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

**注意:**因为我也使用CtrlP,所以实际的键Map最后一步是refresh CtrlP after refreshing NERDTree

7xllpg7q

7xllpg7q3#

我讨厌手动刷新我的NERDTree插件。所以,我把这个添加到我的.vimrc

map <C-n> :call NERDTreeToggleAndRefresh()<CR>

function NERDTreeToggleAndRefresh()
  :NERDTreeToggle
  if g:NERDTree.IsOpen()
    :NERDTreeRefreshRoot
  endif
endfunction

现在,NERDTree在每次打开时都会刷新。

xxe27gdn

xxe27gdn4#

打开新文件后,发出:NERDTreeFind命令。它将在NerdTree中选择当前正在编辑的文件节点。如果该节点不存在,则NerdTree将初始化一个新的树,并将其根目录作为当前文件的目录。
您可以在打开vim时使用autocommand跟踪目录。
Au * NERDTreeFind

yfwxisqw

yfwxisqw5#

对于2016年看到这一点的人来说,这对我很有效:

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

好好享受吧!

qoefvg9y

qoefvg9y6#

无论打开什么新文件,NerdTree都会一直指向最初打开Vim的目录。
要更改它,请将光标放在NerdTree窗口中所需的目录节点上,然后按cd
NerdTree将在命令行中确认目录更改:
NERDTree:CWD现在是:[此处为新目录]
请注意,这通常也会更改vim的工作目录,这在运行:edit somefile等命令时非常重要。

相关问题