はじめに
VScode の Remote SSH 便利ですよね!
とても便利なのですが、VScode で接続した先のターミナルで bash のキーボードショートカット (Ctrl+p
とか) を使おうとすると、VScode のデフォルトで指定されているものと衝突しそちらが優先されてしまうので使えません。
ショートカットを手癖のように利用しているので、これが使えないと結構なストレスです。というわけで、対策してみました。
そもそもターミナルのショートカットについては、こちらの記事が参考になります。
やりかた
keybindings.json にショートカットキーを登録
Ctrl+Shift+p
で key と打つと「基本設定: キーボードショートカットを開く (JSON)」というものが出てくるので開きます
keybindings.json というファイルが開かれるので、この中にショートカットを記載していきます
// 例
{
"key": "ctrl+f",
"command": "cursorUp",
}
-
key
にショートカット、command
に実行コマンドを指定します - 細かい指定方法や実行コマンドについては、ドキュメントに詳しく書かれています
ポイント
単純にキーバインドを設定すると、デフォルトのショートカットが上書かれてしまいます。
デフォルトのショートカットも便利なので使いたいのですが、わざわざキーバインドを退避するのも面倒なので、ターミナルで使いたいショートカットには「ターミナルにフォーカスしているときだけ」という条件を指定することでこれを回避します。
指定の方法は簡単で、"when": "terminalForcus"
というメンバーを追加するだけです。GUI の設定画面からでは「いつ」という条件が選択できないので、keybindings.json に追加する必要があります。
サンプル
こんな感じで設定してみました。参考までにどうぞ。
[
{
"key": "ctrl+p",
"command": "cursorUp",
"when": "terminalFocus"
},
{
"key": "ctrl+n",
"command": "cursorDown",
"when": "terminalFocus"
},
{
"key": "ctrl+f",
"command": "cursorRight",
"when": "terminalFocus"
},
{
"key": "ctrl+b",
"command": "cursorLeft",
"when": "terminalFocus"
},
{
"key": "ctrl+a",
"command": "cursorHome",
"when": "terminalFocus"
},
{
"key": "ctrl+e",
"command": "cursorEnd",
"when": "terminalFocus"
},
{
"key": "ctrl+d",
"command": "deleteRight",
"when": "terminalFocus"
},
{
"key": "ctrl+h",
"command": "deleteLeft",
"when": "terminalFocus"
}
]
おわりに
ターミナルをフォーカスしているときだけショートカットが上書きされるため、それ以外の場合は今まで通りに VScode のショートカットが使えます。
今のところストレスフリーで作業できています。
こうするともっと便利だよ!などあれば教えて下さい。