この記事では、Vim / neovim でプラグインを使わずに「ウインドウをカーソル移動させる」ためのキーバインドとコマンドについて、ご紹介します。
[解答] 4種類/26種類のキーバインドと1種類のコマンド
主には、次の4種類になります。細かく言えば、26種類のキーバインドと1種類のコマンドです。
- Vimウインドウの移動
- Vimウインドウの順次移動
- Vimウインドウの特殊移動
- Vimウインドウをコマンドで移動
Vimウインドウの移動
ウインドウを上下左右に移動するには、こちらのキーバインドになります。
キー操作 | 実行内容 |
---|---|
Ctrl-w ↓ Ctrl-w Ctrl-j Ctrl-w j | カーソルを下のウインドウに移動する |
Ctrl-w ↑ Ctrl-w Ctrl-k Ctrl-w k | カーソルを上のウインドウに移動する |
Ctrl-w ← Ctrl-w Ctrl-h Ctrl-w h | カーソルを左のウインドウに移動する |
Ctrl-w → Ctrl-w Ctrl-l Ctrl-w l (小文字L) | カーソルを右のウインドウに移動する |
数字を入力してからキー操作を行うと、その個数分先のウインドウへ移動します。
Vimウインドウの順次移動
TVリモコンのチャンネルキーのように、次/前のウインドウに移動するキーバインドです。
キー操作 | 実行内容 |
---|---|
Ctrl-w w Ctrl-w Ctrl-w | カーソルを次のウインドウに移動する (次=右もしくは下、 下/右にウィンドウがなければ、 一番上/左のウィンドウに移動。) |
Ctrl-w W Ctrl-w Ctrl-W | カーソルを前のウインドウに移動する (前=左もしくは上、 上/左にウィンドウがなければ、 一番下/右のウィンドウに移動。) |
上下に複数ウインドウがある場合は、Zをなぞるような動きをします。
複雑なウインドウ構成だと、こうなります。
Vimウインドウの特殊移動
特定のウインドウへ移動するキーバインドも実装されています。
キー操作 | 実行内容 |
---|---|
Ctrl-w t Ctrl-w Ctrl-t | カーソルを一番左上のウインドウに移動する (Topの頭文字) |
Ctrl-w b Ctrl-w Ctrl-b | カーソルを一番右下のウインドウに移動する (Bottomの頭文字) |
Ctrl-w p Ctrl-w Ctrl-p | カーソルを直前のウインドウに移動する (Previousの頭文字) |
Ctrl-w P | カーソルをプレビューウインドウに移動する (Previewの頭文字、無ければエラー) |
次の動画を見れば、動きがわかるはずです。
Vimウインドウをコマンドで移動
次のコマンドでも移動ができます。
:wincmd {引数} :winc{引数}
Ctrl-w の代わりに :wincmd / :winc を入力するイメージで理解してください。
解説
実は、Ctrl+w w さえ知っておけば最低限の移動はどうにかなります。しかし、ウインドウ間を素早く移動できるようになるには、それ以外のキー操作を覚える必要があります。
ちなみに、異なるバッファのウインドウ間をカーソル移動すると、ビジュアルモードは解除されます。
また、いずれも数を入力してからキーバインドもしくはコマンドを入力すれば、その回数の移動が実行される点も覚えておきましょう。
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vim のヘルプでは下記のように解説されています。
4. ウィンドウ間のカーソル移動 window-move-cursor
CTRL-W <Down> CTRL-W_<Down>
CTRL-W CTRL-J CTRL-W_CTRL-J CTRL-W_j
CTRL-W j カーソルをカレントウィンドウのN個下のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。CTRL-W <Up> CTRL-W_<Up>
CTRL-W CTRL-K CTRL-W_CTRL-K CTRL-W_k
CTRL-W k カーソルをカレントウィンドウのN個上のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。CTRL-W <Left> CTRL-W_<Left>
CTRL-W CTRL-H CTRL-W_CTRL-H
CTRL-W <BS> CTRL-W_<BS> CTRL-W_h
CTRL-W h カーソルをカレントウィンドウのN個左のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。CTRL-W <Right> CTRL-W_<Right>
CTRL-W CTRL-L CTRL-W_CTRL-LCTRL-W_l
CTRL-W l カーソルをカレントウィンドウのN個右のウィンドウに移動。
候補が複数ある場合は、現在のカーソル位置によって選択される。CTRL-W w CTRL-W_wCTRL-W_CTRL-W
CTRL-W CTRL-W カウント指定なし: カーソルをカレントウィンドウの下/右のウィン
ドウに移動。下/右にウィンドウがなければ、一番上/左のウィンド
ウに移動。カウント指定有り: N番目のウィンドウに移動 (ウィンド
ウは左上から右下へと番号が振られる)。ウィンドウの番号を知るに
は bufwinnr() と winnr() を参照。N がウィンドウの個数より
大きい場合、最後のウィンドウへ移動する。CTRL-W_W
CTRL-W W カウント指定なし: カーソルをカレントウィンドウの上/左のウィン
ドウに移動。上/左にウィンドウがなければ、一番下/右のウィンド
ウに移動。カウント指定有り: N番目のウィンドウに移動
(CTRL-W w と同様)。CTRL-W t CTRL-W_tCTRL-W_CTRL-T
CTRL-W CTRL-T カーソルを一番左上のウィンドウに移動。CTRL-W b CTRL-W_bCTRL-W_CTRL-B
CTRL-W CTRL-B カーソルを一番右下のウィンドウに移動。CTRL-W p CTRL-W_pCTRL-W_CTRL-P
CTRL-W CTRL-P カーソルを直前の(最後にアクセスしていた)ウィンドウに移動。CTRL-W_PE441
CTRL-W P プレビューウィンドウに移動。プレビューウィンドウがない場合には
エラーになる。
{+quickfix 機能なしでコンパイルされた場合には使用できない}ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッ
ファを表示していない場合、ビジュアルモードは終了する。ウィンドウが同じバッファ
を表示している場合、カーソル位置は選択領域が保たれるようにセットされる。:winc:wincmd
以上のコマンドは “:wincmd” によっても実行することができる::[count]winc[md] {arg}
windows – Vim日本語ドキュメント
CTRL-W [count] {arg} を実行するのと同じ。例:
:wincmd j 下のウィンドウに移動する。
このコマンドは (CursorHold 自動コマンドイベントのため) ノー
マルモードが利用できないときやノーマルコマンドが不便なときに有
効である。
count はウィンドウ番号であってもよい。例:
:exe nr . “wincmd w” これは “nr” 番のウィンドウへ移動する。
こちらは、Vim上では下記のコマンドでヘルプを確認できます。
:help CTRL-W_j :help CTRL-W_CTRL-j :help CTRL-W_k :help CTRL-W_CTRL-k :help CTRL-W_h :help CTRL-W_CTRL-h :help CTRL-W_l :help CTRL-W_CTRL-l :help CTRL-W_w :help CTRL-W_CTRL-w :help CTRL-W_t :help CTRL-W_CTRL-T :help CTRL-W_b :help CTRL-W_CTRL-B :help CTRL-W_p :help CTRL-W_CTRL-P :help CTRL-W_P :help :winc :help :wincmd
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vim関連の参考書籍
こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。