立刻查出劫持 ctrl+shift+p 的扩展,运行 developer: toggle keybinding troubleshooter 后再按该组合键,面板将实时列出所有匹配绑定项、来源扩展、命令 id 及覆盖状态。

怎么立刻查出谁劫持了 Ctrl+Shift+P
直接运行 Developer: Toggle Keybinding Troubleshooter,然后马上再按一次 Ctrl+Shift+P。VSCode 会弹出一个实时诊断面板,列出所有匹配该组合的绑定项——包括来源扩展名(如 GitLens、Bracket Pair Colorizer)、命令 ID(如 workbench.action.quickOpen),以及是否被更高优先级规则覆盖(标为 “overridden”)。这个面板比翻设置快得多,还能捕获 Remote - SSH 连接后才加载的动态绑定。
别依赖“看起来只有一条”:点开带 ▶ 的条目才能看到完整命令 ID 和 when 条件;灰色条目不等于无效,只是当前上下文不满足条件。
keybindings.json 写完没生效?先看这三处
不是语法报错才叫问题。VSCode 对 JSON 格式宽容,但对逻辑极其严格:
-
keybindings.json必须是合法 JSON 数组格式,哪怕只加一条,也得包在[ ]里,且每条对象后要加逗号(最后一项除外) -
when条件写得太窄,比如"when": "editorTextFocus",你在资源管理器或终端里按快捷键,它就完全静音 - 系统或输入法根本没把按键传给 VSCode:搜狗拼音、Logitech Options、Raycast 都干过这事;临时退出它们再试一次,比重配十次更快
安全禁用插件快捷键,不卸载也不留坑
不想删 GitLens,又受不了它抢走 Ctrl+Shift+H?用负号语法最干净:
[{"key":"ctrl+shift+h","command":"-gitlens.showQuickFileHistory"}]
这个 - 前缀是 VSCode 官方支持的语法,表示“取消该命令的默认绑定”,不报错、不冲突、不影响插件其他功能。注意:
- 命令 ID 必须写全,右键快捷键列表里的对应项 → “复制命令 ID” 最稳妥
- 别写
"command": ""或留空字符串,VSCode 会整条忽略 - 禁用后,该快捷键不会变灰,只是不再触发——你得自己补上新绑定,否则等于废掉了
非美键盘用户必调的隐藏设置
中文、德语、日语键盘下,Ctrl+; 常被识别成 Ctrl+:,导致自定义失效。这不是 bug,而是 VSCode 默认按字符 dispatch 导致的映射错乱。
解决方法:打开 settings.json(不是 keybindings.json),添加:
"keyboard.dispatch": "keyCode"
这个设置必须写在用户设置里,且只对物理按键位置做判断。改完后,Ctrl+; 才真正是你按下的左下角那个键,而不是它“想”输出的那个字符。
when 条件和 keyboard.dispatch 是两个最容易被跳过的点,但它们决定了你的配置到底起不起作用——尤其当你在中文输入法下反复调试却始终失败时。











