Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
82
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

統合ターミナルウィンドウへフォーカスするショートカットキーを設定する

テキストエディタVisualStudioCode ではエディタ内にターミナルを表示させるショートカットキー(ctrl+@)は用意されていますが、ターミナルとテキストエディタ間のフォーカスを移動するためのショートカットキーが存在しなかったので、設定方法を調べてみました。

<2020/08/02>
執筆当時のバージョン(1.13)ではtoggleTerminalコマンドはパネルの表示非表示を切り替えるのみの動作だったので、エディタからターミナルへフォーカスを移動するという用途には適しませんでした。

Ver. 1.28 1 以降では、フォーカスの無いパネルをトグルさせるとき、一旦フォーカスを移動するという動作に変更されたので、下記のデフォルトのショートカットキーのみでフォーカス移動に対応できます。

言語 key command
us, jp ctrl+1 workbench.action.focusFirstEditorGroup
us ctrl+` workbench.action.terminal.toggleTerminal
jp ctrl+oem_3(@) workbench.action.terminal.toggleTerminal

設定方法

Ctrl+Shift+P からコマンドパレットを開き、'keyboard' と入力すると下記のようにメニューの候補が表示されるので、'Preference: Open Keyboard Shortcuts (JSON)' を選択します。
image.png

「keybindings.json」が開かれるので、下記のコードをコピペして上書き保存します

keybindings.json
[
    {
        "key": "ctrl+;",            "command": "workbench.action.terminal.focus",
                                    "when": "editorTextFocus"
    },
    {
        "key": "ctrl+;",            "command": "workbench.action.focusFirstEditorGroup",
                                    "when": "terminalFocus"
    }
]

設定ファイル上は「Ctrlキー+セミコロン(;)」のショートカットキー割り当てとして書かれていますが、筆者環境(Windows10 HHKB JP)ではこの設定で「Ctrlキー+コロン(:)」へ割り当てられました。
おそらく設定ファイルの記述はUSキーボードのキーコードを想定しているのを、JISキーボードから入力するため、表記が不一致になっていると思われます。
コマンドは下記を参考にしました。
https://code.visualstudio.com/docs/editor/integrated-terminal#_key-bindings

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
82
Help us understand the problem. What are the problem?