Vimscript:列出的缓冲区数
在我的vimscript中,我需要获得被认为是已列出/可列出的所有缓冲区的计数(即,没有未列出的“u”属性的所有缓冲区)Vimscript:列出的缓冲区数,vim,viml,Vim,Viml,在我的vimscript中,我需要获得被认为是已列出/可列出的所有缓冲区的计数(即,没有未列出的“u”属性的所有缓冲区) 导出此值的推荐方法是什么?我将通过调用buflisted()来实现,该值的范围为bufnr(“$”给出的最大缓冲区数。大概是这样的: function! CountListedBuffers() let num_bufs = 0 let idx = 1 while idx <= bufnr("$") if buflisted(id
导出此值的推荐方法是什么?我将通过调用
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
函数!CountListedBuffers()
设num_bufs=0
设idx=1
而idx可以使用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)'))
一个简单的解决方案是使用
在vimscript中:
len(getbufinfo({'buflisted':1}))
或使用以下命令对其进行测试:
:echo len(getbufinfo({'buflisted':1}))
我的印象是这个答案并没有完全解决OP的问题。他要求的是“上市”,而不是“未上市”。当然,虽然我知道它是如何联系在一起的。但我相信答案会更简单,我很好奇那会是什么样子编辑:它似乎通过过滤未列出的“out”来回答