読者です 読者をやめる 読者になる 読者になる

Visual Studio Code + Vim extension の キーバインディングをカスタマイズする

最近、Visual Studio CodeVim extension がいい感じになってきたなーと。
デフォルトのキーバインディングを変更したいと思い設定してみました。

英語化

キーバインディングの設定のその前に。。
VS Code は多言語対応もされており、日本語OSでは、メニュー等も日本語で表示されます。
英語で使っていた方が、都合が良いことがあるので、以下の手順で英語化します。

  1. Ctrl + Shift + P でコマンドパレットを開く
  2. Configure Language とタイプし Enter すると locale.json が開く
  3. "locale":"ja""locale":"en-US" に書き換え VS Code を再起動

キーバインディングのカスタマイズ

キーバインディングのカスタマイズですが、自分は、Ctrl とのコンビネーションを一部 vim ではない標準の挙動にしたいと思うところがありました。

コマンドパレットに keyboard shortcutsと入力し、keybindings.json を開きます。
で、自分は、以下のように設定しました。

[
{ "key": "ctrl+a",  "command": "editor.action.selectAll",
                       "when": "editorTextFocus && !inDebugRepl" },
{ "key": "ctrl+v",  "command": "editor.action.clipboardPasteAction",
                       "when": "editorTextFocus && !inDebugRepl && vim.mode == 'Insert Mode'" },
{ "key": "ctrl+x",  "command": "editor.action.clipboardCutAction",
                       "when": "editorTextFocus && !inDebugRepl" },
{ "key": "ctrl+w",  "command": "workbench.action.closeActiveEditor",
                       "when": "editorTextFocus && !inDebugRepl && vim.mode == 'Insert Mode'" },
{ "key": "ctrl+c",   "command": "editor.action.clipboardCopyAction",
                       "when": "editorTextFocus && !inDebugRepl && vim.mode != 'Insert Mode'" }
]

この設定で Insert Mode 時の挙動が以下のように変わります。

  • ctrl+a: テキストの全選択
  • ctrl+v: クリップボードの内容をペースト(Insert Mode のみ)
  • ctrl+x: 選択したテキストをクリップボードに切り取り
  • ctrl+w: ファイル(タブ)を閉じる(Insert Mode のみ)
  • ctrl+c: 選択したテキストをクリップボードにコピー(Insert Mode ではないとき)。

Default Keyboard Shortcuts の内容を推測すると書き方が分かるかと思います。

ヤンクしたテキストをシステムのクリップボードに入れるようにする

ヤンクしたテキストを他のアプリにペースできるようにするための設定です。
コマンドパレットに user settings と入力し、settings.json を開き、以下の内容を追記します。

    "vim.useSystemClipboard": true

以上、
デフォルトで使えよってところもあると思いますが、一応カスタマイズもできるよ という事で。