この記事では、普段よく使うバッファ一覧の読み方について、詳しくご紹介します。
よく分からなくても利用できますが、慣れるとより使いやすくなる機能ですから、Vim力を上げたい方はぜひ覚えましょう。
解答
バッファ一覧は、次のコマンドを実行して表示します。
:ls
このコマンドで表示された内容を読み解きます。
①バッファ番号
起動しているVimの中で、バッファごとに割り当てられた番号です。必ず被ることなく、一意です。
こちらの番号を指定して、:b14 や :b13 といった感じでバッファを切り替えることができます。
②指標
バッファの種類や状態を示します。
記号1 | 2 | 3 | 4 | 5 | 表示 | 意味 |
---|---|---|---|---|---|---|
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コマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連する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 でパターンをマッチさせ
windows – Vim日本語ドキュメント
るには次のようにする:
filter /\.vim/ ls
こちらは、Vim上では下記のコマンドでヘルプを確認できます。
:help ls :help buffers :help files
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vim力をアップさせるための参考書は?
Vim力をアップさせたい初級Vimmerにとって、こちらを完読することがレベルアップの最短コースになります。ぜひ読みましょう!
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。