直接改keybindings.json是唯一可靠解法,必须通过Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)执行“Preferences: Open Keyboard Shortcuts (JSON)”打开用户级配置文件,禁用插件快捷键需用"-commandId"格式,when条件拼错将静默失效。

直接改 keybindings.json 是唯一可靠解法,其他方式(比如在图形界面里点“禁用”)只改缓存、不持久,重启就失效。
怎么打开真正生效的 keybindings.json 文件
别用“Open Settings (JSON)”——那是改 settings.json 的,和快捷键完全无关。必须走命令面板:Ctrl+Shift+P(macOS 是 Cmd+Shift+P)→ 输入并执行 Preferences: Open Keyboard Shortcuts (JSON)。VSCode 会自动打开用户级配置文件,路径通常是:
- Windows:
%APPDATA%\Code\User\keybindings.json - macOS:
~/Library/Application Support/Code/User/keybindings.json - Linux:
~/.config/Code/User/keybindings.json
这个文件默认是空数组 [],所有自定义项都得塞进方括号里。手动去文件系统找、复制粘贴路径,容易选错位置或权限异常;误开成其他 JSON 文件,改半天也不会生效。
禁用插件快捷键的正确写法
想让 GitLens 不再抢 Ctrl+Shift+B,但又不想卸载它?不能写 "command": "" 或 "command": null——VSCode 会直接忽略整条规则。必须用负号前缀明确取消绑定:
[{"key":"ctrl+shift+b","command":"-gitlens.showQuickFileHistory"}]
关键点:
-
command必须写全命令 ID,右键快捷键列表 → “复制命令 ID” 最稳妥 -
-必须紧挨着命令名,不能有空格,比如"- gitlens.showQuickFileHistory"无效 - 这条只是释放组合键,
Ctrl+Shift+B不会报错,但也不会触发任何操作——你得自己补一条新绑定,否则等于废掉
when 条件写错,VSCode 从不提醒,但快捷键一定失效
when 是布尔表达式,拼错一个字母就静默失效。比如把 editorTextFocus 写成 editorTextFocu,VSCode 不报错、不警告、也不高亮,整条规则直接被跳过。
常见安全条件有:
-
editorTextFocus(仅编辑器有焦点时) -
explorerViewletVisible(仅资源管理器可见时) -
terminalFocus(仅终端聚焦时)
别手写,从官方文档复制。漏写或写错 when,会导致快捷键在不该生效的地方触发,或该生效时完全沉默——而你根本看不到提示。
最麻烦的不是找不到冲突源,而是冲突发生在 when 条件满足的瞬间:比如 GitLens 只在编辑器聚焦且光标在代码行时才激活 Ctrl+Shift+B,你调试时切到终端再按,它就不响,你以为修好了,其实只是条件没达成。这类问题必须用 Developer: Toggle Keybinding Troubleshooter 实时抓取,不能靠猜。











