Vimでウインドウの位置を入れ替える方法(Ctrl-w r/x/K/J/H/L)
分割したウインドウを1回で狙ったレイアウトにするのは難しいです。かといって、いちいち閉じて開き直すのはスマートではありません。位置を入れ替えるキーバインドを覚えておけば、後からレイアウトを調整できます(ウインドウ間の移動と組み合わせるとさらに扱いやすくなります)。
| キー | これだけ覚える |
|---|---|
| Ctrl-w r / Ctrl-w R | 同じ段・列で位置を回転させる |
| Ctrl-w x | 隣のウインドウと中身を入れ替える |
| Ctrl-w K/J/H/L | 端へ移動してレイアウトごと変える |
| Ctrl-w = | 全ウインドウのサイズを揃える |
ウインドウを回転させる
Ctrl-w r " 下/右へ回転
Ctrl-w R " 上/左へ回転
┌───┬───┬───┐
│A │ B │ C │
└───┴───┴───┘
┌───┬───┬───┐
│ C │A │ B │
└───┴───┴───┘
同じ段・列にあるウインドウ同士で、位置を1つずつ回転させます。カーソルは同じ内容(上の例ではA)にとどまったまま、位置だけが隣へ動きます。水平分割と垂直分割が混ざっている場合は、カレントウインドウと同じ段・列の中だけで回転が行われるため、意図しない方向のウインドウまで巻き込まれる心配はありません。
隣のウインドウと入れ替える
Ctrl-w x
Ctrl-w Ctrl-x
カレントウインドウと次(1つ下)のウインドウの中身を入れ替えます。次のウインドウがない場合は前(1つ上)のウインドウと入れ替わります。カウントを指定すれば、上からN番目のウインドウと入れ替えられます。回転と違い、こちらは画面上のカーソルの位置(枠)自体は動きません。そこに表示される中身が、入れ替えた相手のものに変わります。
端に移動して最大化する
回転や入れ替えだけでは実現できないレイアウト変更には、次のキーが使えます。
Ctrl-w K " 最上段へ移動し、幅を最大化
Ctrl-w J " 最下段へ移動し、幅を最大化
Ctrl-w H " 最左列へ移動し、高さを最大化
Ctrl-w L " 最右列へ移動し、高さを最大化
これは実質的に、カレントウインドウをいったん閉じてからtopleft splitのような形で新しく開き直すのと同じ動作です。垂直分割になっているウインドウを水平分割のレイアウトに変えたい(あるいはその逆)、といった場面で使えます。新しいウインドウにはカレントウインドウの内容がそのまま表示される点は、閉じて開き直す操作と異なります。
タブページへ独立させる
Ctrl-w T
カレントウインドウを新しいタブページとして独立させます。分割が増えすぎて画面が窮屈になったとき、1つだけタブに切り出して整理するのに使えます。カレントタブページにウインドウが1つしかない場合はこのコマンドは失敗します。
サイズを揃える
Ctrl-w =
入れ替えやリサイズをいろいろ試した後、レイアウトを崩しすぎて元に戻すのが面倒になったら、このキーで全ウインドウのサイズをおおよそ均等に揃えられます。ウインドウサイズの細かい調整方法はこちらの記事にまとめています。
4分割で作業していて、あるウインドウだけを大きく見たくなったときはCtrl-w Kやそれと逆方向のキーでレイアウトを組み替えています。試行錯誤して崩れたときはCtrl-w =で一旦リセットしてから調整し直すのが手早いです。マウスでドラッグするより、キーだけでレイアウトが完結するのでホームポジションを崩さずに済みます。
まとめ
ウインドウの入れ替えはCtrl-w r/R/xを使います。レイアウト自体を変えたいならCtrl-w K/J/H/Lです。崩れたらCtrl-w =でリセットできます。