vim チートシート

## 参考文献
[VIM公式ドキュメント](https://vim-jp.org/vimdoc-ja/usr_01.html#vimtutor)


## 内容
#### モード
1. ノーマルモード： カーソル移動，編集等を行う．他のモードへ変更が出来る
2. インサートモード：テキスト入力モード
3. ビジュアルモード：テキスト範囲を選択し,コピー，排除，変更などを行える.
4. コマンドラインモード：`:` 入力することで切り替わる
							ファイルの保存，終了，検索，置換などの操作を行える.
モードの切り替え
(インサートモード)：`i,o,a`
(ビジュアルモード)：'v,V,Ctrl-v'
(コマンドラインモード): `:`
(ノーマルモード)：`ESC`


### インサイトモード
#### 移動

| コマンド | 内容                                     | 応用                                                |
| -------- | ---------------------------------------- | --------------------------------------------------- |
| h        | カーソルを左に移動                       |                                                     |
| j        | カーソルを下に移動                       |                                                     |
| k        | カーソルを上に移動                       |                                                     |
| l        | カーソルを右に移動                       |                                                     |
| W        | 単語ごとに移動                           | 3wなら３単語先                                      |
| e        | 次の単語の末尾に移動                     |                                                     |
| ge       | 直前の単語の末尾に移動                   |                                                     |
| b        | 前の単語の末尾に移動                     |                                                     |
| $        | カーソルを行末に移動                     | 4$とすることで４行先の行に移ることが出来る          |
| ^        | カーソルがある行の最初の非空白文字に飛ぶ |                                                     |
| 0        | 空白関係なく，行の先頭にとぶ             |                                                     |
| fx       | Find (xは検索対象文字)一文字を前方検索   | 3flなどすることで３文字先の場所（文字の上）にとべる |
| Fx       | fxの後方検索バージョン                   |                                                     |
| tx       | fxと同じだが検索対象の文字の直前で止まる | fxと同じ                                            |
| TX       | Fxと同じだが検索対象の文字の直前で止まる | Fxと同じ                                            |
| gg       | ファイルの先頭にジャンプする             |                                                     |
| G        | 最終行にジャンプする                     | 3G,７Gとすることで３，７行目に移動する              |
| %        | ~%の位置に移動する                       |                                                     |

#### 移動

| コマンド | 内容                      | 応用                          |
| ---- | ----------------------- | --------------------------- |
| h    | カーソルを左に移動               |                             |
| j    | カーソルを下に移動               |                             |
| k    | カーソルを上に移動               |                             |
| l    | カーソルを右に移動               |                             |
| W    | 単語ごとに移動                 | 3wなら３単語先                    |
| e    | 次の単語の末尾に移動              |                             |
| ge   | 直前の単語の末尾に移動             |                             |
| b    | 前の単語の末尾に移動              |                             |
| $    | カーソルを行末に移動              | 4$とすることで４行先の行に移ることが出来る      |
| ^    | カーソルがある行の最初の非空白文字に飛ぶ    |                             |
| 0    | 空白関係なく，行の先頭にとぶ          |                             |
| fx   | Find (xは検索対象文字)一文字を前方検索 | 3flなどすることで３文字先の場所（文字の上）にとべる |
| Fx   | fxの後方検索バージョン            |                             |
| tx   | fxと同じだが検索対象の文字の直前で止まる   | fxと同じ                       |
| TX   | Fxと同じだが検索対象の文字の直前で止まる   | Fxと同じ                       |
| gg   | ファイルの先頭にジャンプする          |                             |
| G    | 最終行にジャンプする              | 3G,７Gとすることで３，７行目に移動する       |
| %    | ~%の位置に移動する              |                             |

#### 編集

| コマンド | 内容                                          | 応用                                                   |
| -------- | --------------------------------------------- | ------------------------------------------------------ |
| x        | カーソル位置の文字を削除                      | 5x とすることで、5文字削除                             |
| X        | カーソル直前の文字を削除                      |                                                        |
| dd       | 現在行を削除                                  | 3dd で3行削除                                          |
| yy       | 現在行をコピー                                | 3yy で3行コピー                                        |
| p        | コピー/削除した内容を現在のカーソル位置に貼り付け | P はカーソル直前に貼り付け                             |
| .        | 直前のコマンドを繰り返し実行                 | 操作の反復に便利                                       |


### インサートモード
| コマンド | 内容                           | 応用                        |
| -------- | ------------------------------ | --------------------------- |
| i        | カーソル位置で挿入モード開始   |                             |
| I        | 行頭で挿入モード開始           |                             |
| a        | カーソルの直後で挿入モード開始 |                             |
| A        | 行末で挿入モード開始           |                             |
| o        | 現在行の下に新しい行を挿入     | O で現在行の上に新しい行を挿入 |




### ビジュアルモード
#### 検索と置換

| コマンド      | 内容                                      | 応用                                                   |
| ------------- | ----------------------------------------- | ------------------------------------------------------ |
| /pattern      | ファイル内で前方検索                      | `n` で次へ、`N` で前へ移動                            |
| ?pattern      | ファイル内で後方検索                      | 同様に `n`、`N` で次/前へ移動                         |
| :%s/foo/bar/g | ファイル全体で foo を bar に置換          | `:%s/foo/bar/gc` とすると確認しながら置換可能          |

| コマンド | 内容                                              | 応用                     |
| -------- | ------------------------------------------------- | ------------------------ |
| v        | 文字単位で範囲選択モードに切り替え                |                         |
| V        | 行単位で範囲選択モードに切り替え                  |                         |
| Ctrl+v   | 矩形（ビジュアルブロック）選択モードに切り替え     |                         |
| y        | 選択範囲をコピー                                  |                         |
| d        | 選択範囲を削除（カット）                          |                         |
| >        | 選択範囲をインデント                              | < で逆インデント         |



### コマンドラインモード
| コマンド | 内容                           | 応用                                         |
| -------- | ------------------------------ | -------------------------------------------- |
| :w       | ファイルを保存                 |                                              |
| :q       | vim を終了                     | :q! とすると保存せずに終了                   |
| :wq      | 保存して終了                   |                                              |
| :e ファイル名 | 新しいファイルを開く        |                                              |
| :sp ファイル名 | 分割して新しいファイルを開く |                                              |