最低限の労力で出来る、VSCodeVim を使う際のおすすめ設定

# はじめに
コーディングが格段にやりやすくなると聞いて VSCode の Vim 拡張機能 「VSCodeVim」をインストール！
したはいいものの、Vim 自体を使ってた訳じゃないから基本操作はわかるけど設定しておいたほうがいいこととか入れたほうがいいプラグインとか知らない・・・
そんな中 [VSCodeVim の公式ページ](https://marketplace.visualstudio.com/items?itemName=vscodevim.vim&ssr=false#overview)で紹介されているQuick Example を設定すると、作業が非常に捗るようになりました。
ので、個人的なメモも兼ねて各設定内容、それによって出来るようになることについて解説していきたいと思います。

# 設定方法
1. VSCode設定用のJSONファイル「setting.json」を開く
2. 公式サイトから Quick Example をコピーして既存設定に追記する

以上です。ね、簡単でしょ？

**Quick Example**

```
{
  "vim.easymotion": true,
  "vim.sneak": true,
  "vim.incsearch": true,
  "vim.useSystemClipboard": true,
  "vim.useCtrlKeys": true,
  "vim.hlsearch": true,
  "vim.insertModeKeyBindings": [
    {
      "before": ["j", "j"],
      "after": ["<Esc>"]
    }
  ],
  "vim.normalModeKeyBindingsNonRecursive": [
    {
      "before": ["<leader>", "d"],
      "after": ["d", "d"]
    },
    {
      "before": ["<C-n>"],
      "commands": [":nohl"]
    }
  ],
  "vim.leader": "<space>",
  "vim.handleKeys": {
    "<C-a>": false,
    "<C-f>": false
  }
}
```

※2020年2月14日時点のもの。2020年1月26日に確認したところvim.sneakが削除されていた

# Quick Example にて設定される内容の解説
## vim.easymotion
- [vim-easymotion](https://github.com/easymotion/vim-easymotion)を元にした機能
- 指定のコマンドを入力することで特定の位置にマーカーが表示され、表示されたキーを押すことでその位置にジャンプできる
- `<leader>`については任意の文字を設定できるが、Quick Example ではスペースキーが設定されている（後述）
- 以下はよく使うコマンドの例（その他すべてのコマンドについては、公式ページから確認可能）

|モーションコマンド|説明|
|---|---|
|`<leader><leader> s <char>`|任意の1文字|
|`<leader><leader> / <char>... <CR>`|任意の文字列|
|`<leader><leader><leader> bdjk`|行頭|

## vim.sneak
- [vim-sneak](https://github.com/justinmk/vim-sneak)を元にした機能
- 2文字で指定した任意の場所にジャンプできる
- 以下はよく使うコマンドの例（その他すべてのコマンドについては、公式ページから確認可能）

|モーションコマンド|説明|
|---|---|
|`s<char><char>`|指定した2文字が前方で最初に出現する箇所にジャンプする|
|`S<char><char>`|指定した2文字が後方で最初に出現する箇所にジャンプする|

## vim.incsearch
- 'incsearch'オプション（Vimの「:set incsearch」コマンド）
- インクリメンタルサーチ。検索モードでEnterを押さずとも入力されてる文字について自動で検索する

## vim.useSystemClipboard
- VimのクリップボードとOS側のクリップボードを共有するようにする（デフォルトではVSCodeVimでyankしてもOS側にはコピーされない）

## vim.useCtrlKeys
- コピー、貼り付け、検索などの通常の VSCode による操作を無効にする Vim の Ctrlキー によるコマンドを有効にする。

## vim.hlsearch
- 'hlsearch'オプション（Vimの「:set hlsearch」コマンド）
- 検索でマッチした箇所をハイライトする

## vim.insertModeKeyBindings
- インサートモード時のキーバインド設定
- Quick Example では`<Esc>`を`jj`に割り当てることで、インサートモードの際にESCキー以外に`jj`と入力することでもノーマルモードへ移れるようにしている

## vim.normalModeKeyBindingsNonRecursive
- ノーマルモード時のキーバインド設定
- Quick Example では`dd`を`<leader> + d`に割り当てることで、スペースキーとdキーで1行カットを実行できるようにしている
- Quick Example では`:nohl`（ハイライトの削除コマンド）を`<C-n>`に割り当てることで、Ctrl キー＋n キーでハイライトの削除ができるようにしている

## vim.leader
- `<leader>`の定義
- Quick Example ではスペースキーを割り当てている

## vim.handleKeys
- 特定のキーにて、VSCodeVim 拡張で設定された Vim のキーではなく、VSCode で設定されているキーを実行するようにする
- Quick Example では`<C-a>`を false とすることで、VSCode 由来の Ctrl キー + a キーによる全選択が出来るようにしている（デフォルトでは数値のインクリメントを行う）
- Quick Example では`<C-f>`を false とすることで、VSCode由来の Ctrl キー + f キーによる検索が出来るようにしている（デフォルトでは下方向への画面単位の移動を行う）

# おわりに
以上、簡易的な公式推奨設定（？）のQuick Example についての解説でした。
調べてみた印象としては、Vim の有名所の設定とプラグインを導入しているようでした！
Vim は入れたけど基本的なコマンド以外わからない、プラグインって何？という状況から、setting.json にコピペでサクッと設定するだけで大幅に作業効率が上がりましたので、VSCodeVim 導入したての人には超オススメです！
また、公式ページには Quick Example で設定されているもの以外にもたくさんの機能が紹介されてますので、一度目を通してみると良いかと思います。