【VSCode Neovim】モード切り替えのキーバインディングを設定する方法

VSCode Neovimでインサートモードからノーマルモードへ戻る際のキーバインディングを設定する方法です.
jj以外の設定に関しても解説しています.

背景

VSCode NeoVimでインサートモードからノーマルモードに戻る際のキーバインディング設定をするにはkeybindings.jsonに設定を追記する必要があります.

keybindings.jsonに関して

VSCodeにおいてキーボードショートカットを定義したい場合に編集するファイルです.
開き方は以下のとおりです.

  1. 基本設定 > キーボードショートカット をクリック.1

  2. ウィンドウ右上にあるマーク(画像赤枠)をクリックすると開きます.2

設定方法

Ctrl+Kでインサートモードからノーマルモードへ戻るように設定します.
以下の内容をkeybindings.jsonに追記すればOKです.3


{
    "key": "ctrl+k",
    "command": "vscode-neovim.escape",
    "when": "neovim.mode == insert && editorTextFocus",
},

ビジュアル > ノーマルもCtrl+Kとしたい場合は以下の設定も追記しましょう.


{
    "key": "ctrl+k",
    "command": "vscode-neovim.escape",
    "when": "neovim.mode == visual && editorTextFocus",
},

追記場所がよくわからない方はこちらをクリック

keybindings.jsonの全体像は以下のとおりです.


[
    {
        〜〜設定①〜〜
    },

    {
        〜〜設定②〜〜
    },
]

そのため,新たな設定を追記する場合は[]内の一番下に追記しましょう.
今回のキーバインディングの設定を追記した例は以下のとおりです.


[
    {
        〜〜設定①〜〜
    },

    {
        〜〜設定②〜〜
    },

    {
        "key": "ctrl+k",
        "command": "vscode-neovim.escape",
        "when": "neovim.mode == insert && editorTextFocus",
    },
]

ちなみに,コメントを入れたい場合は//をつければコメントになります.

参考

定番?のjjを設定したい場合は以下の内容をkeybindings.jsonに追記すればOKです.


{
    "command": "vscode-neovim.compositeEscape1",
    "key": "j",
    "when": "neovim.mode == insert && editorTextFocus",
    "args": "j"
}

ひとこと

インサートモードからノーマルモードへ戻る際のキーバインディングはjjが多いようですが,個人的にはCtrl+Kが楽でいい感じです.

またCtrl+Kにしておくとインサート > ノーマルの際に文字入力を自動で英字に切り替える設定もスムーズなのでおすすめです.

英字への切り替え設定は以下の記事で解説しているので興味のある方はぜひご覧ください.


  1. Command+K Command+SでもOKです. 

  2. 「キーボードショートカット」タブを選択した状態でないとマークは出ないのでご注意ください. 

  3. "ctrl+k"部分を変更すれば任意のキーバインディングを設定することができます.