Vimのタブバーを表示/非表示にする(showtabline)
タブを1つしか開いていないのに、画面上部にタブバーが常に表示されて場所を取っていました。複数タブを開いたときだけ表示されれば十分なのに、と思って調べたらshowtablineという設定で制御できることが分かりました。
目次(11項目)
3段階の設定値
| 値 | 動作 |
|---|---|
0 | 常に非表示 |
1 | タブが2個以上のときだけ表示 |
2 | 常に表示 |
set showtabline=1
ステータスラインのlaststatusと同じ考え方の設定で、こちらはタブバー版だと考えると理解しやすくなります。多くの人にとって実用的なのは1で、普段はタブバーを表示せず、複数タブを開いたときだけ自動的に現れるようにできます。
showtabline=2 でタブを2枚開いた状態。最上部の行がタブバーGUI版とターミナル版で見え方が違うことがある
gVimのようなGUI版では、タブバーがOSのウィンドウ装飾に近い見た目で表示されることがあり、ターミナル版とは印象が異なる場合があります。両方の環境を行き来する人は、設定は共通でも見た目の違いに戸惑わないよう、一度両方の表示を確認しておくと安心です。
タブを使わない運用なら非表示でよい
ウィンドウ分割やバッファ切り替えを中心に使い、タブ自体をほとんど使わない運用をしているなら、0にして常時非表示にしてしまっても困りません。逆にブラウザのような感覚でタブを多用するなら、2で常に表示させておいたほうが今開いているタブの数を把握しやすくなります。
ステータスラインの設定とセットで見直す
タブバーとステータスラインは見た目が近く、両方フル表示にすると画面の縦幅を圧迫しやすくなります。laststatusの設定とあわせて、自分の作業スタイルに合った組み合わせを一度整理しておくと、余分な設定変更を繰り返さずに済みます。
タブバーの表示内容をカスタマイズする
showtablineは表示するかどうかのオン・オフだけを制御する設定で、タブバーに何を表示するかはtablineオプションで別途指定します。デフォルトのままでも十分実用的ですが、各タブに表示するファイル名の形式を変えたい場合はこちらをカスタマイズすることになります。
showtabline=1で「必要なときだけ表示」にしておくのが無難です。タブを多用する運用なら常時表示(2)に切り替えても構いません。
タブを開くたびに画面の一番上に細長いバーが出るのが気になっていましたが、showtabline=1にしてからは普段は表示されず、必要なときだけ自然に現れるようになりました。画面を1行分でも広く使いたい人には地味に効くと思います。laststatusとあわせて見直したことで、画面全体の余白のバランスも良くなりました。
ターミナルマルチプレクサとの役割分担
tmuxやScreenのようなターミナルマルチプレクサを併用している場合、そちら側にもタブ・ウィンドウ切り替えの表示があります。両方でタブ的な表示が重なると画面が煩雑になるので、どちらの機能で画面を切り替える運用にするかをあらかじめ決めておくと、表示の重複に悩まされずに済み、画面全体の情報量も整理されます。
タブバーに何を出すかは tabline が決める
showtabline は表示するかどうかだけを制御し、中身は tabline オプションが持っています。既定ではファイル名と変更の印が出ますが、書き換えれば番号やディレクトリ名を出せます。
:set tabline? " 空なら既定の表示が使われる
set tabline=%!MyTabLine()
%! は関数を呼んで、その戻り値を表示に使うという書き方です。凝った表示にしたいならこの形になりますが、書くのは手間なので、既定の表示で足りるなら触らないほうが無難です。
タブとバッファを取り違えない
Vimのタブは他のエディタと意味が違います。他のエディタのタブが「開いているファイル」を指すのに対し、Vimのタブは「ウィンドウの並べ方」を指します。1つのタブの中に複数のウィンドウを置けて、同じファイルを複数のタブで開くこともできます。
そのため、開いているファイルの数とタブの数は一致しません。ファイルの一覧を見たいなら :ls でバッファを見ます。タブバーが1つしか出ていなくても、10個のファイルを開いている状態はごく普通にあります。
この違いを知らないままタブを増やしていくと、同じファイルが別のタブで開かれて編集が混乱します。詳しくはバッファ・ウィンドウ・タブの違いにまとめています。
GUI版では別のオプションになる
gVimではタブバーがOSの部品として描かれることがあり、そのときは tabline ではなく guitablabel が表示内容を決めます。ターミナル版と同じ設定を書いても効かない場合はこちらです。
set guitablabel=%t " ファイル名だけを出す
set guioptions-=e " GUIのタブをやめてテキストのタブバーにする
guioptions から e を外すと、GUIでもターミナルと同じテキストのタブバーになります。両方の環境で見た目を揃えたいときは、この指定を入れておくと設定が1本化できます。
まとめ
タブバーの表示はshowtablineで3段階に制御できます。タブの使用頻度に応じて選べば、画面を無駄なく使えます。タブそのものの開き方・切り替え方はタブ操作の記事にあります。