最近、SSHなどでサーバーをいじるのだが、viコマンドをうっかり忘れるので基本コマンドをまとめておく。
モード操作
| [ESC] | 初期モードに戻る |
| i | 挿入(insert)モード※カーソルの前 |
| a | カーソルの後から挿入(insert)モード開始 |
| A | 行の末尾から挿入(insert)モード開始 |
| o | 下に新しい行を追加して挿入(insert)モード開始 |
| O | 上に新しい行を追加して挿入(insert)モード開始 |
| 3c | 3文字削除して挿入(insert)モード開始 |
| cc | カーソルのある行を削除して挿入(insert)モード開始 |
| R | 上書き(REPLACE)モード ※文字が置き換わる |
| v | ビジュアル(VISUAL)モード ※コピペ等に使う |
| [Ctrl] + v | 矩形選択(VISUAL BLOCK)のビジュアルモード |
行移動
| gg | 最初の行 |
| 100G | 100行目 |
| G | ファイルの最終行 |
| H | 画面の最初の行(Home) |
| M | 画面の中央の行(Middle) |
| L | 画面の最後の行(Last) |
カーソル移動
| h | カーソルを1文字左へ |
| j | カーソルを1行下へ |
| k | カーソルを1行上へ |
| l | カーソルを1文字右へ |
| w | 次の単語 |
| b | 前の単語 |
| f(文字) | カーソルがある行の(文字)に移動(find) |
| F(文字) | カーソルがある行の(文字)に移動(逆方向find) |
| 0 | 行の先頭 |
| $ | 行の最後 |
| % | 対応する括弧に移動 |
ページ移動
| [Ctrl] + f | page down |
| [Ctrl] + d | page down 1/2 |
| [Ctrl] + b | page up |
| [Ctrl] + u | page up 1/2 |
削除
| 3d[space] | 3文字を削除 |
| dd | 行を削除 |
| 3dd | 3行を削除 |
コピー
| 3y[space] | 3文字をコピー |
| yy | 行をコピー |
| 3yy | 3行をコピー |
ペースト
| p | カーソルの後にペースト |
| P | カーソルの前にペースト |
複合 ※組み合わせて色々使える(以下は$の例)
| c$ | カーソルの位置から行末までを削除して挿入(insert)モード開始 |
| d$ | カーソルの位置から行末までを削除 |
| y$ | カーソルの位置から行末までをコピー |
検索と置換
| /文字列 | カーソル以降の文字列を検索 |
| ?文字列 | カーソルより前の文字列を検索 |
| n | 次の検索結果へ移動 |
| N | 前の検索結果へ移動 |
編集
| . | 直前の変更を繰り返す |
| u | Undo |
| [Ctrl] + r | Redo |
行番号
| :set number | 行番号を表示 |
| :set nonumber | 行番号を非表示 |
保存と終了
| :w | 上書き保存 |
| :q | 終了 |
| :q! | 編集内容をファイルを保存せず終了 |
| :wq | ファイルを保存して終了 |
| :wq! | リードオンリーでも強制的に保存して終了 |

