Open1

VSCode でキーバインドをいい感じに設定したい

joojoo

VSCodeVim プラグインをインストールした Windows の VSCode で Ctrl-f や Ctrl-b をカーソル移動で使えるようにしたい

やりたいこと

  • ノーマルモード:Ctrl-f, Ctrl-b で画面スクロールできるようにしたい
  • インサートモード:Ctrl-f, Ctrl-b でカーソル移動できるようにしたい

設定

ノーマルモード

ノーマルモードにおける画面スクロールは、VSCodeVim が機能提供している。そのため、VSCodeVim のキーバインドが優先されるよう設定する。settings.json に以下の設定を追加する。

{
    ...,
    "vim.useCtrlKeys": true,
    "vim.handleKeys": {
        "<C-f>": true,
        "<C-b>": true,
    }
}

Ctrlキーを利用した操作を有効にするため、 "vim.useCtrlKeys": true を設定する。また、 "vim.handleKeys" を設定することで、 VSCode ではなく VSCodeVim のキーバインドが優先される。

インサートモード

次に、インサートモードでカーソル移動をできるように設定する。VSCode のデフォルト設定では、検索(Ctrl-f)とサイドバー表示のトグル(Ctrl-b)に設定されているので、この機能を無効にする。必要であれば、無効にするのではなく別のキーにマップして利用すると良い。keybindings.json を開いて、以下の設定を追加する。

[
    ...,
    {
        "key": "ctrl+f",
        "command": "-actions.find",
        "when": "editorFocus || editorIsOpen"
    },
    {
        "key": "ctrl+b",
        "command": "-workbench.action.toggleSidebarVisibility"
    }
]

次にカーソル移動の設定を追加する。

[
    ...,
    {
        "key": "ctrl+f",
        "command": "cursorRight",
        "when": "editorTextFocus && vim.active && vim.use<C-b> && !inDebugRepl && vim.mode == 'Insert'"
    },
    {
        "key": "ctrl+b",
        "command": "cursorLeft",
        "when": "editorTextFocus && vim.active && vim.use<C-b> && !inDebugRepl && vim.mode == 'Insert'"
    }
]

以上でやりたいことが実現できる。