のあの

のあの日常ブログ

VSCodeで一つの動作に複数のキー割り当てる

エディタにVSCodeを使ってみることにしました

キーバインドVSCodeに乗り換えようと思いましたが、
指に染み付いている動きはなかなか変えられないのでキーバインドを変更します

ctrl + shift + p でコマンドパレットを開き、

Preferences: Open Keyboard Shortcuts  
基本設定: キーボード ショートカットを開く

を選択します

あとは動作を検索し、キーが重複しないように注意しながらキーを割り当てていきます

デフォルトは矢印キーでカーソル移動ですが、私はそれに加えてvimのような操作も今まで割り当てていたので、
CursorUpの動作に、UpArrowctrl + kの両方を割り当てがしたくなりましたが、 Keybord Shortcutsからでは一つしかキーが割り当てられませんでした

調べてもいい記事が出てこなかったので備忘録として残しておきます

高度なカスタマイズという文字に目を惹かれクリックしました

f:id:nor24:20181006191800p:plain

keybindings.jsonをみてみると自分がカスタマイズした部分のみ抽出されていました フォーマットは以下の通り

    {
        "key": [キー],
        "command": [動作],
        "when": [条件]
    },

例えばKeybord Shortcutsから全選択(デフォルトではctrl + a)の動作にctrl + shift + aを割り当てたときにkeybindings.jsonにはこのように追加されます

    {
        "key": "ctrl+shift+a",
        "command": "editor.action.selectAll",
        "when": "textInputFocus"
    },
    {
        "key": "ctrl+a",
        "command": "-editor.action.selectAll",
        "when": "textInputFocus"
    },

ポイントなのはctrl+aのキーにも新しい割り当てがされているということです
どうやら"command"の[動作]の先頭に - を付けるとその動作を削除するという意味があるようです

    {
        "key": "ctrl+k",
        "command": "cursorUp",
        "when": "textInputFocus"
    },
    {
        "key": "up",
        "command": "-cursorUp",
        "when": "textInputFocus"
    },

実際にKeybord ShortcutsからCursorUpの動作にctrl + kを割り当てた部分を見てみると、upの割り当てが削除されていました。

矢印キーは効いて欲しいのでこの部分は削除しました。

    {
        "key": "ctrl+k",
        "command": "cursorUp",
        "when": "textInputFocus"
    },

これでctrk + kでも矢印キーでも上に移動できるようになりました。 Keybord Shortcutsから見てみると元の設定も追加した設定も表示されていました。

f:id:nor24:20181006191831p:plain

おしまい