← Vim研究所

Vimでウインドウ間をカーソル移動する方法(Ctrl-w)

2020-01-04 公開 ・ 更新: 2026-08-23

ウインドウを分割しても、間をマウスでクリックして移動していては速度が出ません。Ctrl-w系のキーバインドを覚えておけば、キーボードから手を離さずにウインドウ間を移動できます。

目次(10項目)
キーこれだけ覚える
Ctrl-w + hjkl方向でウインドウ移動
Ctrl-w w / Ctrl-w W次/前のウインドウへ順に移動
Ctrl-w t / Ctrl-w b一番上/一番下へ直接移動
Ctrl-w p直前にいたウインドウへ戻る

方向で移動する

Ctrl-w h   " 左のウインドウへ
Ctrl-w j   " 下のウインドウへ
Ctrl-w k   " 上のウインドウへ
Ctrl-w l   " 右のウインドウへ
BEFORE
┌───┬───┐
│A │ B │
├───┼───┤
│ C │ D │
└───┴───┘
Ctrl-w l
AFTER
┌───┬───┐
│ A │B │
├───┼───┤
│ C │ D │
└───┴───┘

hjklはノーマルモードのカーソル移動と同じ方向感覚なので、覚えやすくなります。矢印キー版(Ctrl-w <Down>等)やCtrlを押しっぱなしにする版(Ctrl-w Ctrl-j等)も同じ動作をします。数字を前置すれば、その数だけ先のウインドウへ移動できます。

要点:まずCtrl-w + hjklだけ覚えれば実務上は十分です。矢印キー版は覚える優先度が低めです。
vsplitで左右に分割した画面。左にapp.js、右にnotes.txtが表示され、カーソルのある右側のステータス行が明るく反転している
Vim 9.1.1752。:vsplit notes.txt のあと Ctrl-w l で右へ移ったところ。ステータス行の明るいほうが今いるウインドウ

次/前のウインドウへ順に移動する

Ctrl-w w   " 次のウインドウへ(右or下、なければ左上へ)
Ctrl-w W   " 前のウインドウへ(左or上、なければ右下へ)

ウインドウが縦横に複雑に並んでいる場合、この移動は「Z」の文字をなぞるような順序で巡回します。方向を意識せず、とにかく次/前へ回したいときに使います。カウントを指定すれば、左上から数えてN番目のウインドウへ直接移動することもできます。

3Ctrl-w w   " 3番目のウインドウへ移動

特定のウインドウへ直接移動する

Ctrl-w t   " 一番左上のウインドウへ(Topの頭文字)
Ctrl-w b   " 一番右下のウインドウへ(Bottomの頭文字)
Ctrl-w p   " 直前にいたウインドウへ(Previousの頭文字)

特にCtrl-w pは、2つのウインドウを行き来しながら作業しているときに重宝します。方向を考えずに「さっきいた場所」へ一発で戻れます。

コマンドでも移動できる

:wincmd j
:winc k

Ctrl-wの代わりに:wincmd(短縮形:winc)を使う書き方です。ノーマルモードが使えない自動コマンドの中などで移動処理を書きたいときに使います。カウントにウインドウ番号を渡して直接移動することもできます。

:exe nr . "wincmd w"   " nr番のウインドウへ移動

まずはこれだけ覚えればよい

種類は多いが、実務ではCtrl-w + hjklCtrl-w pの2系統を押さえておけば大半の場面をカバーできます。異なるバッファのウインドウへ移動するとビジュアルモードは解除される点も覚えておくと安心です。同じバッファを複数ウインドウで表示している場合は、選択範囲が保たれたまま移動先のウインドウでも同じ選択状態が引き継がれます。

使ってみて

3分割・4分割で作業することが多く、最初はCtrl-w wで順番に巡回していましたが、方向を覚えてからはCtrl-w hjklで一発移動できるようになり体感速度が変わりました。Ctrl-w pは、ファイルとターミナルバッファを行き来するときに特に重宝しています。

ウィンドウの位置そのものを動かす

カーソルの移動ではなく、ウィンドウの並びを変えたいときは大文字を使います。Ctrl-w に続けて H J K L を押すと、今のウィンドウがその方向の端へ移り、画面いっぱいに伸びます。

Ctrl-w H   " 左端へ移動して縦いっぱいに
Ctrl-w J   " 下端へ移動して横いっぱいに
Ctrl-w r   " 並び順を回転させる
Ctrl-w x   " 隣のウィンドウと入れ替える

上下に分割したものを左右に並べ直したい、というのはよくある要求で、Ctrl-w L を1回押すだけで済みます。分割し直す必要はありません。

大きさを変える

移動と同じく Ctrl-w から始まるキーで大きさも変えられます。数字を前に付ければ、その量だけ動きます。

Ctrl-w =   " すべて均等な大きさに
Ctrl-w _   " 高さを最大に
Ctrl-w |   " 幅を最大に
5Ctrl-w +  " 高さを5行増やす
5Ctrl-w <  " 幅を5桁減らす

細かく調整するより、Ctrl-w _ で今いるウィンドウを最大にして、必要なときだけ Ctrl-w = で戻すという使い方のほうが手数が少なく済みます。

キーを短くする

Ctrl-w の2打が煩わしいなら、移動だけを1打に割り当てる人が多くいます。Ctrl-h のような組み合わせなら、ノーマルモードで潰しても困りません。

nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

ただし Ctrl-l は本来「画面を描き直す」キーで、Neovimでは検索ハイライトの解除も兼ねています。潰す前に、自分がその機能を使っていないかを確かめてください。空いているキーの探し方は未割り当てキーの記事にまとめています。

まとめ

ウインドウ間の移動はCtrl-w + hjklが基本です。巡回移動にはCtrl-w w、直前の場所へ戻るにはCtrl-w pを組み合わせれば、複雑な分割でも迷わず移動できます。ウインドウの作り方位置を入れ替える方法にまとめています。

関連記事

← Vim研究所 トップへ戻る