web-dev-qa-db-ja.com

vim:バッファの総数

vimで、

:buffers

すべてのバッファの数を同じにします

:ls

、 だが
バッファの総数を取得するにはどうすればよいですか?

11
juanpablo

ヘプタイトのソリューションと同じアイデアですが、ワンライナーとして。他の多くのことがこの方法で行われる可能性があります:バッファの名前を取得します(マップのおかげで)、 パターンに一致するバッファを消去します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)'))
9
Luc Hermitte

これまでの答えはあまりにもハッキーです。これがvimの組み込みの方法です:

_len(getbufinfo({'buflisted':1}))
_

いつものように、公式の説明についてはvimのヘルプ(:h getbufinfo())を参照してください。

12
Gid

私の知る限り、これを行うための組み込みメソッドは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の回答が最適なソリューションです。

4
Heptite

あなたはおそらく探していますか?

:echo(bufnr('$'))
3
Rook

Heptiteのソリューションをコマンドとして使用する場合は、.vimrcファイルに次を追加します。

command BufNum echo len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
2
Andrzej