按 Ctrl+Shift+P 后执行 Developer: Toggle Keybinding Troubleshooter,再按 Ctrl+Shift+P,面板中带 ▶ 的绿色条目即劫持该快捷键的命令及来源扩展。

Ctrl+Shift+P、F5、Ctrl+/ 这些键一按没反应,不是 VSCode 坏了,而是肯定有某个命令正在“抢”它——直接用内置排查器抓现行,别猜。
怎么立刻定位哪个扩展劫持了 Ctrl+Shift+P
VSCode 不会弹窗警告,但只要你按下快捷键没触发预期动作,基本就是被覆盖了。最准的办法是:
- 按
Ctrl+Shift+P→ 输入并执行Developer: Toggle Keybinding Troubleshooter - 立刻再按一次
Ctrl+Shift+P - 面板里带 ▶ 的绿色条目,就是当前真正在执行的命令,来源扩展名(如
GitLens)、完整commandID(如gitlens.showQuickFileHistory)都清清楚楚
灰色条目只是 when 条件不满足,不代表没冲突;动态加载的扩展(比如 Remote - SSH)也能被它捕获。
禁用插件快捷键但不卸载插件的正确写法
不想删 GitLens,又受不了它抢走 Ctrl+Shift+B?不用关整个插件,直接在 keybindings.json 里加负向规则:
[{"key":"ctrl+shift+b","command":"-gitlens.showQuickFileHistory"}]注意三点:
-
command必须写全,大小写、点号一个都不能错;右键对应条目 → “复制命令 ID” 最稳妥 - 这条只取消绑定,
Ctrl+Shift+B不会变灰也不会报错,但它确实不再触发任何操作——你得自己补一条新绑定,否则等于废掉 - 别写
"command": ""或null,VSCode 会整条忽略该配置
为什么改了 keybindings.json 却没生效
手动编辑后快捷键依旧老样子,大概率卡在这几个隐性环节:
-
when条件写得太窄,比如只写"when": "editorTextFocus",你在终端或设置页按,自然不触发;常用组合如editorTextFocus && !editorReadonly更稳妥 - 系统或输入法根本没把按键传给 VSCode:搜狗拼音、Logitech Options、Raycast 都干过这事;临时退出它们再试一次,比改十次配置更快
- 非美式键盘用户必须检查
settings.json是否设置了"keyboard.dispatch": "keyCode",否则Ctrl+;可能被识别成Ctrl+:,导致绑定失败
另外,VSCode 不校验 JSON 语法错误,但只要少一个逗号、多一个引号、或数组没包在 [ ] 里,整份配置就静默失效——务必通过快捷键面板右上角的「打开键盘快捷方式(JSON)」入口进入编辑。
中文输入法下 Ctrl+/ 失效的绕过方案
这不是 VSCode 的问题,是中文输入法(搜狗、微软拼音、QQ)在中文状态下把 Ctrl+/ 当成中英文切换快捷键吃掉了。验证方法很简单:按一次 Shift 切到英文状态,再按 Ctrl+/,立刻生效。
真正有效的动作只有两个:
- 关输入法的快捷键开关:搜狗 → 设置 → 高级 → 快捷键 → 关闭「使用快捷键快速中英文切换」
- 改用
chord绑定(两段式),比如Ctrl+K Ctrl+/,几乎从不被输入法处理
可直接在 keybindings.json 中添加:
[{"key":"ctrl+k ctrl+/","command":"editor.action.commentLine","when":"editorTextFocus && !editorReadonly"}]别碰所谓 imeMode 类插件,它们解决不了底层劫持,反而可能和 VSCodeVim 冲突或破坏远程开发焦点逻辑。


















