vscode无自动检测冲突开关,需主动触发developer: toggle keybinding troubleshooter实时诊断;搜索快捷键可查覆盖项,非美键盘须设"keyboard.dispatch": "keycode"。

VSCode 里没有“自动检测冲突”的开关
VSCode 本身不提供一键扫描全部快捷键冲突的后台服务,所谓“自动检测”其实是靠你主动触发诊断工具,而不是它在后台默默报错。它只在你按下某个组合键时,悄悄匹配、静默忽略或执行错误命令——你根本看不到提示。
用 Developer: Toggle Keybinding Troubleshooter 实时抓取按键行为
这是最接近“自动检测”的真实手段:它不预扫描,但能实时告诉你“刚才那一下到底发生了什么”。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Developer: Toggle Keybinding Troubleshooter并回车 - 底部状态栏会出现「正在监听按键」,此时立刻按你想查的组合键(比如
Ctrl+D) - VSCode 会弹出面板,列出:收到的原始按键序列、匹配到的 command、被跳过的其他候选项及原因(例如
when条件不满足、优先级更低、被扩展拦截) - 如果某条目写着
not triggered because 'editorTextFocus' is false,说明你人在资源管理器里按了编辑器专用快捷键——不是冲突,是条件没达标
为什么 keybindings.json 里搜不到冲突却依然失效
因为很多冲突来自扩展动态注入,它们不写进你的 keybindings.json,也不出现在图形界面默认列表里,除非你主动搜索。
- 打开快捷键设置(
Ctrl+K Ctrl+S),在右上角搜索框直接输入ctrl+d这类组合键(注意小写、无空格) - 所有命中项都会显示,末尾标注来源:
Default、GitLens、vscodevim或你自己的user - 带黄色感叹号的条目 = 已被覆盖;绿色箭头指向的条目 = 当前实际生效的那个
- 扩展名右侧若显示“已禁用”,说明该绑定被你或其他规则压制了,但依然占位——得点垃圾桶图标彻底删掉
非美键盘用户必须改 keyboard.dispatch
中文、德语等键盘上,Ctrl+; 按下去可能被识别成 Ctrl+:,导致自定义失效——这不是冲突,是物理键映射错乱。
- 打开设置(
Ctrl+,),搜索keyboard.dispatch - 把它改成
"keyboard.dispatch": "keyCode",并确保这一行写在settings.json(不是keybindings.json)里 - 改完不用重启,但得重新按一次目标快捷键才能验证是否生效
- 这个设置影响所有快捷键,尤其对
Ctrl+[、Ctrl+]、Ctrl+;等符号键最敏感
真正麻烦的从来不是“怎么加快捷键”,而是“为什么加了没反应”——往往卡在 when 条件拼错、系统级拦截没关、或者 keyboard.dispatch 模式不对。这些地方不报错,也不高亮,只让你反复怀疑自己手残。











