Câu trả lời:
Cùng một ý tưởng so với giải pháp của Heptite, nhưng là một lớp lót. Nhiều thứ khác có thể được thực hiện theo cách này: lấy tên của bộ đệm (nhờ vào bản đồ), xóa bộ đệm phù hợp với một mẫu , /programming/2974192/how-can-i-pare-down- vims-buffer-list-to-only-include-active-buffers / 2974600 # 2974600n, v.v.
echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
Câu trả lời cho đến nay là quá hacky. Đây là cách tích hợp của vim:
len(getbufinfo({'buflisted':1}))
Như mọi khi, hãy xem trợ giúp của vim ( :h getbufinfo()
) để được giải thích chính thức.
Theo hiểu biết của tôi, không có phương thức tích hợp nào trong Vim để làm điều này, nhưng bạn có thể tạo một hàm:
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
Đặt ở trên trong một tệp văn bản với tên của nó kết thúc bằng .vim ,: nguồn nó, sau đó bạn có thể làm một cái gì đó như:
:let buffer_count = NrBufs()
:echo buffer_count
Lưu ý ngày 21 tháng 6: Nếu bạn có phiên bản Vim gần đây vào năm 2017, câu trả lời của Gid dưới đây là giải pháp tối ưu.
Bạn đang tìm kiếm có lẽ cho?
:echo(bufnr('$'))