VSCode には標準でターミナル機能が搭載されており、WSL や PowerShell などを VSCode のエディタ内で利用することができる。しかし、Bash や Zsh などで利用できるキーバインドが VSCode のショートカットキーと競合して思うように操作できない場合がある。
特に履歴を参照する ctrl-p のような良く利用するキーバインドが利用できないのは Linux に慣れている人にとってはストレスだろう。
Linux Shell のショートカットキーをまとめてみた | Lonely Mobiler自分が試したところ、ctrl-f, ctrl-e, ctrl-p のキーバインドが VSCode のものと競合してシェルで利用できなかった。なのでそれらのキーバインドをターミナルで利用できるように再定義する必要がある。
VSCode の keybindgs.json を開き、以下の設定を追加しよう。
{
"key": "ctrl+f",
"command": "cursorRight",
"when": "terminalFocus"
},
// vscodevim を利用している場合には不要
//{
// "key": "ctrl+e",
// "command": "workbench.action.quickOpen",
// "when": "!terminalFocus"
//},
{
"key": "ctrl+e",
"command": "-workbench.action.quickOpen"
},
{
"key": "ctrl+p",
"command": "workbench.action.quickOpen",
"when": "!terminalFocus"
},
{
"key": "ctrl+p",
"command": "-workbench.action.quickOpen"
},
ctrl+f はカーソルを右へ動かすコマンドを、ctrl+p はクイックオープンの挙動を「ターミナル以外の時」と再定義してある。ctrl+e に関しては vscodevim を利用していないならコメントアウトを外すと良さそう。
こうすることで VSCode の内蔵ターミナルでも ctrl+f でカーソル移動、ctrl+p で履歴の参照が可能となる。ターミナルを頻繁に利用するなら是非設定しておこう。
VSCodeの統合ターミナルにおいてシェルのキーバインドを設定する - Qiita