我尝试编写一个命令以保存与NERDTree兼容的会话,我需要检查NERDTree是否已打开,我无法通过Google找到任何信息。
答案 0 :(得分:8)
NERDTree在tab-local变量中内部存储其临时缓冲区的名称(表示Vim中的树内容)。使用bufwinnr()
,您可以向Vim询问缓冲区当前是否已加载到窗口中。
我使用以下函数检查NERDTree是否存在(在当前标签页中;如果您需要全局,则必须使用gettabvar()
遍历所有标签。)
function! IsNerdTreeEnabled()
return exists('t:NERDTreeBufName') && bufwinnr(t:NERDTreeBufName) != -1
endfunction
答案 1 :(得分:4)
NERDTree插件本身已经具有用于此目的的功能。
g:NERDTree.IsOpen()
示例:
if exists("g:NERDTree") && g:NERDTree.IsOpen()
....
endif