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

how to check if NERDTree is open in vimscript?

我尝试编写一个命令来保存与 NERDTree 兼容的会话,我需要检查 NERDTree 是否打开,但我找不到任何信息 Google。

NERDTree 在内部将其暂存缓冲区的名称(表示 Vim 中的树内容)存储在制表符本地变量中。使用 bufwinnr(),您可以询问 Vim 缓冲区当前是否加载到 window.

我使用以下函数来检查 NERDTree 是否存在(在当前标签页中;如果您全局需要它,则必须使用 gettabvar() 遍历所有标签)。

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

NERDTree 插件本身已经具有用于此目的的功能。

g:NERDTree.IsOpen()

示例:

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