[Vim問題] ウインドウを入れ替える方法は?

ウインドウを入れ替える方法

この記事では、Vim / neovim でプラグインを使わずに「ウインドウを入れ替える」ためのキーバインドについて、ご紹介します。

[解答] Ctrl-w r / Ctrl-w R

Vimはウインドウ分割を気軽にできるのは利点の1つですが、一発で自分の考えるレイアウトにするには慣れが必要です。また、狙った場所にウインドウを配置したいと思っても、開いて閉じて開いて…とやっていくのはスマートではありません。

そこで、分割したウインドウを自由自在に入れ替えられるようになりましょう。

Vimウインドウの入れ替え

ウインドウを上下左右に移動するには、こちらのキーバインドになります。

キー操作実行内容
Ctrl-w r
Ctrl-w Ctrl-r
ウインドウ位置を下/右へ回転させる
(同じ段/列のみ)
Ctrl-w Rウインドウ位置を上/左へ回転させる
(同じ段/列のみ)
Ctrl-w x
Ctrl-w Ctrl-x
次のウインドウと入れ替える

なかなか字面ではわかりづりらいと思いますが、次の動画を見るとわかるはずです。

ウインドウを左右に入れ替える
ウインドウを左右に入れ替える

たくさんあるとウインドウがあると左右のみで、上下には移動できません。ウインドウが2つしか無ければ、上下に移動させることができます。

ウインドウを上下に入れ替える
ウインドウを上下に入れ替える

このように入れ替えで左右の位置は変更できます。上下は仕方がないかもしれません。しかし、狙ったウインドウ分割のレイアウトにするには、次の方法も知っておく必要があります。

Vimウインドウのレイアウト変更

キー操作実行内容
Ctrl-w Kウィンドウを最上段に移動し、幅を最大にする
Ctrl-w Jウィンドウを最下段に移動し、幅を最大にする
Ctrl-w Hウィンドウを最左列に移動し、幅を最大にする
Ctrl-w Lウィンドウを最右列に移動し、幅を最大にする
Ctrl-w Tウィンドウを新しいタブページへ移動する

こちらも字面では分かりづらいですが、次の動画を見れば理解できるはずです。

ウインドウを上下左右の端に移動して最大化
ウインドウを上下左右の端に移動して最大化

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

  • 利用頻度[star rate=2]
  • 便利さ[star rate=3]
  • 覚え易さ[star rate=4]

関連するVimヘルプ

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

5. ウィンドウの移動                                     window-moving

CTRL-W r                                CTRL-W_r CTRL-W_CTRL-R E443
CTRL-W CTRL-R   ウィンドウ位置を下/右へ回転させる。1番のウィンドウは2番目に、
                2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。
                カーソルは同じウィンドウにとどまる。
                この移動はカレントウィンドウと同じ段/列の中だけで行われる。

CTRL-W_R
CTRL-W R        ウィンドウ位置を上/左へ回転させる。1番のウィンドウは2番目に、
                2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。
                カーソルは同じウィンドウにとどまる。
                この移動はカレントウィンドウと同じ段/列の中だけで行われる。

CTRL-W x                                        CTRL-W_x CTRL-W_CTRL-X
CTRL-W CTRL-X   カウント指定なし: カレントウィンドウと次(1つ下)のウィンドウを
                入れ替える。次のウィンドウがない(カレントウィンドウが一番下の)
                場合は、前(1つ上)のウィンドウと入れ替える。
                カウント指定有り: カレントウィンドウと上からN番目のウィンドウ
                (一番上は1番目)を入れ替える。カーソルは入れ替えた相手のウィン
                ドウに移動する。
                水平分割と垂直分割が混ざっている場合には、カレントウィンドウと
                同じ段/列の中だけで入れ替えが行われる。

以下のコマンドはウィンドウのレイアウトを変更するために使える。例えば、2つの垂
直分割されたウィンドウがある場合、CTRL-W K はそれらを水平分割に変更する。
CTRL-W H はその逆を行う。

CTRL-W_K
CTRL-W K        カレントウィンドウを最上段に移動し、幅を最大にする。これは、カ
                レントウィンドウを閉じ、それから “topleft split” で別のウィン
                ドウを作るのと同様で、違いは新しいウィンドウにカレントウィンド
                ウの内容が表示されるということだけである。

CTRL-W_J
CTRL-W J        カレントウィンドウを最下段に移動し、幅を最大にする。これは、カ
                レントウィンドウを閉じ、それから “botright split” で別のウィン
                ドウを作るのと同様で、違いは新しいウィンドウにカレントウィンド
                ウの内容が表示されるということだけである。

CTRL-W_H
CTRL-W H        カレントウィンドウを最左列に移動し、高さを最大にする。これは、
                カレントウィンドウを閉じ、それから “:vert topleft split” で別
                のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント
                ウィンドウの中身が使われるということだけである。

CTRL-W_L
CTRL-W L        カレントウィンドウを最右列に移動し、高さを最大にする。これは、
                カレントウィンドウを閉じ、それから “:vert botright split” で別
                のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント
                ウィンドウの中身が使われるということだけである。

CTRL-W_T
CTRL-W T        カレントウィンドウを新しいタブページへ移動する。カレントタブ
                ページにウィンドウが1つしかないときは、このコマンドは失敗す
                る。カウントが指定されると、その番号のタブページの前に新しいタ
                ブページが開く。指定されないときはカレントタブページの後ろに開
                く。

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

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

:help window-moving
:help CTRL-W_r
:help CTRL-W_CTRL-R
:help CTRL-W_R
:help CTRL-W_x
:help CTRL-W_CTRL-X
:help CTRL-W_K
:help CTRL-W_J
:help CTRL-W_H
:help CTRL-W_L
:help CTRL-W_T

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

Vim関連の参考書籍

こちらの書籍が参考になります。

[temp id=3]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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