问题:
现在NERDTree占据了整个窗口-这本身不是问题,但是...
您看到,NERDTree保持“最大化”,您必须调整其大小。
我为解决此问题所做的尝试:
我的方法是标题中所述:删除缓冲区时自动关闭NERDTree,然后在输入另一个时重新打开它。
function! g:CloseNERDTree()
if exists("g:NERDTree") && g:NERDTree.IsOpen()
NERDTreeClose
else
echo "already closed"
endif
endfunction
autocmd BufDelete * call CloseNERDTree()
function! g:OpenNERDTree()
if exists("g:NERDTree") && g:NERDTree.IsOpen()
echo "already open"
else
NERDTree
endif
endfunction
autocmd BufEnter * call OpenNERDTree()
这将导致VIM无法使用,并且我的VimScript知识不足以了解正在发生的事情。
答案 0 :(得分:0)
我无法重现您的特定问题(对我来说,NERDTree总是在侧边栏中打开),但是我认为您的方法(或一个)问题与BufDelete
事件有关。 :help BufDelete
有以下警告:
请勿更改为其他缓冲区,否则会引起问题。
我认为最好在WinEnter
上触发,并使用可见窗口的数量(winnr('$')
)进行检查,例如这样(未测试):
function! OnWinEnter()
if winnr('$') == 1
if exists("g:NERDTree") && g:NERDTree.IsOpen()
NERDTreeClose
endif
else
if ! (exists("g:NERDTree") && g:NERDTree.IsOpen())
NERDTreeOpen
endif
endif
endfunction
autocmd WinEnter * call OnWinEnter()