Відповіді:
Та сама ідея, що і рішення Хептита, але як єдиний лайнер. Багато інших можливостей можна зробити так: отримайте назву буфера (завдяки карті), видаліть буфери, які відповідають шаблону , /programming/2974192/how-can-i-pare-down- vims-buffer-list-to-only-include-active-buffers / 2974600 # 2974600n і т.д.
echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
Відповіді поки що занадто хакі. Ось вбудований спосіб vim:
len(getbufinfo({'buflisted':1}))
Як завжди, див. Довідку vim ( :h getbufinfo()
) для офіційного пояснення.
Наскільки мені відомо, у Vim немає вбудованого методу, який би це зробив, але ви можете створити функцію:
function! NrBufs()
let i = bufnr('$')
let j = 0
while i >= 1
if buflisted(i)
let j+=1
endif
let i-=1
endwhile
return j
endfunction
Покладіть вище в текстовий файл, його ім'я закінчується на .vim,: джерело, тоді ви можете зробити щось на кшталт:
:let buffer_count = NrBufs()
:echo buffer_count
21 червня зауважте: Якщо у вас є остання версія Vim станом на 2017 рік, відповідь Gid нижче - оптимальне рішення.
Ви шукаєте, можливо, для?
:echo(bufnr('$'))