C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

vscode: Terminal と Editor のアクティブを行ったり来たりトグルするキーの作り方のメモ

要求

キーは何でもよいのだけど、例えば

  • F7 を押すと
  • ターミナルではない何か(エディターやエクスプローラーなど)がアクティブな状態なら → ターミナルをアクティブに
  • ターミナルがアクティブな状態なら → エディターをアクティブに
  • キーボードのフォーカスのアクティブターゲットがトグル

する便利な状態にしたい需要があったとします。私にはありました😏

実現する方法

Keyboard shortcutsを次のように2件ユーザー設定でカスタムします:

(1): ターミナルではない何か(エディターやエクスプローラーなど)がアクティブな状態なら → ターミナルをアクティブに

{
  "key": "f7",
  "command": "workbench.action.terminal.focus"
}

(2): ターミナルがアクティブな状態なら → エディターをアクティブに

{
  "key": "f7",
  "command": "workbench.action.focusActiveEditorGroup",
  "when": "terminalFocus"
}

Note: VSCode のキーボードショートカットの GUI 編集モードでも右クリックでコンテキストメニューを出せば When を入力できます。

これで、 F7 を押すとエディター(あるいは他のどこか)にキーボードの入力フォーカスがある状態ならターミナルがアクティブに、ターミナルがアクティブな状態ならエディターがアクティブにトグルしてくれるようになります。けっこー端末でコマンドばばばばばばばばって打ちたい派には、これが理想の便利状態なひとも、いるかもね👩‍🔧

おまけ: Terminal でのスクロールとキーボードショートカット

VSCodeのTerminalでのスクロールのデフォルトはAltを使うパターンになっていて、ふだん使うことの多い端末エミュレーター等とはキー操作が異なる場合もあると思います。例えば Windows Terminal だと CTRL+SHIFT+/ なので VSCode でも Terminal を頻繁に使うひとは、ついでに合わせておくと便利かもしれません。

{
  "key": "ctrl+shift+down",
  "command": "workbench.action.terminal.scrollDown",
  "when": "terminalFocus"
}
{
  "key": "ctrl+shift+up",
  "command": "workbench.action.terminal.scrollUp",
  "when": "terminalFocus"
}

眠くても、疲れていても、ひゅーまんがミスしにくい環境がよいです👩‍🔧