🐛

VS CodeでCmd + Shift + [が動作しない問題を解決した方法

2024/12/14に公開

はじめに

ある日、VS Codeでタブを切り替えるショートカットキー「Cmd + Shift + [」が動作しない問題に直面しました。他のアプリケーション(例: ChromeやWarp)では正常に動作する一方で、VS Code内でのみこの問題が発生していました。

このようなケースに困っている方のために、解決までの手順をまとめました。


問題の概要

通常、「Cmd + Shift + [」はタブを左に移動するショートカットとして設定されています。しかし、以下の状況で問題が発生していました:

  • キー入力自体は反応している([単体では反応する)が、CmdやShiftとの組み合わせで無視される。
  • 他のアプリでは同じショートカットが正常に動作。
  • VS Code内では「Keyboard Shortcuts」の設定でキー入力が認識されない。

初期トラブルシューティング

問題の原因を特定するため、以下を試しましたが解決には至りませんでした。

  1. キーボードレイアウトの変更
    • 日本語キーボードから「英語(US)」レイアウトに切り替え。
  2. 別のキーボードを使用
    • Apple純正キーボードを利用。
  3. macOSの修飾キー設定を確認
    • デフォルトにリセット。
  4. VS Codeの再起動とキャッシュのクリア
    • 効果なし。

また、VS Codeのログを確認したところ、「Keyboard event cannot be dispatched」や「Ignoring single modifier meta」という記録が残っていました。これにより、VS Code内部の設定またはキーバインドが原因である可能性が浮上しました。


解決方法

手順1: キーバインディングのカスタマイズ

最終的に解決の鍵となったのは、keybindings.json に明示的な設定を追加する方法でした。

方法

  1. Command Palette で「Preferences: Open Keyboard Shortcuts (JSON)」を開く。

  2. 以下の内容を追加して保存します:

    [
      {
        "key": "cmd+shift+[",
        "command": "workbench.action.previousEditor",
        "when": "!terminalFocus"
      },
      {
        "key": "cmd+shift+]",
        "command": "workbench.action.nextEditor",
        "when": "!terminalFocus"
      }
    ]
    
  3. VS Code を再起動。

  4. ショートカットキーが正常に動作することを確認。

ポイント

  • when 条件を「!terminalFocus」に設定することで、ターミナルがフォーカスされている場合でも問題なく機能しました。
  • JSONファイルを直接編集することで、競合する設定を上書きしました。

ログの活用

問題の原因を特定するために、VS Code の「Developer: Toggle Keyboard Shortcuts Troubleshooting」を利用しました。このツールを使うと、以下の情報が得られます:

  • どのキーイベントが発生しているか。
  • イベントが無視される原因。

例えば、問題発生時のログには以下のように記録されていました:

+ Ignoring single modifier meta due to it being pressed together with other keys.

このログから、修飾キー(Cmd)が他のキーと組み合わせた状態で無視されていることが分かりました。


まとめ

今回の問題は、VS Codeの設定や内部でのキー解釈が原因で発生していました。しかし、keybindings.json をカスタマイズすることで解決することができました。

同じ問題に直面している方へのアドバイス

  1. 問題の切り分け
    • 他のアプリやキーボードで同じショートカットが動作するか確認。
  2. ログの確認
    • Developer Tools のショートカットトラブルシューティングを活用。
  3. JSON設定を直接編集
    • 必要に応じて when 条件を追加。

この記事が、同様の課題に直面した方々の助けになれば幸いです!

Discussion