VSCodeのショートカット紹介

Tips

はじめに

VSCodeを使うにあたり、デフォルトのキーバインドでは使いにくい部分があったため、自分好みにカスタマイズしています。 特に筆者の場合 VSCodeVim 拡張機能を導入している & ターミナルでVimを多用するため、Vimのキーバインドと競合しないよう注意した点があります。

この記事では、自分のキーバインド設定を紹介するとともに、各設定の意図や背景を説明します。

Vimとの競合について

Vimでは Ctrl+B でページ上スクロール、Ctrl+F でページ下スクロール、Ctrl+V でビジュアルブロックモード、Ctrl+I でジャンプリストの次の位置へ移動など、さまざまな操作が Ctrl キーと組み合わせたショートカットに割り当てられています。

キーVimでの役割
Ctrl+B1ページ上スクロール(Page Up)
Ctrl+F1ページ下スクロール(Page Down)
Ctrl+Vビジュアルブロックモード
Ctrl+Iジャンプリストで新しい方向へ移動
Ctrl+P補完候補の前の項目へ移動
Ctrl+N補完候補の次の項目へ移動

これらはVSCodeのデフォルトショートカットにも割り当てられているため、そのままではVimの操作と干渉してしまいます。今回はVSCode側のキーバインドを変更することで対処しています。

ターミナル操作: Ctrl+T プレフィックス

ターミナル関連の操作を Ctrl+T をプレフィックスとしたシーケンスキーにまとめています。

キーコマンド説明
Ctrl+T Ctrl+Tterminal.toggleTerminalターミナルパネルの表示/非表示切り替え
Ctrl+T Nterminal.new新しいターミナルを作成
Ctrl+T MtoggleMaximizedPanelターミナルパネルを最大化/元に戻す
Ctrl+T Cworkbench.action.terminal.kill現在のターミナルを閉じる

ターミナルをよく使うため、これらを簡単に呼び出せるようにしています。

次のターミナルへ移動

{
    "key": "ctrl+shift+n",
    "command": "workbench.action.terminal.focusNext",
    "when": "terminalFocus && terminalHasBeenCreated && !terminalEditorFocus || terminalFocus && terminalProcessSupported && !terminalEditorFocus"
},

ターミナルにフォーカスがある状態で Ctrl+Shift+N を押すと、次のターミナルに移動します。 Ctrl+Shift+N はデフォルトで「新規ウィンドウを開く」に割り当てられていましたが、あまり使わないためfalse 条件で無効化した上で再割り当てしてしまっています。あまり使わないコマンドはCtrl+Shift+Pのコマンドパレットから呼び出すようにしています。

QuickPickのVimライクなナビゲーション

コマンドパレットやファイル検索(QuickPick)を開いたときの選択肢の移動を、Vimの補完ナビゲーションに合わせています。

キーコマンド説明
Ctrl+NquickInput.next次の候補を選択(デフォルト: Ctrl+↓
Ctrl+PquickInput.previous前の候補を選択(デフォルト: Ctrl+↑

Vimの補完ウィンドウと同じ Ctrl+N / Ctrl+P で候補を上下できるため、エディタとターミナル・QuickPickの間で指の動きが統一されます。

なお、Ctrl+P で「ファイルをすぐ開く(Quick Open)」を起動するデフォルト動作は when: false で無効化しています。これはVimの Ctrl+P と干渉するためです。

サイドバーのトグル

{
    "key": "ctrl+shift+b",
    "command": "workbench.action.toggleSidebarVisibility"
}

サイドバーの表示切り替えを Ctrl+Shift+B に変更しています。デフォルトの Ctrl+B はVimの「ページ上スクロール」と競合するためです。

AI・Copilot関連

キーコマンド説明
Ctrl+Shift+Iworkbench.panel.chatCopilotチャットパネルを開く
Ctrl+Shift+Lterminal.chat.startターミナル内でCopilotチャットを開始
Ctrl+Enterchat.submitチャットのメッセージを送信

Copilotチャットのパネルを開くデフォルトキーは Ctrl+Alt+I でしたが、押しにくいため Ctrl+Shift+I に変更しています。

ターミナルへのCopilotチャット開始は元々 Ctrl+I でしたが、VimのジャンプリストナビゲーションであるCtrl+I と競合するため Ctrl+Shift+L に変更しています。

チャットの送信は Enter ではなく Ctrl+Enter にしています。これにより、入力中に誤って送信してしまうミスを防げます。

ターミナル内の検索

{
    "key": "ctrl+shift+f",
    "command": "workbench.action.terminal.focusFind",
    "when": "terminalFindFocused && terminalHasBeenCreated || terminalFindFocused && terminalProcessSupported || terminalFocusInAny && terminalHasBeenCreated || terminalFocusInAny && terminalProcessSupported"
}

ターミナル内の文字列検索を Ctrl+Shift+F で起動するよう変更しています。デフォルトの Ctrl+F はVimの「ページ下スクロール」と競合するためです。

無効化したデフォルトショートカット

Vimのキーバインドと干渉するため、以下のデフォルトショートカットを when: false で無効化しています。

キー無効化したコマンド理由
Ctrl+VターミナルへのペーストVimのビジュアルブロックモードと競合
Ctrl+Gターミナルの最近使ったディレクトリへ移動Zshに割り当てているコマンドと競合するため
Ctrl+Spaceターミナルのサジェスト操作Zshの補完操作と競合するため
Ctrl+Iターミナルのサジェスト操作VimのジャンプリストCtrl+Iと競合

特にターミナルのサジェスト機能は筆者のZshの設定上ノイズになるため無効化しています。

まとめ

主なカスタマイズの方針は以下の通りです。

  • ターミナル操作は Ctrl+T プレフィックスに集約 — Vimに干渉しないプレフィックスキーを使い、関連操作をまとめる
  • VimキーバインドはVSCode側で無効化 — Ctrl+BCtrl+FCtrl+VCtrl+I などをVSCode側で無効化
  • QuickPickのナビゲーションをVim風に — Ctrl+N / Ctrl+P で上下移動できるように統一
  • Copilot操作は Ctrl+Shift+I / Ctrl+Shift+L — デフォルトより押しやすく、Vimと干渉しないキーへ変更

VSCodeのショートカットキーバインドはアップデートで追加・変更されることもあるため、定期的に見直していきたいと思います。

コメント

タイトルとURLをコピーしました