如何在vimscript中检查NERDTree是否已打开?

9

我试图编写一个与NERDTree兼容的保存会话的命令,但我需要检查NERDTree是否已经打开。尽管我在谷歌上搜索了很多信息,但仍然找不到答案。


请展示一下您尝试过的内容以及哪些没有成功。 - Rabban
2个回答

12

NERDTree插件本身已经有一个用于此目的的函数。

g:NERDTree.IsOpen()

例子:

if exists("g:NERDTree") && g:NERDTree.IsOpen()
    ....
endif

8

NERDTree在Vim中使用一个tab-local变量存储其scratch buffer的名称(该缓冲区表示Vim中的树内容)。通过bufwinnr(),可以询问Vim缓冲区当前是否加载到窗口中。

我使用以下函数检查NERDTree是否存在(在当前选项卡页中;如果需要全局运行,必须使用gettabvar()迭代所有选项卡)。

function! IsNerdTreeEnabled()
    return exists('t:NERDTreeBufName') && bufwinnr(t:NERDTreeBufName) != -1
endfunction

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接