[Vim問題] バッファ一覧の記号の意味は?

この記事は約18分で読めます。

この記事では、普段よく使うバッファ一覧の読み方について、詳しくご紹介します。

よく分からなくても利用できますが、慣れるとより使いやすくなる機能ですから、Vim力を上げたい方はぜひ覚えましょう。

スポンサーリンク

解答

バッファ一覧は、次のコマンドを実行して表示します。

:ls

このコマンドで表示された内容を読み解きます。

バッファ一覧の解説
バッファ一覧の解説

①バッファ番号

起動しているVimの中で、バッファごとに割り当てられた番号です。必ず被ることなく、一意です。

こちらの番号を指定して、:b14 や :b13 といった感じでバッファを切り替えることができます。

②指標

バッファの種類や状態を示します。

記号12345表示意味
uリストされていないバッファ
(unlisted-bufferの略)
%カレントウィンドウにあるバッファ
#":e #" や CTRL_^ で使われる代替バッファ
aアクティブバッファ:ロードされていて、
表示されている
h隠れバッファ:ロードされているが、
現在はウィンドウに表示されていない
(hidden-bufferの略)
-'modifiable' がオフのバッファ
=リードオンリーのバッファ
R実行中のジョブありの端末バッファ
F終了したジョブありの端末バッファ
?ジョブなしの端末バッファ
+変更のあるバッファ
x読み込みエラーのあるバッファ

通常表示に○がない表示は、 :ls! といったように[!]が使われたときのみ表示されるバッファを指します。

記号1〜5は同時に並ぶことがあります。例えば、次の通りです。

%+ (変更が保存されていないカレントバッファ)
#h? (代替バッファかつ隠れバッファとなっている端末バッファ)
u= (リストされていないリードオンリーのバファ)

同じ列の記号が並ぶことはありません。(aとhは同時に表示されない、つまり排他的)

以上のように記号を覚えれば、読み解くことは簡単です。

バッファの絞り込み表示

そもそも指定した種類/状態のバッファだけ表示できれば、視認性が良くなります。その場合、次のように指定することで、指定したバッファを含める、もしくは指定したバッファに絞り込んで一覧表示できます。

リストアップされていないバッファを表示する

:ls!
:buffers!
:files!

上記コマンドのいずれでも、状態に "u" と表示されたバッファを表示することができるようになります。

特定の種類のバッファに絞り込んで表示する

:ls [flag]
:files [flag]
:buffers [flag]

[flag] に表示したいバッファの種類を指定します。

記号意味
+変更されたバッファ
-'modifiable' がオフのバッファ
=リードオンリーのバッファ
aアクティブバッファ
uリストに存在しないバッファ
h隠れたバッファ
x読み込みエラーのあるバッファ
%現在のバッファ
#代替バッファ
R実行中のジョブありの複数の端末バッファ
F終了したジョブありの複数の端末バッファ
?ジョブなしの複数の端末バッファ
t最後に使用された時間でソートしたバッファを表示

フラグは複数指定できますが、その場合は"or"ではなく、"and" を意味するので注意が必要です。例えば、次の通りです。

h+ (変更された隠れバッファ)
a+ (変更されたアクティブバッファ)

ファイル名で絞り込んでバッファ一覧を表示する

次のコマンドによって、ファイル名で絞り込むことができます。

:filter /{パターン}/ ls
:filter /{パターン}/ buffers
:filter /{パターン}/ files

いずれでも同じです。また、{パターン}にはファイル名に合致する正規表現を指定することができます。この時は部分一致であって、完全一致ではありませんのでご注意ください。例えば、ファイル名に .vimrc を含むバッファだけを表示させたい場合は、次のような指定ができます。

filter /\.vim/ ls
filter /vim/ ls
filter /vim.*/ ls

このVimコマンドの補足情報

  • 利用頻度5.0
  • 便利さ3.0
  • 覚え易さ2.0

関連するVimヘルプ

Vim のヘルプでは下記のように解説されています。

:files[!] [flags]                                :files
:buffers[!] [flags]                             :buffers:ls
:ls[!] [flags]
                全バッファを表示。例:

                        1 #h   "/test/text"             line 1
                        2u     "asdf"                    line 0
                        3 %a + "version.c"             line 1

                [!] が含まれているときは、バッファリストにないバッファも表示される。

                各バッファは一意の番号が割り当てられている。この番号は変わらな
                いので、":buffer N" や "N CTRL-^" を使ってある特定のバッファへ
                移動できる。Nはバッファの番号である。

                ファイル名には、これらの特別な値が使用される:
                        [Prompt]        prompt-buffer
                        [Popup]         popup-window のバッファ
                        [Scratch]       'buftype' が "nofile"
                        [No Name]       ファイル名が指定されていない
terminal-window バッファの場合、状態が使われる。

                指標 (同じ桁にある文字は互いに排他的):
                u       リストされていないバッファ ([!] が使われたときのみ表示
                        される) unlisted-buffer
                 %      カレントウィンドウにあるバッファ
                 #      ":e #" や CTRL_^ で使われる代替バッファ
                  a     アクティブバッファ:ロードされていて、表示されている
                  h     隠れバッファ:ロードされているが、現在はウィンドウに表
                        示されていない hidden-buffer
                   -    'modifiable' がオフのバッファ
                   =    リードオンリーのバッファ
                   R    実行中のジョブありの端末バッファ
                   F    終了したジョブありの端末バッファ
                   ?    ジョブなしの端末バッファ: :terminal NONE
                    +   変更のあるバッファ
                    x   読み込みエラーのあるバッファ

                [flags] は以下の組み合わせを取る事ができる。
                ただしリストに存在するバッファに限られる:
                     +   変更されたバッファ
                     -   'modifiable' がオフのバッファ
                     =   リードオンリーのバッファ
                     a   アクティブバッファ
                     u   リストに存在しないバッファ ("!" の挙動は上書きされる)
                     h   隠れたバッファ
                     x   読み込みエラーのあるバッファ
                     %   現在のバッファ
                     #   代替バッファ
                     R   実行中のジョブありの複数の端末バッファ
                     F   終了したジョブありの複数の端末バッファ
                     ?   ジョブなしの複数の端末バッファ: :terminal NONE
                     t   最後に使用された時間でソートしたバッファを表示
                フラグの合成は互いの "and" を意味する。例えば:
                     h+   変更された隠れバッファ
                     a+   変更されたアクティブバッファ

                表示されるバッファ名に対して :filter でパターンをマッチさせ
                るには次のようにする:
                        filter /\.vim/ ls

windows - Vim日本語ドキュメント

こちらは、Vim上では下記のコマンドでヘルプを確認できます。

:help ls
:help buffers
:help files

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

Vim力をアップさせるための参考書は?

Vim力をアップさせたい初級Vimmerにとって、こちらを完読することがレベルアップの最短コースになります。ぜひ読みましょう!

古くて新しいUnixのエディタVim――このVimのエディタとしてのコア機能をマスターするためのレシピ集

Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。

Vimは開発者やサーバ管理者だけでなく,幅広いユーザをカバーする強力なテキストエディタです。本書は「もう少し文字入力を楽にしたい」「バッファ操作をもっと強化したい」といった誰しもが抱く要望を,ちょっとしたテクニックやプラグインの導入で改善する「作業効率に特化した逆引きリファレンス」です。日本で名立たる有数のVimハッカーがあらゆる角度から150のTipsを紹介します。さらに最終章では,「anything.el」のVim版である「unite.vim」を作者自ら詳しく解説しています。

こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。

普段Vimを使っている人を対象に,カスタマイズをする際,ちょっとしたことをスクリプトで書く手助けとなる本を企画します。便利さを知ると既存のプラグインをカスタマイズしたり,自分でスクリプトを書いて,自分の使いやすいようにVimエディタを強化したいという欲が出てきます。そこで初心者にも教科書として使えるようにVim scriptの基礎から丁寧に解説します。

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。

プロフィール
管理人
Vim 一郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

\フォローする/
Vim操作方法
\ シェアする /
\フォローする/
スポンサーリンク
関連記事
Vim入門
タイトルとURLをコピーしました