Vim のカーソル移動方法まとめ

カーソル移動(左右)

入力説明
h1 文字左へ
l1 文字右へ
0行頭へ
$行末へ
5|カレント行の 5 文字目へ
^最初の表示可能な文字へ

カーソル移動(行番号指定でジャンプ)

入力説明
gg
:1
1 行目へジャンプ
10gg
10G
:10
10 行目へジャンプ
G
:$
最終行へジャンプ
:$-3最終行より 3 行上へジャンプ
:+10カレント行から 10 行下へジャンプ
応用例: カーソル位置からファイルの最後までを削除
dG

カーソル移動(画面内でジャンプ)

入力説明
H画面内の一番上にジャンプ(ホーム行)
M画面内の中央行にジャンプ
L画面内の一番下にジャンプ
3H画面内の一番上から 3 行目にジャンプ
3L画面内の一番下から 3 行目にジャンプ

カーソル移動(ブロック単位でジャンプ)

入力説明
w次の単語の先頭へ
W次の単語の先頭へ(後続する記号も単語の一部とみなす)
b前の単語の先頭へ
B前の単語の先頭へ(後続する記号も単語の一部とみなす)
e単語の末尾へ
E単語の末尾へ(後続する記号も単語の一部とみなす)
(現在の文の先頭へ
)次の文の先頭へ
{現在の段落の先頭へ(空行で判断)
}次の段落の先頭へ(空行で判断)
[[現在のセクションの先頭へ(行頭にある { を検索)
]]次のセクションの先頭へ(行頭にある { を検索)

wb によるカーソル移動時に、どこまでを単語の切れ目と見なすかは、iskeyword オプションによって設定されています。 現在の設定値を見るには次のようにします。

:set iskeyword?

例えば、次のような値が設定されていることを確認できます。

iskeyword=@,48-57,_,192-255

@ は、C 言語の isalpha()true を返す文字を示しています。 数値は ASCII コードを示しています。 小文字だけを単語に含むことができることを指定するには、次のようにします。

:set iskeyword=a-z

詳しくは、:help 'iskeyword':help 'isfname' で確認してください。

カーソル移動(特殊なジャンプ)

入力説明
Enter次の行の表示可能な先頭文字へ
+次の行の表示可能な先頭文字へ
-前の行の表示可能な先頭文字へ
``ジャンプ前のカーソル位置へ戻る
''ジャンプ前のカーソル位置へ戻る(表示可能な先頭文字へ)

対応する括弧にジャンプする

入力説明
%対になっている括弧へジャンプ

ノーマルモードのとき、括弧の上にカーソルを合わせて % と入力することで、対応する括弧((){}[] など)にジャンプすることができます。 括弧の上にカーソルを合わせなくても、カーソル行に対になっている括弧があれば、そこにジャンプすることができます。 このジャンプは、C 言語のコメントの /**/ にも対応しており、さらに、プリプロセッサの #ifdef#else#endif 間のジャンプにも使用することができます。

デフォルトでは % によりマッチさせる括弧の種類は (){}[] になっていますが、matchpairs オプションで変更することができます。

マッチさせる括弧の設定 (~/.vimrc)
set matchpairs=(:),{:},[:]