In my vimscript, I need to get a count of all buffers that are considered listed/listable (i.e. all buffers that do not have the unlisted, 'u', attribute).
What's the recommended way of deriving this value?
You could use bufnr()
to get the number of the last buffer, then create a
list from 1 to that number and filter it removing the unlisted buffers, by
using the buflisted()
function as the test expression.
" 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)'))