VSCode Vimキーバインドの設定をチートシートといっしょにさらす

# VSCode Vimキーバインドの設定をさらす

自分のメモ用にvscodeの設定とチートシートをさらします。

現在の設定は[VimとVSCodeVimの違いをなるべく減らす設定](https://qiita.com/koutarn/items/06d34c279ca06c977884)を参考にしており、差分はほとんどないです。


## VSCode Vim キーコマンド チートシート (モード別 + VSCode 関連操作 + その他)

### ノーマルモード

| コマンド | 説明 |
|---|---|
| `J` | 下方向に10行移動 |
| `K` | 上方向に10行移動 |
| `H` | 行の先頭へ移動 |
| `L` | 行の末尾へ移動 |
| `<Leader>h` | 左側のウィンドウへ移動 |
| `<Leader>j` | 下側のウィンドウへ移動 |
| `<Leader>k` | 上側のウィンドウへ移動 |
| `<Leader>l` | 右側のウィンドウへ移動 |
| `]` | C言語の宣言へ移動 |
| `[` | 定義へ移動 |
| `<Leader>s` | 水平に分割 |
| `<Leader>v` | 垂直に分割 |
| `>` | 選択範囲をインデントする |
| `<` | 選択範囲をアウトデントする |
| `<Leader>u` | 次のタブへ移動 |
| `<Leader>y` | 前のタブへ移動 |
| `<Leader>x` | タブを閉じる |
| `<Leader>q` | すべてのタブを閉じる |
| `<Leader>w` | すべてのタブを保存 |
| `<Leader>o` | 空の行を挿入 |
| `<Leader>O` | 空の行を挿入(行頭へ) |
| `<Leader>c` | 行をコメントアウト |
| `<Leader>:` | コマンドパレットを表示 |
| `<Leader>;` | ファイル検索 |
| `<CR>` | 最終行へ移動 |
| `<BS>` | 最初の行へ移動 |
| `n` | 次の検索結果へ移動 |
| `N` | 前の検索結果へ移動 |
| `*` | カーソル位置のワードを検索 |
| `#` | カーソル位置のワードを検索(逆方向) |
| `s` | 選択範囲を囲む |
| `f` | easymotion: 2文字の候補を表示 |
| `<C-n>` | 選択範囲を増やす |
| `<Leader>@` | Markdownプレビューを横に表示 |
| `dd` | 行を削除 |
| `yy` | 行をコピー |
| `p` | ペースト |
| `u` | 元に戻す |
| `Ctrl+r` | やり直す |
| `v` | ビジュアルモード |
| `V` | 行選択モード |
| `Ctrl+v` | ブロック選択モード |
| `gU` | 行を大文字に変換 |
| `gu` | 行を小文字に変換 |
| `~` | 大文字と小文字を入れ替える |
| `r` | 文字を置き換える |
| `a` | カーソルの後ろに挿入 |
| `i` | カーソルの前に挿入 |
| `o` | カーソルの下に新しい行を挿入 |
| `O` | カーソルの上に新しい行を挿入 |

### インサートモード

| コマンド | 説明 |
|---|---|
| `jj` | インサートモードからノーマルモードへ |
| `;;` | サジェストを起動 |
| `vL` | 行末まで選択範囲を広げる |
| `vH` | 行頭まで選択範囲を広げる |
| `Esc` | インサートモードからノーマルモードへ |
| `Ctrl+[` | インサートモードからノーマルモードへ |
| `Ctrl+C` | インサートモードからノーマルモードへ |

### ビジュアルモード

| コマンド | 説明 |
|---|---|
| `>` | 選択範囲をインデントする |
| `<` | 選択範囲をアウトデントする |
| `<Leader>:` | コマンドパレットを表示 |
| `<Leader>;` | ファイル検索 |
| `<Leader>c` | 行をコメントアウト |
| `<C-n>` | 選択範囲を増やす |
| `<C-l>` | 行末にカーソルを追加 |
| `<Leader>b` | コードを揃える |
| `<Leader>v` | コメントを揃える |
| `y` | 選択範囲をコピー |
| `d` | 選択範囲を削除 |
| `c` | 選択範囲を置換 |

### VSCode 関連操作

| コマンド | 説明 |
|---|---|
| `<C-p>` | ファイルを開く |
| `<C-Shift-P>` | コマンドパレットを開く |
| `<C-Shift-N>` | 新しいウィンドウを開く |
| `<C-Shift-T>` | 閉じたタブを再び開く |
| `<C-G>` | 行番号と列番号を表示 |
| `<C-K>` | カーソルを上に追加 |
| `<C-J>` | カーソルを下に追加 |
| `<C-Shift-K>` | カーソルを上の行に移動 |
| `<C-Shift-J>` | カーソルを下の行に移動 |
| `<C-Shift-L>` | 行の末尾にカーソルを追加 |
| `<C-Shift-H>` | 行の先頭にカーソルを追加 |
| `<C-Shift-A>` | すべての選択範囲を選択 |
| `<C-Shift-S>` | ファイルを保存 |
| `<C-Shift-W>` | ファイルを閉じる |
| `<C-Shift-Q>` | VSCodeを閉じる |
| `<C-Shift-X>` | ファイルを別の名前で保存 |
| `<C-Shift-F>` | ファイル全体を検索 |
| `<C-Shift-R>` | ファイル全体を置換 |


### サジェスチョン操作

| コマンド | 説明 |
|---|---|
| `ctrl+j` | 次のサジェストを選択 |
| `ctrl+k` | 前のサジェストを選択 |

### コマンドパレット操作

| コマンド | 説明 |
|---|---|
| `ctrl+j` | 次のコマンドを選択 |
| `ctrl+k` | 前のコマンドを選択 |

### エディター以外の操作

| コマンド | 説明 |
|---|---|
| `space x` | タブを閉じる |
| `space u` | 次のタブへ移動 |
| `space y` | 前のタブへ移動 |
| `space h` | Markdownプレビューから戻る |
| `space oem_1` | コマンドパレットを開く |
| `space oem_plus` | ファイルを開く |

### サイドバー

| コマンド | 説明 |
|---|---|
| `ctrl+Space ctrl+Space` | サイドバーの表示/非表示を切り替える |
| `space l` | サイドバーからエディターへフォーカスを移動 |
| `ctrl+space ctrl+e` | エクスプローラーを表示 |
| `ctrl+space e` | エクスプローラーを表示 |
| `ctrl+space d` | デバッグビューを表示 |
| `ctrl+space s` | バージョン管理ビューを表示 |
| `ctrl+space z` | 拡張機能ビューを表示 |

### エクスプローラー操作

| コマンド | 説明 |
|---|---|
| `j` | エクスプローラーで下に移動 |
| `k` | エクスプローラーで上に移動 |
| `n` | 新規ファイルを作成 |
| `f` | 新規フォルダを作成 |
| `e` | ファイルをエクスプローラーで開く |
| `r` | ファイル名を変更 |
| `d` | ファイルを削除 |
| `ctrl+space f` | ファイル全体を検索 |


### パネル操作

| コマンド | 説明 |
|---|---|
| `ctrl+space k` | パネルからエディターへフォーカスを移動 |
| `ctrl+space p` | パネルの表示/非表示を切り替える |
| `ctrl+space t` | ターミナルを表示 |
| `ctrl+space q` | エラー画面を表示 |
| `shift+space y` | ターミナルの前のペインへフォーカス |
| `alt+left` | ターミナルの前のペインへフォーカス |
| `shift+space u` | ターミナルの次のペインへフォーカス |
| `alt+right` | ターミナルの次のペインへフォーカス |


### その他

| コマンド | 説明 |
|---|---|
| `:set number` | 行番号を表示 |
| `:set nonumber` | 行番号を非表示 |
| `:set hlsearch` | ハイライト検索を有効にする |
| `:set nohlsearch` | ハイライト検索を無効にする |
| `:set showcmd` | コマンドをステータスバーに表示 |
| `:set noshowcmd` | コマンドをステータスバーに非表示 |
| `:set incsearch` | 入力中に検索を動的に実行 |
| `:set noincsearch` | 入力中に検索を動的に実行しない |
| `:set ignorecase` | 大文字小文字を区別しない検索 |
| `:set noignorecase` | 大文字小文字を区別する検索 |
| `:set smartcase` | 大文字が含まれる場合は大文字小文字を区別する検索 |
| `:set nosmartcase` | 大文字が含まれていても大文字小文字を区別しない検索 |
| `:set wrap` | 行折り返しを有効にする |
| `:set nowrap` | 行折り返しを無効にする |
| `:set ruler` | カーソルの位置をステータスバーに表示 |
| `:set noruler` | カーソルの位置をステータスバーに非表示 |
| `:set cursorline` | カーソル行をハイライト |
| `:set nocursorline` | カーソル行をハイライトしない |
| `:set cursorcolumn` | カーソル列をハイライト |
| `:set nocursorcolumn` | カーソル列をハイライトしない |

**注記:** 

* `<Leader>` は `<Space>` キーで置き換えられます。
* `nmap` コマンドは使用されていません。
* `vim.handleKeys` は設定内のキーバインドを無視します。
* `ctrl+Space` は、`Ctrl`キーと`Space`キーを同時に押します。
* `oem_1` は `:` キー、`oem_plus` は `+` キーです。
* このチートシートは設定ファイルに記載されたキーバインドと、VSCodeのデフォルトキーバインドを反映しています。

## 設定ファイル

### setting.json用の設定

```
    //========================================================================
    //VIM
    //========================================================================
    "vim.statusBarColorControl": false, //statusbarの色のコントロールをしない
    "vim.highlightedyank.enable": true, //yankした箇所をハイライト表示にする
    "vim.highlightedyank.color": "rgba(0, 240, 170, 0.5)", //yankした時の色
    "vim.highlightedyank.duration": 150, //yankした時の色の表示時間
    "vim.leader": "<space>", //Map Leaderの設定
    "vim.autoindent": true, //autoindent
    "vim.useSystemClipboard": true, //system clipboardと同期する
    "vim.hlsearch": true, //hlserch
    "vim.visualstar": true, //カーソル上にあるワードを"*"で検索
    "vim.useCtrlKeys": true, //諸々のctrlキーを使った操作が有効になる
    "vim.debug.silent": true, //アラートを出さない
    "vim.timeout": 1200, //入力のタイムアウト時間
    // vim plugin有効化
    "vim.easymotion": true, //easy motionを有効化
    "vim.surround": true, //surroundを有効にする
    //easy motion
    "vim.easymotionMarkerForegroundColorOneChar": "rgba(0,240,170,0.9)", //一文字目の色
    "vim.easymotionMarkerForegroundColorTwoCharFirst": "rgba(0,240,170,0.9)", //二文字目の色
    "vim.easymotionMarkerBackgroundColor": "", //背景色
    "vim.easymotionMarkerWidthPerChar": 19, //各文字に割り当てられている幅
    "vim.easymotionMarkerHeight": 0, //マーカーの高さ
        //================================================================================================================
    //key map for vim
    //keybinding.jsonと違いキーの組み合わせで処理待ちが発生しない
    //keyのデフォルトキーを使い,キー操作を定義したくても
    //デフォルトのコマンドが有効になる。(例えば、sh→0にしたくてもsのコマンドが有効になっている)
    //Leaderキーを入力後のコマンドは無視されているので、極力Leaderを活用するようにする。
    //beforeは必ず定義しなければならないが、afterまたはcommandsでコマンドを呼び出せる。whenによる操作も可能っぽい
    //================================================================================================================
    //nmap
    "vim.normalModeKeyBindings": [
        // {"before": ["s"],"after"               : [""]},                                             //unmap?
    ],
    //nnoremap
    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": [
                "J"
            ],
            "after": [
                "1",
                "0",
                "j"
            ]
        }, //移動を早める
        {
            "before": [
                "K"
            ],
            "after": [
                "1",
                "0",
                "k"
            ]
        }, //移動を早める
        {
            "before": [
                "H"
            ],
            "after": [
                "0"
            ]
        }, //端に移動
        {
            "before": [
                "L"
            ],
            "after": [
                "$"
            ]
        }, //端に移動
        {
            "before": [
                "<Leader>",
                "h"
            ],
            "after": [
                "<C-w>",
                "h"
            ]
        }, //window移動
        {
            "before": [
                "<Leader>",
                "j"
            ],
            "after": [
                "<C-w>",
                "j"
            ]
        }, //window移動
        {
            "before": [
                "<Leader>",
                "k"
            ],
            "after": [
                "<C-w>",
                "k"
            ]
        }, //window移動
        {
            "before": [
                "<Leader>",
                "l"
            ],
            "after": [
                "<C-w>",
                "l"
            ]
        }, //window移動
        {
            "before": [
                "]"
            ],
            "commands": [
                {
                    "command": "C_Cpp.PeekDeclaration"
                }
            ],
            "when": [
                "editorLangId == c"
            ]
        }, //宣言を見る c専用
        {
            "before": [
                "["
            ],
            "commands": [
                {
                    "command": "editor.action.peekDefinition"
                }
            ]
        }, //定義を見る
        {
            "before": [
                "<Leader>",
                "s"
            ],
            "commands": [
                ":split"
            ]
        }, //水平に開く
        {
            "before": [
                "<Leader>",
                "v"
            ],
            "commands": [
                ":vsplit"
            ]
        }, //水平にを閉じる
        {
            "before": [
                ">"
            ],
            "commands": [
                "editor.action.indentLines"
            ]
        }, //インデント調整(repeat可能)
        {
            "before": [
                "<"
            ],
            "commands": [
                "editor.action.outdentLines"
            ]
        }, //インデント調整(repeat可能)
        {
            "before": [
                "<Leader>",
                "u"
            ],
            "after": [
                "g",
                "t"
            ]
        }, //tab移動
        {
            "before": [
                "<Leader>",
                "y"
            ],
            "after": [
                "g",
                "T"
            ]
        }, //tab移動
        {
            "before": [
                "<Leader>",
                "x"
            ],
            "commands": [
                ":q!"
            ]
        }, //tabを閉じる
        {
            "before": [
                "<Leader>",
                "q"
            ],
            "commands": [
                ":qa!"
            ]
        }, //すべてを閉じる
        {
            "before": [
                "<Leader>",
                "w"
            ],
            "commands": [
                ":wa"
            ]
        }, //すべてを保存
        {
            "before": [
                "<Leader>",
                "o"
            ],
            "after": [
                "o",
                "<ESC>"
            ]
        }, //空の行を挿入
        {
            "before": [
                "<Leader>",
                "O"
            ],
            "after": [
                "O",
                "<ESC>"
            ]
        }, //空の行を挿入
        {
            "before": [
                "<Leader>",
                "c"
            ],
            "commands": [
                {
                    "command": "editor.action.commentLine"
                }
            ]
        }, //コメント
        {
            "before": [
                "<Leader>",
                ":"
            ],
            "commands": [
                {
                    "command": "workbench.action.showCommands"
                }
            ]
        }, //コマンドパレット
        {
            "before": [
                "<Leader>",
                ";"
            ],
            "commands": [
                {
                    "command": "workbench.action.quickOpen"
                }
            ]
        }, //ファイル検索
        {
            "before": [
                "<CR>"
            ],
            "after": [
                "G"
            ]
        }, //最終行へ
        {
            "before": [
                "<BS>"
            ],
            "after": [
                "g",
                "g"
            ]
        }, //先頭行へ
        // 検索結果を画面中央に
        {
            "before": [
                "n"
            ],
            "after": [
                "n",
                "z",
                "z"
            ]
        },
        {
            "before": [
                "N"
            ],
            "after": [
                "N",
                "z",
                "z"
            ]
        },
        {
            "before": [
                "*"
            ],
            "after": [
                "*",
                "z",
                "z"
            ]
        },
        {
            "before": [
                "#"
            ],
            "after": [
                "#",
                "z",
                "z"
            ]
        },
        //Surround
        {
            "before": [
                "s"
            ],
            "after": [
                "y",
                "s"
            ]
        }, //surround add
        //easy motion
        {
            "before": [
                "f"
            ],
            "after": [
                "<Leader>",
                "<Leader>",
                "2",
                "s"
            ]
        }, //easymotion 2s
        //Multi-Cursor Mode
        //prefix Ctrl 
        {
            "before": [
                "<C-n>",
            ],
            "after": [
                "g",
                "b"
            ]
        }, //選択した文字に対して増やす    
        {
            "before": [
                "<C-k>",
            ],
            "commands": [
                {
                    "command": "editor.action.insertCursorAbove"
                }
            ]
        }, //シンボルをリネーム(mulchipulcursor)   
        {
            "before": [
                "<C-j>",
            ],
            "commands": [
                {
                    "command": "editor.action.insertCursorBelow"
                }
            ]
        }, //シンボルをリネーム(mulchipulcursor)   
        //外部プラグイン呼び出し
        {
            "before": [
                "<Leader>",
                "@"
            ],
            "commands": [
                {
                    "command": "markdown-preview-enhanced.openPreviewToTheSide"
                }
            ]
        }, //markdownで開く
    ],
    //insert mode
    "vim.insertModeKeyBindings": [
        {
            "before": [
                "j",
                "j"
            ],
            "after": [
                "<Esc>"
            ]
        }, //jjでノーマルモードに戻る
        {
            "before": [
                ";",
                ";"
            ],
            "commands": [
                "editor.action.triggerSuggest"
            ]
        }, //;;でサジェストの起動に使う
        {
            "before": [
                "v",
                "L"
            ],
            "after": [
                "$",
                "h"
            ]
        }, //端に移動
        // {"before": ["<C-h>"],"after"    : ["0"]},                                                     //端に移動
        // {"before": ["<C-l>"],"after"    : ["$","h"]},                                                 //端に移動
    ],
    // Visual Mode
    "vim.visualModeKeyBindingsNonRecursive": [
        //vを押した直後はvのコマンドが残っているので注意
        //visualmode後にすぐ実行したいものは、二重で定義する。
        {
            "before": [
                "J"
            ],
            "after": [
                "1",
                "0",
                "j"
            ]
        }, //移動を早める
        {
            "before": [
                "v",
                "J"
            ],
            "after": [
                "1",
                "0",
                "j"
            ]
        }, //移動を早める
        {
            "before": [
                "K"
            ],
            "after": [
                "1",
                "0",
                "k"
            ]
        }, //移動を早める
        {
            "before": [
                "v",
                "K"
            ],
            "after": [
                "1",
                "0",
                "k"
            ]
        }, //移動を早める
        {
            "before": [
                "v"
            ],
            "after": [
                "a",
                "f"
            ]
        }, //拡大選択
        {
            "before": [
                "v",
                "v"
            ],
            "after": [
                "a",
                "f"
            ]
        }, //拡大選択
        {
            "before": [
                "H"
            ],
            "after": [
                "0"
            ]
        }, //端に移動
        {
            "before": [
                "L"
            ],
            "after": [
                "$",
                "h"
            ]
        }, //端に移動
        {
            "before": [
                "v",
                "H"
            ],
            "after": [
                "0"
            ]
        }, //端に移動
        {
            "before": [
                "v",
                "L"
            ],
            "after": [
                "$",
                "h"
            ]
        }, //端に移動
        {
            "before": [
                ">"
            ],
            "commands": [
                "editor.action.indentLines"
            ]
        }, //インデント調整(repeat可能)
        {
            "before": [
                "<"
            ],
            "commands": [
                "editor.action.outdentLines"
            ]
        }, //インデント調整(repeat可能)
        {
            "before": [
                "<Leader>",
                ":"
            ],
            "commands": [
                {
                    "command": "workbench.action.showCommands"
                }
            ]
        }, //コマンドパレット
        {
            "before": [
                "<Leader>",
                ";"
            ],
            "commands": [
                {
                    "command": "workbench.action.quickOpen"
                }
            ]
        }, //ファイル検索
        {
            "before": [
                "<Leader>",
                "c"
            ],
            "commands": [
                {
                    "command": "editor.action.commentLine"
                }
            ]
        }, //コメント
        //Multi-Cursor Mode
        {
            "before": [
                "<C-n>"
            ],
            "after": [
                "g",
                "b"
            ]
        }, //選択した文字に対して増やす 
        {
            "before": [
                "<C-l>",
            ],
            "commands": [
                {
                    "command": "editor.action.insertCursorAtEndOfEachLineSelected"
                }
            ]
        }, //行末尾にカーソルを出す
        //外部プラグイン呼び出し
        {
            "before": [
                "<Leader>",
                "b"
            ],
            "commands": [
                {
                    "command": "alignment.align"
                }
            ]
        }, //揃える
        {
            "before": [
                "<Leader>",
                "v"
            ],
            "commands": [
                {
                    "command": "extension.commentaligner"
                }
            ]
        }, //コメントを揃える
    ],
    //vimではなくvscode側のキーを有効にする
    "vim.handleKeys": {
        "<C-a>": false, //全選択
        "<C-f>": false, //検索
        "<C-h>": false, //置換
    },

```

### VSCode キーバインド設定 (keybindings.json)
```
[
    //========================================================================
    // vim ...            Editorでなら処理待ちが発生せず入力可能
    // keybinding.json    あらゆる場面で制御可能、入力をすると処理待ち発生
    // prefix Editor基本操作 (vim)                      -> space
    //        Editor none Active (keybindings.json)     -> space
    //        commandparet呼び出し (vim)                -> space
    //        基本UI操作(keybinding.json)               -> ctrl+space
    //          exprorer操作(keybinding.json)           -> none 
    //          サジェスチョン操作(keybindin.json)      ->ctrl
    //          コマンドパレット操作(keybindin.json)    ->ctrl
    //        sidebar呼び出し(keybinding.json)          -> cntr+space
    //        panel呼び出し(keybinding.json)            -> cntr+space
    //========================================================================
    //======================================================================================
    // bind方法はここを参照する
    // https://vscode-doc-jp.github.io/docs/getstarted/keybindings.html
    // https://code.visualstudio.com/docs/getstarted/keybindings#_when-clause-contexts
    //======================================================================================
    // サジェスチョン操作
    {
        "key": "ctrl+j",
        "command": "selectNextSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "ctrl+k",
        "command": "selectPrevSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    //コマンドパレットの移動
    {
        "key": "ctrl+j",
        "command": "workbench.action.quickOpenSelectNext",
        "when": "inQuickOpen",
    },
    {
        "key": "ctrl+k",
        "command": "workbench.action.quickOpenSelectPrevious",
        "when": "inQuickOpen ",
    },
    //editorじゃない時の操作(editorではvscodevimのコマンドが有効になる)
    //tabを閉じる
    {
        "key": "space x",
        "command": "workbench.action.closeActiveEditor",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus",
    },
    //tabを進める
    {
        "key": "space u",
        "command": "workbench.action.nextEditor",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus"
    },
    //tabを戻す
    {
        "key": "space y",
        "command": "workbench.action.previousEditor",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus",
    },
    //markdownのpreviewから戻る
    {
        "key": "space h",
        "command": "workbench.action.focusPreviousGroup",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus",
    },
    //コマンドパレットを開く
    {
        "key": "space oem_1",
        "command": "workbench.action.showCommands",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus"
    },
    //ファイルを開く
    {
        "key": "space oem_plus",
        "command": "workbench.action.quickOpen",
        "when": "!editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen && !sideBarFocus && !panelFocus"
    },
    /* -------------------------------------------------------------------------- */
    /*                                  sidebar                                   */
    /* -------------------------------------------------------------------------- */
    //サイドバー表示(toggle)
    {
        "key": "ctrl+Space ctrl+Space",
        "command": "workbench.action.toggleSidebarVisibility",
        "when": "!explorerViewletVisible && !searchViewletVisible && !inDebugMode && vim.mode != 'SearchInProgressMode' && vim.mode != 'Insert'"
    },
    {
        "key": "ctrl+Space ctrl+Space",
        "command": "workbench.action.toggleSidebarVisibility",
        "when": "explorerViewletVisible && !searchViewletVisible && !inDebugMode && vim.mode != 'SearchInProgressMode' && vim.mode != 'Insert'"
    },
    // サイドバーからの移動 
    {
        "key": "space l",
        "command": "workbench.action.focusFirstEditorGroup",
        "when": "explorerViewletVisible && explorerViewletFocus && !editorFocus && !inQuickOpen"
    },
    /* -------------------------------- explorer -------------------------------- */
    //explorer表示
    {
        "key": "ctrl+space ctrl+e",
        "command": "workbench.view.explorer"
    },
    {
        "key": "ctrl+space e",
        "command": "workbench.view.explorer"
    },
    //エクスプローラー間移動
    {
        "key": "j",
        "command": "list.focusDown",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    {
        "key": "k",
        "command": "list.focusUp",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    //新規ファイル作成
    {
        "key": "n",
        "command": "explorer.newFile",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    //新規フォルダ作成
    {
        "key": "f",
        "command": "explorer.newFolder",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    //エクスプローラーでフォルダを開く
    {
        "key": "e",
        "command": "revealFileInOS",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    //リネーム
    {
        "key": "r",
        "command": "renameFile",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    //削除
    {
        "key": "d",
        "command": "deleteFile",
        "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus"
    },
    // //svn操作
    // {
    //     "key": "s",
    //     "command": "tortoise-svn ...",
    //     "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus",
    //     "args":"explorerPath",
    // },
    /* ----------------------------- grep検索(sidebar) ---------------------------- */
    {
        "key": "ctrl+space f",
        "command": "workbench.action.findInFiles",
        "when": "!searchInputBoxFocus"
    },
    /* ---------------------------- debug(sidebar) ---------------------------- */
    {
        "key": "ctrl+space d",
        "command": "workbench.view.debug"
    },
    /* -------------------------- version管理(sidebar) -------------------------- */
    {
        "key": "ctrl+space s",
        "command": "workbench.view.scm"
    },
    /* --------------------------- plugin管理(sidebar) -------------------------- */
    {
        "key": "ctrl+space z",
        "command": "workbench.view.extensions"
    },
    /* -------------------------------------------------------------------------- */
    /*                                    Panel                                   */
    /* -------------------------------------------------------------------------- */
    //パネルから戻る
    {
        "key": "ctrl+space k",
        "command": "workbench.action.focusLastEditorGroup",
        "when": "panelFocus && !editorTextFocus && !editorHasSelection && !editorHasMultipleSelections && !inQuickOpen"
    },
    //パネルを出す
    {
        "key": "ctrl+space p",
        "command": "workbench.action.togglePanel",
        "when": "vim.mode != 'SearchInProgressMode' && vim.mode != 'Insert'"
    },
    /* ---------------------------- terminal(panel) --------------------------- */
    //現状使わないので消しておく
    {
        "key": "ctrl+space t",
        "command": "workbench.action.terminal.toggleTerminal",
        "when": "vim.mode != 'SearchInProgressMode' && vim.mode != 'Insert'",
    },
    /* ---------------------------- error画面(panel) ---------------------------- */
    {
        "key": "ctrl+space q",
        "command": "workbench.actions.view.problems"
    },
    {
        "key": "shift+space y",
        "command": "workbench.action.terminal.focusPreviousPane",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    },
    {
        "key": "alt+left",
        "command": "-workbench.action.terminal.focusPreviousPane",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    },
    {
        "key": "shift+space u",
        "command": "workbench.action.terminal.focusNextPane",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    },
    {
        "key": "alt+right",
        "command": "-workbench.action.terminal.focusNextPane",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    },
]
```


[VimとVSCodeVimの違いをなるべく減らす設定](https://qiita.com/koutarn/items/06d34c279ca06c977884)に記載されている設定とほとんど同じです。


### 参考

* [VimとVSCodeVimの違いをなるべく減らす設定](https://qiita.com/koutarn/items/06d34c279ca06c977884)
* [VSCodeをVimmer好みにしてみた](https://blog.mamansoft.net/2018/09/17/vscode-satisfies-vimmer/)

他にも見た気がするので、思い出したら追加します...