まくまくVimノート
カーソル移動の方法いろいろ
2007-01-30

カーソル移動(左右)

h   -- 左へ
l   -- 右へ
0   -- 行頭へ
$   -- 行末へ
5|  -- カレント行の 5 文字目へ
^   -- 最初の表示可能な文字へ

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

gg    -- 1 行目へジャンプ
10gg  -- 10 行目へジャンプ
10G   -- (同上)
G     -- 最終行へジャンプ

:1    -- 1 行目へジャンプ
:10   -- 10 行目へジャンプ
:$    -- 最終行へジャンプ
:$-3  -- 最終行より 3 行上へジャンプ
:+10  -- カレント行から 10 行下へジャンプ

応用例: カーソル位置からファイルの最後までを削除

dG

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

H   -- 画面内の一番上にジャンプ(ホーム行)
3H  -- 画面内の一番上から 3 行目にジャンプ

M   -- 画面内の中央行にジャンプ

L   -- 画面内の一番下にジャンプ
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=(:),{:},[:]
2007-01-30