Vim超々初心者がVSCodeでとりあえず動くようにしてみた

# Vimの使い方まとめ

やっぱりVimのコマンドを覚えられず未来の自分がVimから逃げ出すのを防ぐために記事を書きました。間違っていたり正確な表現でないところがあるかと思いますが優しく指摘してください。一部Vim以外も混じっていますがご愛嬌ということでご容赦を。~~か弱いガラスのハートなので~~お願いします。

## 素晴らしいサイト集

本当にありがとうございます!!

[Vscodeの設定を見直す](https://blog.mamansoft.net/2019/02/01/review-vscode-vim-setting/)


[Vscodeでの設定のやり方](https://qiita.com/jintz/items/d357478271179c90ffab)

[覚え方](https://wolfbash.hateblo.jp/entry/2017/08/25/121711)

[実践的に使いたい場合に参考](https://qiita.com/hachi8833/items/7beeee825c11f7437f54)

## Vscodeの設定

```json
{
    "vim.insertModeKeyBindings": [
        {
            "before": ["j", "j"],
            "after": ["<Esc>"]
        }
    ],
    "vim.hlsearch": true,
    "vim.useSystemClipboard": true,
    "vim.visualstar": true,
    "C_Cpp.updateChannel": "Insiders",
    "workbench.editorAssociations": [
        {
            "viewType": "jupyter.notebook.ipynb",
            "filenamePattern": "*.ipynb"
        }
    ],
    "window.zoomLevel": 3,
    "cmake.configureOnOpen": true,
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    }
}
```


### <font color = "green">通常モード<->挿入モード</font>



|コマンド|説明|
|:--|--:|
|i|カーソルの左から挿入モードへ|
|a|カーソルの右から挿入モードへ|
|I|行の先頭から挿入モードへ|
|A|行の末尾から挿入モードへ|
|o|カーソルの下に空行を挿入して挿入モードへ|
|O|カーソル行の上に空行を挿入して挿入モードへ|
|s|カーソルの下の文字を削除して挿入モードへ|
|S|カーソル行を削除して挿入モードへ|
|C|カーソルから右側を削除して挿入モードへ|
|r + 任意の文字|カーソルにある文字を上書きして戻る|

|コマンド|説明|
|:--|--:|
|j j |設定で挿入モードから戻れるようにしている|
|esc , Ctr + c|通常モードへ戻る|



### <font color = "green">通常モード<->ビジュアルモード</font>


|コマンド|説明|
|:--|--:|
|v|通常モードからビジュアルモードへ|
|V|カーソルの行を選択してビジュアルモードへ|
|c|選択範囲を削除して挿入モードへ|
|v|ビジュアルモードから通常モードへ|
|y|選択範囲をコピーして通常モードへ|
|d|選択範囲を削除して通常モードへ|



### <font color = "green">編集のやり方</font>
打ち消す操作関連

|コマンド|説明|
|:--|--:|
|u|ひとつ戻る|
|Ctrl + r |uの効果を打ち消す|

削除関連

|コマンド|説明|
|:--|--:|
|x|一文字削除|
|d + 移動コマンド|dで削除モードに移行。次に指定する移動コマンドで削除範囲を決める|
|d + w|一文字消去|
|d + f + 文字|文字の場所まで削除|
|d + t + 文字|文字の手前まで削除|
|d + i + (|括弧の中にカーソルがあるときに括弧の中身をすべて削除|
|d + a + ( |括弧の中にカーソルがあるときに括弧も含めて削除|
|dd|一行削除|
|dd+移動+p|一行をカットしてほしい場所にペースト|
|D|カーソルから右を削除|

上書きしたいとき

|コマンド|説明|
|:--|--:|
|c + 移動コマンド|cで移動コマンドのぶんだけ削除して挿入モードへ移行|
|c + w + 文字|カーソルの文字を削除して上書き|
|c + i + (|括弧の中にカーソルがあるときに括弧の中身を削除した上で挿入モードへ移行|
|r + 任意の文字|カーソルの上にある文字を上書きして戻る|

コピー、カット、ペースト関連

|コマンド|説明|
|:--|--:|
|yy|一行コピー|
|yy+移動+p|一行をカットしてほしい場所にペースト|
|p|カーソルの右に貼り付け|
|P|カーソルの左に貼り付け|
|Ctrl + Insert|コピー|
|Shift + Insert|ペースト|
|s|一文字カット|
|S|行カット|


### <font color = "green">置換</font>

|コマンド|説明|
|:--|--:|
|:s/置換したい文字/置換後の文字/g|ファイル内の特定の文字列をすべて変換|
|:s/置換したい文字/置換後の文字/gc|ファイル内の特定の文字列をすべて変換。ただし毎回置換するかを確認|

### <font color = "green">繰り返し</font>

|コマンド|説明|
|:--|--:|
|{数字}{コマンド}|コマンドを数字の回数だけ繰り返す|
|.|直前の編集系統の操作を繰り返す|

以下が具体例である。


* 5dd : ５行削除
* 2j : 2行下へ移動
* 3w : 3つ先の単語へジャンプ

### <font color = "green">コマンドモード</font>

|コマンド|説明|
|:--|--:|
|:q|ファイルを閉じる|
|:w|上書き|
|:wq|上書き保存して閉じる|
|Ctrl + c , Esc|:によってコマンドモードに入った状態から抜ける|
|Ctrl + s |これはvimのコマンドではないが、上書き保存が可能|

### <font color = "green">移動のやり方</font>

#### <font color = "blue">一個ずつ移動したい時</font>

|コマンド|説明|
|:--|--:|
|h|左に一つ|
|j|下に一つ|
|k|上に一つ|
|l|右に一つ|

#### <font color = "blue">文字へのジャンプ</font>

以下は行内での移動について使えるコマンド。

|コマンド|説明|
|:--|--:|
|通常モードで f + 任意の文字|任意の文字へカーソル移動|
|通常モードで t + 任意の文字|任意の文字の一つ手前へカーソルを移動|

具体例

* f(で次のカッコへ飛べる
* f{で次の中括弧へ飛べる
* f+文字+;+;+..で順方向に移動できる
* f+文字+,+,+...で逆方向に移動できる

括弧に関連するコマンドとして以下も便利である。

|コマンド|説明|
|:--|--:|
|(編集モードで括弧のところにカーソルを合わせて)%|小括弧、中括弧、大括弧の片側へ飛べる|

以下は複数のページにまたがる場合の文字列検索機能である。

|コマンド|説明|
|:--|--:|
|(通常モードで) / + 検索文字 + Enter| 文字を検索してハイライトがつく|
|(検索をした後に) n|検索に合致する場所を上から移動|
|(検索をした後に) N|検索に合致する場所を下から移動|


#### <font color = "blue">単語ごと</font>

|コマンド|説明|
|:--|--:|
|w|次の単語の頭へジャンプ|
|e|次の単語の末尾へジャンプ|
|b|前の単語の頭へジャンプ|
|ge|前の単語の末尾へジャンプ|


#### <font color = "blue">行ごと</font>

|コマンド|説明|
|:--|--:|
|0|行の先頭へジャンプ|
|$|行の末尾へジャンプ|

#### <font color = "blue">空行ごと</font>


|コマンド|説明|
|:--|--:|
| } | 次の空行へ移動|
| { |前の空行へ移動|


#### <font color = "blue">一気に移動</font>

一気に移動したいとき

|コマンド|説明|
|:--|--:|
|gg|ファイルの始端まで移動|
|G|ファイルの末尾まで移動|
|数字G|数字の行へ移動|

いい感じに飛ばしたい時

|コマンド|説明|
|:--|--:|
|H|画面の一番上へカーソルを飛ばす|
|M|画面の真ん中へカーソルを飛ばす|
|L|画面の一番下へカーソルを飛ばす|

#### <font color = "blue">画面スクロール</font>


##### <font color = "pink">カーソルを固定したまま移動</font>

|コマンド|説明|
|:--|--:|
|zz|カーソル部分が画面中央になるようにスクロール|
|Ctrl + y|画面を下方向にスクロール|
|Ctrl + e|画面を上方向にスクロール|


##### <font color = "pink">ページ移動</font>


|コマンド|説明|
|:--|--:|
|Ctrl + d|ページを半分戻す|
|Ctrl + u|ページを半分進める|
|Ctrl + f|ページを進める|
|Ctrl + b|ページを戻す|

#### <font color = "blue">たどる</font>

##### <font color = "pink">ジャンプした箇所へ</font>

|コマンド|説明|
|:--|--:|
|Ctrl + o | ジャンプしてきた箇所に戻る|
|Ctrl + i | ジャンプした箇所へ進む|

#### <font color = "pink">変更リスト</font>

|コマンド|説明|
|:--|--:|
|g; | 変更してきた箇所へ戻る|
|g, | 変更してきた箇所へ進む