в том, с
:buffers
Я получаю количество всех буферов одинаково с
:ls
, но
как я могу получить общее количество буферов?
Та же идея, что и у решения Heptite, но в качестве одного лайнера. Многие другие вещи могут быть сделаны таким образом: получить имя буфера (благодаря карте), уничтожить буферы, которые соответствуют шаблону, https://stackoverflow.com/questions/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,:source it, тогда вы можете сделать что-то вроде:
:let buffer_count = NrBufs()
:echo buffer_count
Примечание от 21 июня: если у вас последняя версия Vim по состоянию на 2017 год, ответ Гида ниже является оптимальным решением.
Вы ищете возможно?
:echo(bufnr('$'))
Если вы хотите использовать решение Heptite в качестве команды, добавьте следующее в ваш файл .vimrc:
command BufNum echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))