Vimscript:列出的缓冲区数量

时间:2013-07-29 18:28:18

标签: vim viml

在我的vimscript中,我需要计算所有被认为列出/可列出的缓冲区(即所有的缓冲区都有未列出的'u'属性)。

推荐这个值的推荐方法是什么?

3 个答案:

答案 0 :(得分:11)

您可以使用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)'))

答案 1 :(得分:3)

我会通过在数字范围内调用buflisted()直到bufnr("$")给出的最大缓冲区数来实现。像这样:

function! CountListedBuffers()
    let num_bufs = 0
    let idx = 1
    while idx <= bufnr("$")
        if buflisted(idx)
            let num_bufs += 1
        endif
        let idx += 1
    endwhile
    return num_bufs
endfunction

答案 2 :(得分:0)

一个简单的解决方案是使用getbufinfo

在您的视频中:

len(getbufinfo({'buflisted':1}))

或使用以下命令对其进行测试:

:echo len(getbufinfo({'buflisted':1}))
相关问题