VS CodeでCmd + Shift + [が動作しない問題を解決した方法
はじめに
ある日、VS Codeでタブを切り替えるショートカットキー「Cmd + Shift + [」が動作しない問題に直面しました。他のアプリケーション(例: ChromeやWarp)では正常に動作する一方で、VS Code内でのみこの問題が発生していました。
このようなケースに困っている方のために、解決までの手順をまとめました。
問題の概要
通常、「Cmd + Shift + [」はタブを左に移動するショートカットとして設定されています。しかし、以下の状況で問題が発生していました:
- キー入力自体は反応している([単体では反応する)が、CmdやShiftとの組み合わせで無視される。
- 他のアプリでは同じショートカットが正常に動作。
- VS Code内では「Keyboard Shortcuts」の設定でキー入力が認識されない。
初期トラブルシューティング
問題の原因を特定するため、以下を試しましたが解決には至りませんでした。
-
キーボードレイアウトの変更
- 日本語キーボードから「英語(US)」レイアウトに切り替え。
-
別のキーボードを使用
- Apple純正キーボードを利用。
-
macOSの修飾キー設定を確認
- デフォルトにリセット。
-
VS Codeの再起動とキャッシュのクリア
- 効果なし。
また、VS Codeのログを確認したところ、「Keyboard event cannot be dispatched」や「Ignoring single modifier meta」という記録が残っていました。これにより、VS Code内部の設定またはキーバインドが原因である可能性が浮上しました。
解決方法
手順1: キーバインディングのカスタマイズ
最終的に解決の鍵となったのは、keybindings.json
に明示的な設定を追加する方法でした。
方法
-
Command Palette で「Preferences: Open Keyboard Shortcuts (JSON)」を開く。
-
以下の内容を追加して保存します:
[ { "key": "cmd+shift+[", "command": "workbench.action.previousEditor", "when": "!terminalFocus" }, { "key": "cmd+shift+]", "command": "workbench.action.nextEditor", "when": "!terminalFocus" } ]
-
VS Code を再起動。
-
ショートカットキーが正常に動作することを確認。
ポイント
-
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
をカスタマイズすることで解決することができました。
同じ問題に直面している方へのアドバイス
-
問題の切り分け
- 他のアプリやキーボードで同じショートカットが動作するか確認。
-
ログの確認
- Developer Tools のショートカットトラブルシューティングを活用。
-
JSON設定を直接編集
- 必要に応じて
when
条件を追加。
- 必要に応じて
この記事が、同様の課題に直面した方々の助けになれば幸いです!
Discussion