ノーマルモードでカーソルを移動するには h
, l
, j
, k
コマンドを使用します。キーボードのホームポジションから手を離さなくてもカーソル移動できるように設計されています。10j
と打つと10行下に移動します。
[N]h : N文字左に移動 (<Left>, <BS>, Ctrl-hでも可) [N]l : N文字右に移動 (<Right>, <Space>でも可) [N]j : N行下に移動 (<Down>, Ctrl-n, Ctrl-j, <NL>でも可) [N]k : N行上に移動 (<Up>, Ctrl-pでも可)
挿入モードでは下記を使用します。
<Right> : 1文字右に移動 <Left> : 1文字左に移動 <Up> : 1行上に移動 <Down> : 1行下に移動 Ctrl-g k : 1行上の行頭に移動 (Ctrl-g Ctrl-k, Ctrl-g <Up>でも可) Ctrl-g j : 1行下の行頭に移動 (Ctrl-g Ctrl-j, Ctrl-g <Down>でも可)
下記は j
, k
とほぼ同等ですが、1行が複数行にまたがって表示されている場合の動作が異なります。
[N]gj : N行下に移動 (g<Down>でも可) [N]gk : N行上に移動 (g<Up>でも可)
下記なども使用できます。
[N]+ : N行下の行頭に移動 (Ctrl-m, <CR>でも可) [N]- : N行上の行頭に移動 [N]_ : N-1行下の行頭に移動 [N]$ : N-1行下の行末に移動 (<End>でも可)
0 : 現在の行の行頭に移動 (<Home>でも可) ^ : 現在の行の行頭(空白以外)に移動 $ : 現在の行の行末に移動(<End>でも可)
g0 : 画面に表示されている範囲の行頭に移動 (g<Home>でも可) g^ : 画面に表示されている範囲の行頭(空白以外)に移動 g$ : 画面に表示されている範囲の行末に移動 (g<End>でも可) gm : 現在の行の(画面の横幅の)中央に移動 gM : (画面の横幅に関係なく)現在の行の中央に移動
[N]| : 現在の行の行頭からN文字目の位置に移動
[N]fChar : 行中のN個前方のCharに移動 [N]FChar : 行中のN個後方のCharに移動 [N]tChar : 行中のN個前方のCharの直前に移動 [N]TChar : 行中のN個後方のCharの直前に移動
[N]; : 直前に実行した f, F, t, TコマンドをN回実行 [N], : 直前に実行した f, F, t, Tコマンドを逆方向にN回実行
[N]w : N個先の単語の先頭に移動(Word) (Ctrl-Right, Shift-Rightでも可) [N]b : N個前の単語の先頭に移動(Begin) (Ctrl-Left, Shift-Leftでも可) [N]e : N個先の単語の末尾に移動(End) [N]ge : N個前の単語の末尾に移動(Go End)
[N]W : w と同様だが空白のみを単語の区切りとみなす [N]B : b と同様だが空白のみを単語の区切りとみなす [N]E : e と同様だが空白のみを単語の区切りとみなす [N]gE : ge と同様だが空白のみを単語の区切りとみなす
空行を文の区切りとみなし、空行または文の文頭に移動します。
[N]( : N個前の文の文頭または空白行に移動 [N]) : N個先の文の文頭または空白行に移動
空行を段落の区切りとみなし、空行の先頭または末尾に移動します。
[N]{ : N個前の空行の末尾に移動 [N]} : N個先の空行の先頭に移動
1文字目が {
である行と }
である行の間をセクションと見なし、{
や }
の位置に移動します。C言語などの関数単位の移動に便利です。
[N][[ : N個前の行頭{
に移動 [N]]] : N個先の行頭{
に移動 [N][] : N個前の行頭}
に移動 [N]][ : N個先の行頭}
に移動
'' : 最後のジャンプの前にいた行の先頭の文字へ移動 '( : 現在の文の文頭がある行の先頭の文字へ移動 ') : 現在の文の文末がある行の先頭の文字へ移動 '{ : 現在の段落の最初の行の先頭の文字へ移動 '} : 現在の段落の最後の行の先頭の文字へ移動
`( : 現在の文の文頭へ移動 `) : 現在の文の文末へ移動 `` : 最後のジャンプの前にいた位置へ移動 `{ : 現在の段落の最初へ移動 `} : 現在の段落の最後へ移動
[N]gg : ファイルのN行目に移動(N省略時はファイルの先頭)(Go) (Ctrl-Homeでも可) [N]G : ファイルのN行目に移動(N省略時はファイルの末尾)(Go) (Ctrl-Endでも可) [N]% : ファイルの N パーセントの位置に移動(%)
[N]H : 画面に表示されている範囲の先頭からN行目に移動(Head) [N]L : 画面に表示されている範囲の最終行にN行目に移動(Last) M : 画面に表示されている範囲の中央行に移動(Middle)
% : カーソルが括弧文字にあるとき、対応する括弧に移動 [( : 前方の対応する ( の位置に移動 ]) : 後方の対応する ) の位置に移動 [{ : 前方の対応する { の位置に移動 ]} : 後方の対応する } の位置に移動
[N][m : N個前のメソッドの先頭に移動(Java用) [N][M : N個前のメソッドの末尾に移動(Java用) [N]]m : N個先のメソッドの先頭に移動(Java用) [N]]M : N個先のメソッドの末尾に移動(Java用) [N][# : N個先の対応する #if や #ifdef や #else に移動(C言語用) [N]]# : N個先の対応する #else や #endif に移動(C言語用) [N][* : N個先の対応する /* */ コメントの先頭に移動(C言語用) ([/でも可) [N]]* : N個先の対応する /* */ コメントの末尾に移動(C言語用) (]/でも可)
[N]go : ファイルの先頭からNバイト目に移動 :goto(:go) N : ファイルの先頭からNバイト目に移動
現在のカーソル位置に a~z、A~Z 1文字のマークをつけ、後からマーク位置に戻ったり、範囲選択の対象とすることができます。例えばノーマルモードで ma
をタイプし、現在のカーソル位置に a
という名前のマークをつけます。別の位置に移動した後、'a
でマーク位置 a
に戻ることができます。
mMark : 現在のカーソル位置にマーク Mark をつける。Mark は1文字の英字 `Mark : マーク Mark の位置にジャンプする 'Mark : マーク Mark の位置の行頭にジャンプする
また、{motion} 機能と組み合わせて、ある行に ma
でマークをつけ、5行したに下がって d'a
とすることで、5行下からマークした行までの5行を削除することができます。
d'a : カーソル位置からマーク a までの行を削除する y'a : カーソル位置からマーク a までの行をコピー(ヤンク)する
マーク名 a~z は同じファイル内しかジャンプできませんが、マーク名 A~Z であれば別ファイルにジャンプすることもできます。
'[a-z] : 同じファイル内のマーク位置にジャンプする '[A-Z] : マーク位置にジャンプする(別ファイルでも可)
そのほか、下記のマーク名を使用できます。
0~9 : 前回(0)、前々回(1)、前々々回(2)... Vim を終了した位置 " : 前回このファイルを編集した位置 [ : 直前に操作した行の先頭 ] : 直前に操作した行の末尾 < : 直前に選択したビジュアルエリア行の先頭 > : 直前に操作したビジュアルエリア行の末尾 . : 最後に編集した行
:marks : マークの一覧を表示
'
Mark などによるジャンプはジャンプした場所が履歴として記録され、下記で履歴の場所に戻ることができます。
[N]Ctrl-o : N個前のジャンプ位置に戻る [N]Ctrl-i : N個先のジャンプ位置に戻る (<Tab>でも可)
:jumps (:ju) : ジャンプ位置の一覧を表示
grep -rn keyword
の結果を Vim
で開き、該当のファイル位置にジャンプすることができます。
gf : カーソル位置のファイル名にジャンプ fG: カーソル位置のファイル名にジャンプ後、ファイル名に続く行番号に移動
行番号の書き方は下記などで構いません。
filename.txt:123: ... filename.txt 123 ... filename.txt(123) ...
縦方向のスクロールには下記を使用します。
[N]Ctrl-f : Nページ分下にスクロール(Forward) (<PageDoen>, Shift-Downでも可) [N]Ctrl-b : Nページ分上にスクロール(Back) (<PageUp>, Shift-Upでも可) [N]Ctrl-d : N行分下にスクロール(N省略時は半ページ)(Down) [N]Ctrl-u : N行分上にスクロール(N省略時は半ページ)(Up) [N]Ctrl-e : N行分下にスクロール(N省略時は1行) [N]Ctrl-y : N行分上にスクロール(N省略時は1行)
現在のカーソル位置が画面の上部・中央・下部になるように移動します。
zt : カーソル行が画面の上部になるようにスクロール(Top) zz : カーソル行が画面の中央になるようにスクロール zb : カーソル行が画面の下部になるようにスクロール(Bottom) z<Enter> : カーソル行が画面の上部になるようにスクロール後行頭に移動 z. : カーソル行が画面の中央になるようにスクロール後行頭に移動 z- : カーソル行が画面の下部になるようにスクロール後行頭に移動
:set nowrap
の時は横方向のスクロールもできます。
[N]zh : N文字分左へスクロール [N]zl : N文字分右へスクロール zH : ウィンドウ幅の半分左へスクロール zL : ウィンドウ幅の半分右へスクロール
マウスによるスクロールもできます。
<ScrollWheelDown> : 3行下へスクロール <Shift-ScrollWheelDown> : 1画面下へスクロール <ScrollWheelUp> : 3行上へスクロール <Shift-ScrollWheelUp> : 1画面上へスクロール <ScrollWheelLeft> : 6列左へスクロール <Shift-ScrollWheelLeft> : 1画面左へスクロール <ScrollWheelRight> : 6列右へスクロール <Shift-ScrollWheelRight> : 1画面右へスクロール