VIM クイックリファレンス
モード、ナビゲーション、編集、検索、マクロ、バッファ
モード
モードの切り替え
| i | 挿入モード(カーソルの前) |
| a | 挿入モード(カーソルの後) |
| o | 下に行を挿入して挿入モードへ |
| O | 上に行を挿入して挿入モードへ |
| v | ビジュアルモード(文字) |
| V | ビジュアルモード(行) |
| Ctrl+v | 矩形ビジュアルモード |
| : | コマンドラインモード |
| R | 置換モード |
| Esc | ノーマルモードに戻る |
ナビゲーション
文字と行の移動
| h j k l | 左、下、上、右 |
| 0 / ^ | 行頭 / 最初の非空白文字 |
| $ | 行末 |
| w / W | 次の単語 / WORD |
| b / B | 前の単語 / WORD |
| e / E | 単語 / WORD の末尾 |
| f{c} / F{c} | 文字を前方 / 後方に検索 |
| t{c} / T{c} | 文字の直前 / 直後まで前方 / 後方に移動 |
画面とファイルの移動
| gg / G | 最初 / 最後の行へ |
| :{n} | n 行目へ |
| Ctrl+d / Ctrl+u | 半ページ下 / 上 |
| Ctrl+f / Ctrl+b | 1 ページ下 / 上 |
| H / M / L | 画面の上 / 中 / 下 |
| % | 対応する括弧へジャンプ |
編集
挿入と追記
| I | 行頭に挿入 |
| A | 行末に追記 |
| ea | 単語の末尾に追記 |
| gi | 最後の挿入位置に挿入 |
削除と変更
| x / X | カーソル下 / 前の文字を削除 |
| dd | 行を削除 |
| dw | 単語を削除 |
| d$ / D | 行末まで削除 |
| cc / S | 行全体を変更 |
| cw | 単語を変更 |
| c$ / C | 行末まで変更 |
| ci" / ci( | クォート / 括弧内を変更 |
コピーと貼り付け
| yy | 行をヤンク(コピー) |
| yw | 単語をヤンク |
| y$ | 行末までヤンク |
| p / P | カーソルの後 / 前に貼り付け |
| J | 下の行を現在の行に結合 |
アンドゥと繰り返し
| u | アンドゥ |
| Ctrl+r | リドゥ |
| . | 最後のコマンドを繰り返す |
検索と置換
検索
| /pattern | 前方検索 |
| ?pattern | 後方検索 |
| n / N | 次 / 前のマッチへ |
| * | カーソル下の単語を前方検索 |
| # | カーソル下の単語を後方検索 |
置換
:s/old/new/ " replace first on line
:s/old/new/g " replace all on line
:%s/old/new/g " replace all in file
:%s/old/new/gc " replace all, confirm each
ビジュアルモード
選択
| v | 文字選択を開始 |
| V | 行選択を開始 |
| Ctrl+v | 矩形選択を開始 |
| o | 選択の反対側の端へ移動 |
| gv | 直前のビジュアル選択を再選択 |
選択に対するアクション
| d | 選択を削除 |
| y | 選択をヤンク |
| c | 選択を変更 |
| > | 選択をインデント |
| < | 選択のインデントを解除 |
| ~ | 大文字・小文字を切り替え |
| U / u | 選択を大文字 / 小文字に |
バッファとウィンドウ
バッファ
| :ls | 開いているバッファを一覧表示 |
| :bn / :bp | 次 / 前のバッファ |
| :b{n} | バッファ n へ |
| :bd | 現在のバッファを閉じる |
| :e file | 新しいバッファでファイルを開く |
ウィンドウ
| :sp file | 水平分割 |
| :vsp file | 垂直分割 |
| Ctrl+w h/j/k/l | ウィンドウへ移動 |
| Ctrl+w = | ウィンドウサイズを均等化 |
| Ctrl+w q | ウィンドウを閉じる |
タブ
| :tabnew file | 新しいタブでファイルを開く |
| gt / gT | 次 / 前のタブ |
| :tabclose | 現在のタブを閉じる |
レジスタ
レジスタの使用
| "ay | レジスタ a にヤンク |
| "ap | レジスタ a から貼り付け |
| "Ay | レジスタ a にヤンクを追記 |
| :reg | すべてのレジスタを表示 |
特殊レジスタ
| "" | 無名(最後の削除/ヤンク) |
| "0 | 最後のヤンク |
| "+ | システムクリップボード |
| "/" | 最後の検索パターン |
| ". | 最後に挿入したテキスト |
| "_ | ブラックホール(破棄) |
マクロ
記録と再生
| q{a} | レジスタ a へのマクロ記録を開始 |
| q | 記録を停止 |
| @{a} | レジスタ a のマクロを再生 |
| @@ | 最後のマクロを再実行 |
| 5@a | マクロ a を 5 回再生 |
マクロの例
qa " start recording into a
I// " insert // at line start
Esc j " return to normal, move down
q " stop recording
10@a " comment next 10 lines
設定
一般的なオプション
:set number " show line numbers
:set relativenumber " relative line numbers
:set tabstop=4 " tab width
:set expandtab " spaces instead of tabs
:set ignorecase " case-insensitive search
表示と動作
:set wrap / nowrap " toggle line wrapping
:set hlsearch " highlight search matches
:set incsearch " incremental search
:set cursorline " highlight current line
:syntax on " enable syntax highlighting
ファイル操作
保存と終了
| :w | 保存 |
| :w file | 名前をつけて保存 |
| :q | 終了(未保存ならエラー) |
| :q! | 保存せずに終了 |
| :wq / :x / ZZ | 保存して終了 |
| :wa | すべてのバッファを保存 |
| :qa | すべてのバッファを終了 |
ファイル情報と外部コマンド
| Ctrl+g | ファイル情報を表示 |
| :!cmd | シェルコマンドを実行 |
| :r !cmd | コマンドの出力を挿入 |
| :r file | ファイルの内容を挿入 |
テキストオブジェクト
内側と周囲のオブジェクト
| iw / aw | 単語の内側 / 周囲 |
| is / as | 文の内側 / 周囲 |
| ip / ap | 段落の内側 / 周囲 |
| i" / a" | ダブルクォートの内側 / 周囲 |
| i' / a' | シングルクォートの内側 / 周囲 |
| i( / a( | 括弧の内側 / 周囲 |
| i{ / a{ | 波括弧の内側 / 周囲 |
| it / at | HTML タグの内側 / 周囲 |
よく使うコンビ
ciw " change inner word
di" " delete inside quotes
ya{ " yank around braces
vip " select inner paragraph
マークとジャンプ
マーク
| m{a} | カーソル位置にマーク a を設定 |
| 'a | マーク a の行へジャンプ |
| `a | マーク a の正確な位置へジャンプ |
| :marks | すべてのマークを一覧表示 |
ジャンプリスト
| Ctrl+o | 前の位置へジャンプ |
| Ctrl+i | 次の位置へジャンプ |
| :jumps | ジャンプリストを表示 |
| '' | 最後のジャンプ位置へジャンプ |