sid*_*yll 13
您可以使用bufnr()
获取最后一个缓冲区的编号,然后创建一个从1到该数字的列表,并使用该buflisted()
函数作为测试表达式过滤掉未列出的缓冲区.
" All 'possible' buffers that may exist
let b_all = range(1, bufnr('$'))
" Unlisted ones
let b_unl = filter(b_all, 'buflisted(v:val)')
" Number of unlisted ones
let b_num = len(b_unl)
" Or... All at once
let b_num = len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方案是使用getbufinfo
.
在你的 vim 脚本中:
len(getbufinfo({'buflisted':1}))
Run Code Online (Sandbox Code Playgroud)
或使用命令测试它:
:echo len(getbufinfo({'buflisted':1}))
Run Code Online (Sandbox Code Playgroud)