vimで、
:buffers
すべてのバッファの数を同じにします
:ls
、 だが
バッファの総数を取得するにはどうすればよいですか?
ヘプタイトのソリューションと同じアイデアですが、ワンライナーとして。他の多くのことがこの方法で行われる可能性があります:バッファの名前を取得します(マップのおかげで)、 パターンに一致するバッファを消去します 、 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
6月21日注: 2017年の時点でVimの最新バージョンを使用している場合、以下のGidの回答が最適なソリューションです。
あなたはおそらく探していますか?
:echo(bufnr('$'))
Heptiteのソリューションをコマンドとして使用する場合は、.vimrcファイルに次を追加します。
command BufNum echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))