直接按Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Developer: Toggle Keyboard Shortcut Troubleshooting并回车即可开启键盘事件日志;它是一个实时面板,每次按键后在右下角显示捕获结果、命令匹配状态及冲突详情。

VSCode 里怎么打开键盘事件日志(keybinding resolver)?
直接按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Developer: Toggle Keyboard Shortcut Troubleshooting,回车即可开启。它不是“日志文件”,而是一个实时面板——每次你按下一个键,VSCode 就会在右下角弹出一条记录,告诉你这个按键被哪个命令捕获、是否被拦截、有没有冲突。
为什么按了快捷键没反应?先看 keybinding resolver 能不能捕获到
很多“快捷键失效”问题其实根本不是配置错了,而是按键压根没被 VSCode 收到。比如:
- 系统级快捷键抢占(如
Ctrl+Space被输入法 hijack) - 终端聚焦时按键被 shell 拦截(此时 keybinding resolver 不显示任何内容)
- 扩展注册了同名命令但未激活,或命令名拼写错误(如把
editor.action.formatDocument写成editor.formatDocument)
只要 resolver 面板没反应,就说明问题不在 VSCode 键位绑定层,得去查系统、输入法或当前焦点状态。
Developer: Toggle Keyboard Shortcut Troubleshooting 的输出怎么看?
每次按键后,面板会显示类似这样的三行:
Keybinding Resolver: Press Esc to exit [2024-05-12 14:22:33.123] Resolving keydown: Ctrl+K Ctrl+I [2024-05-12 14:22:33.124] > Command 'editor.action.inspectEditorTokens' was found
重点看最后一行:
- 如果显示
was found,说明绑定成功,执行了对应命令 - 如果显示
no command found,说明没匹配到任何命令,可能是快捷键没定义,或作用域不匹配(比如在调试器里按了只在编辑器生效的快捷键) - 如果显示
conflicting keybindings,说明有多个命令绑定了相同组合键,resolver 会列出全部,并标出优先级高的那个
想永久保留按键记录?别折腾日志文件
VSCode 没提供“保存为日志文件”的功能,也不建议手动抓取 DevTools Console 里的事件——那些是原始 DOM 事件,和 VSCode 内部命令解析无关。真要排查长期问题,更可靠的做法是:
- 用 resolver 确认按键是否被识别
- 检查
keybindings.json中是否有覆盖规则(尤其注意when条件表达式是否为 false) - 禁用所有扩展,逐个启用,观察 resolver 行为变化
resolver 面板本身不记录历史,但它实时、准确、无延迟——这才是设计意图:不是给你存日志,而是帮你当场定位卡点。


















