Vimのコマンドまとめ

自分用にVimのコマンドをまとめておきます(随時更新)。
[参考サイト]https://vim.jp.net/

##モードの切り替え
入力モードは**挿入モード**ともいうらしい。

| 説明| コマンド | 
|:-----------------|:-----------------:|
| 入力モード(カーソルの位置で) | i |
| 入力モード(カーソルの後ろの位置で) | a |
![20191024_3_Qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/471d0623-369e-ec25-456f-8cf321c96d35.jpeg)
oの下にカーソルがあります。
名前の通り文字の入力が出来ます。

---
| コマンドモード | Esc | 
|:-----------------|:-----------------:|
![20191024_3_Qiita02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/4b8d44fd-7a87-3b68-fd5d-0f142f023cdc.jpeg)
pとoの間に入力モードより広めのカーソルがあります。
コマンドモードでは文字の入力は出来ません。


###保存と終了(いずれもコマンドモード時)
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 保存 | :w + Enter |
| 強制保存 | :w! |
| 名前を付けて保存 | :w fileA | fileAという名前で保存 |
| 終了 | :q + Enter | **(未保存の場合は不可)** | 
| 保存 + 終了 | :wq + Enter | 
| 強制終了 | :q! + Enter | **(変更を破棄して終了)** | 

保存しないで:q + Enterを入力すると
<img width="311" alt="20191025_Qiita02.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/a4428131-1174-7052-6a0a-f522aa7740c4.jpeg">
エラーが出る

##移動(いずれもコマンドモード時)
####上下左右に一文字ずつ移動
|           |          |          |
|:---------:|:--------:|:--------:|
|           | 上 **k** |          |
| 左  **h** |          | 右 **l**(エル) |
|           | 下 **j** |          |
回数指定は**頭に数字**をつける
5l→右に5文字移動、10j→下に10文字移動、など。

####行内での移動
| 説明      | コマンド |
|:----------|:---------|
| 行頭へ移動 | **0**(ゼロ) |
| 行末へ移動 | **$**(ドル) |
| 行内の空白以外の最初の文字へ移動する | **^**(キャレット) |

図で表すとこんな感じ スタートは**l**
![20191025_Qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/e10c2f35-58de-b684-0f85-98bc9db75cdc.jpeg)

####単語ごとでの移動(いずれもコマンドモード時)
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 1つ後ろの単語の先頭へ移動 | w | **空白・記号区切り** word |
|  | W | **空白区切り** | 
| 1つ前の単語の先頭へ移動 | b | **空白・記号区切り** back word | 
|  | B | **空白区切り** |

図で表すとこんな感じ スタートは**y**
![20191028_Qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/7701000e-c4e2-03f1-3ae2-49a9d4ec48a4.jpeg)


####テキスト検索して移動
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 前方からの検索 | /文字 + Enter | **/ + Enterだと前回と同じ文字の検索** |
| 後方からの検索 | ?文字 + Enter | **? + Enterだと前回と同じ文字の検索** | 
| 前→後ろへ検索した文字へ移動 | n |  | 
| 後ろ→前へ検索した文字へ移動 | N |  |


####行番号を指定して移動
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| n行番めを指定 | n + G |  |
|  | :n + Enter |  | 

####先頭行と最終行に移動
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 先頭行へ移動 | gg |  |
| 最終行へ移動 | G |  |


##テキストの修正(いずれもコマンドモード時)
| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 文字を削除 | x | **カーソルの位置にある1文字** |
|  | X | **カーソルの位置の前にある1文字** | 
| 文字の変更 | cw | **その単語の末尾まで** | 
|  | c$ | **行末まで** |
| 文字の置き換え | s | カーソルの位置にある１文字を置き換え　**4sなどで回数指定が可能** |

####文字を削除
![20191028_Qiita02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/76412f69-040e-5107-898c-69b5a83e811d.jpeg)

####文字の変更
cwやc$で範囲を指定して修正
**この瞬間に入力モードになる！**
![20191028_Qiita03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/9af0e94d-e4c9-30d6-a929-58958eb7d574.jpeg)

####文字の置き換え
**s**だけだと、カーソルの位置にある１文字の置き換え
![20191101_Qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/14a1d96f-0d2e-8c68-2225-2ffe0186679d.jpeg)

回数指定もできる
![20191101_Qiita02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509471/1b557107-7d16-5d4d-269f-adf115a21b22.jpeg)



##やり直し(いずれもコマンドモード時)

| 説明 | コマンド | 備考 | 
|:-----------------|:------------------|:------------------|
| 最後の編集のやり直し | u | いわゆる**undo(アンドゥ)** |
| 元に戻した操作を戻す | Ctrl + r | いわゆる**redo(リドゥ)** |