我试图编写一个与NERDTree兼容的保存会话的命令,但我需要检查NERDTree是否已经打开。尽管我在谷歌上搜索了很多信息,但仍然找不到答案。
NERDTree插件本身已经有一个用于此目的的函数。
g:NERDTree.IsOpen()
例子:
if exists("g:NERDTree") && g:NERDTree.IsOpen()
....
endif
NERDTree在Vim中使用一个tab-local变量存储其scratch buffer的名称(该缓冲区表示Vim中的树内容)。通过bufwinnr()
,可以询问Vim缓冲区当前是否加载到窗口中。
我使用以下函数检查NERDTree是否存在(在当前选项卡页中;如果需要全局运行,必须使用gettabvar()
迭代所有选项卡)。
function! IsNerdTreeEnabled()
return exists('t:NERDTreeBufName') && bufwinnr(t:NERDTreeBufName) != -1
endfunction