Vimで画面分割する方法(:split / :vsplit / :new / :vnew)
Vimの画面分割(ウインドウ分割)の方法は複数あり、「今のファイルを分割するのか、新しいバッファを開くのか」「水平分割か垂直分割か」の2軸で整理すると覚えやすくなります。
目次(12項目)
| キー | これだけ覚える |
|---|---|
| Ctrl-w s | 今のファイルを上下分割 |
| Ctrl-w v | 今のファイルを左右分割 |
| Ctrl-w n | 新規バッファを上下分割で開く |
:vnew | 新規バッファを左右分割で開く(キーバインドなし) |
用語の整理:水平分割と垂直分割
まず混同しやすい用語を確認しておきます。水平分割(split)は画面を上下に分ける分割、垂直分割(vsplit)は画面を左右に分ける分割を指します。コマンド名のvは「vertical(垂直)」の頭文字で、「virtual」の略ではありません。日本語の「水平」「垂直」という言葉と、実際の分割線の向きが直感と逆に感じられることがあるので、最初は混乱しやすいポイントとして意識しておくと安心です。
1. カレントウインドウを水平(上下)分割する
Ctrl-w s
Ctrl-w Ctrl-s
:split
:sp
┌─ file.txt ────────┐ │ │ │ │ └────────────────────┘
┌─ file.txt ────────┐
│ │
├────────────────────┤
│ file.txt │
└────────────────────┘
:split で上下に分けたところ。同じファイルを別の位置で見られる2. カレントウインドウを垂直(左右)分割する
Ctrl-w v
Ctrl-w Ctrl-v
:vsplit
:vsp
左右に分かれた2つのウインドウに同じ内容が表示されます。ワイド画面のモニタでは、こちらのほうが1行あたりの表示幅を確保しやすくなります。
:splitは上下、:vsplitは左右です。vの意味は「vertical」であって「virtual」ではありません。3. 新しい空のバッファを水平分割で開く
Ctrl-w n
Ctrl-w Ctrl-n
:new
既存のファイルを分割するのではなく、空の新規バッファを上下分割で開きます。メモ書きや一時的な作業スペースが欲しいときに使えます。
4. 新しい空のバッファを垂直分割で開く
:vnew
:vne
同じく空の新規バッファを、今度は左右分割で開きます。こちらはキーバインドがなく、コマンドのみで実行します。
| 既存ファイルを分割 | 新規バッファを開く | |
|---|---|---|
| 水平(上下) | :split | :new |
| 垂直(左右) | :vsplit | :vnew |
ファイルを指定して開く
いずれのコマンドも、末尾にファイル名を指定すればそのファイルを分割先で開けます。
:split ~/notes/todo.md
:vsplit config.lua
分割したウインドウを閉じる
分割したウインドウを閉じる方法は複数あり、Vimごと終了するか分割だけ解消するかで挙動が変わります。詳しくはウインドウを閉じる4つの方法の記事にまとめています。ウインドウ間の移動はこちらの記事、位置の入れ替えはこちらの記事を参照してください。
最初は:splitと:vsplitの上下左右がどちらか毎回迷っていましたが、「vはvertical=左右」と覚えてからは迷わなくなりました。ワイドモニタで作業するときはvsplitで左右に並べ、ノートPCの狭い画面ではsplitで上下に分けるというように、画面比率に応じて使い分けています。
分割する向きを固定する
既定では、水平分割は上に、垂直分割は左に新しいウィンドウが開きます。他のエディタに慣れていると逆に感じるので、設定で入れ替えられます。
set splitbelow " 水平分割は下に開く
set splitright " 垂直分割は右に開く
この2行を入れると、分割するたびに新しいウィンドウが下か右に増えます。読む順番と増える方向が一致するので、多くの人がこの設定を入れています。逆に戻したいときは nosplitbelow と nosplitright です。
分割したときの大きさを決める
分割すると領域が均等に割られますが、片方だけ大きくしたいことがあります。コマンドの前に数字を付けると、その行数(または桁数)で開けます。
:10split " 高さ10行で開く
:40vsplit config.lua " 幅40桁で開く
set winheight=20 " 今いるウィンドウの最低の高さ
set equalalways " 分割のたびに均等に割り直す(既定)
winheight を大きめにしておくと、カーソルのあるウィンドウが自動で広がり、他が縮みます。編集中の場所を広く使いたい人には便利ですが、常に全部を見ておきたい場合は邪魔になります。
分割せずに開いてしまったとき
ファイルを開くつもりで :e を打ってしまい、いま見ていた内容が消えたように見えることがあります。バッファは残っているので :e# か Ctrl-^ で直前のファイルに戻れます。
そのうえで、いま開いているバッファを分割先に出したいなら :sbuffer を使います。:sb 3 のようにバッファ番号を渡せば、そのバッファを新しいウィンドウで開けます。バッファ番号の調べ方はバッファ一覧の記事にまとめています。
まとめ
ウインドウ分割は「今のファイルを分けるか、新規バッファを開くか」と「水平か垂直か」の2軸で4通りです。vが付くコマンドは垂直(左右)分割という点だけ押さえておけば、迷わず使い分けられます。