Vim コマンド一覧(チートシート)移動・編集・マクロ・ウィンドウ操作
Vim のコマンドを操作別にまとめた一覧表。モード切り替え、移動、編集、テキストオブジェクト、マクロ、レジスタ、バッファとウィンドウ操作まで70個を掲載しています。
この記事の使い方
引くための一覧です。Vim を始めたばかりで「まず何を覚えるか」を知りたい場合は、基本編の記事の方が向いています。
以下はすべて ノーマルモード(Esc を押した状態)で入力します。
モードと保存・終了
| コマンド | 操作 |
|---|---|
| i | 挿入モードに入る |
| O | 上に行を挿入して挿入モード |
| v | ビジュアルモード(文字単位の選択) |
| V | ビジュアルモード(行単位) |
| Ctrl + V | 矩形ビジュアルモード |
| Esc | ノーマルモードに戻る |
| :w | 保存 |
| :q | 終了 |
| :wq | 保存して終了 |
移動
| コマンド | 操作 |
|---|---|
| w | 次の単語へ |
| b | 前の単語へ |
| 0 | 行頭へ |
| $ | 行末へ |
| gg | ファイルの先頭へ |
| G | ファイルの末尾へ |
| % | 対応する括弧へ |
| f{文字} | 行内で前方にその文字へ |
| t{文字} | 行内でその文字の手前へ |
| ; | 直前の f / t を繰り返す |
| zz | カーソル行を画面中央に |
| Ctrl + O | ジャンプリストを戻る |
| Ctrl + I | ジャンプリストを進む |
| m{a-z} | 現在位置にマークを付ける |
| '{a-z} | マークのある行の先頭へ |
| バッククォート{a-z} | マークを付けた位置そのものへ |
f と ; の組み合わせは、行内移動では矢印キーより圧倒的に速くなります。
編集
| コマンド | 操作 |
|---|---|
| dd | 行を削除(カット) |
| yy | 行をコピー(ヤンク) |
| p | カーソルの後にペースト |
| u | 元に戻す |
| Ctrl + R | やり直す |
| . | 直前の変更を繰り返す |
| J | 現在行と次の行を結合 |
| >> / << | 現在行をインデント/解除(ビジュアルモードの選択範囲には > / <) |
| Ctrl + A | カーソル位置の数値を +1 |
| Ctrl + X | カーソル位置の数値を -1 |
ドット(.) は Vim でいちばん費用対効果が高いキーです。「1回やった変更を、場所を変えて繰り返す」が1打鍵で済みます。
テキストオブジェクト
「どこを」と「何をするか」を組み合わせる、Vim の中核になる考え方です。
| コマンド | 操作 |
|---|---|
| ciw | 単語を変更(削除して挿入モード) |
| ci" | ダブルクォートの中を変更 |
| ci( | 丸括弧の中を変更 |
| di{ | 波括弧の中を削除 |
| vi[ | 角括弧の中を選択 |
| ya{ | 波括弧を含めてヤンク |
| dit | HTML タグの中を削除 |
読み方は c(change)/ d(delete)/ y(yank)/ v(select) + i(inside)/ a(around) + 対象。ci" なら「ダブルクォートの内側を変更」。この3文字の組み立てを理解すると、覚える量が一気に減ります。
検索・置換
| コマンド | 操作 |
|---|---|
| /keyword | 前方検索 |
| n | 次の検索結果へ |
| * | カーソル下の単語を前方検索 |
| # | カーソル下の単語を後方検索 |
| :%s/old/new/g | ファイル全体を置換 |
| :g/pattern/d | パターンに一致する行を削除 |
| :v/pattern/d | パターンに一致しない行を削除 |
:g と :v は、ログの絞り込みのような作業で効きます。grep をエディタの中でやるイメージです。
マクロとレジスタ
| コマンド | 操作 |
|---|---|
| qq … q | レジスタ q にマクロを記録 |
| @q | レジスタ q のマクロを実行 |
| @@ | 直前のマクロを再実行 |
| :'<,'>norm @q | 選択した行すべてにマクロを適用 |
| "ayy | 行をレジスタ a にヤンク |
| "ap | レジスタ a からペースト |
| :reg | レジスタ一覧を表示 |
マクロは「1行ぶんの編集を記録して、残り200行に流す」ための道具です。ビジュアルモードで範囲を選んでから :norm @q(入力すると自動で :'<,'> が付きます)まで覚えると、置換では書けない変形も一気に片付きます。
バッファ・ウィンドウ・タブ
| コマンド | 操作 |
|---|---|
| :buffers | バッファ一覧 |
| :bn / :bp | 次/前のバッファへ |
| :bd | バッファを閉じる |
| :sp | 水平分割 |
| :vsp | 垂直分割 |
| Ctrl + W → w | 次のウィンドウへ |
| Ctrl + W → q | ウィンドウを閉じる |
| :tabnew | 新しいタブ |
| gt / gT | 次/前のタブへ |
その他
| コマンド | 操作 |
|---|---|
| :set number | 行番号を表示 |
| :!command | 外部コマンドを実行 |
覚える順番
一覧を上から暗記しようとすると、ほぼ確実に挫折します。順番はこれが現実的です。
- 生き残るための6つ:i / Esc / :w / :q / dd / u
- 移動:w / b / 0 / $ / gg / G
- テキストオブジェクト:ciw と ci" だけ。ここで世界が変わります
- ドット(.) と f + ;
- マクロとレジスタは、同じ編集を10回以上繰り返したくなった日に
3番まで来れば、他のエディタに戻ったときに不便を感じるようになります。そこからは必要に応じて足していけば十分です。