禁用插件快捷键需在keybindings.json中添加{"key":"组合键","command":"-完整命令id"}格式规则,命令id须右键快捷键条目复制获取,如-gitlens.showquickfilehistory;禁用后仍触发常见因json语法错误、when条件拼写错误、未保存文件或系统/输入法劫持按键。

VSCode里禁用某个插件的快捷键,不需要卸载插件、也不需要关掉它的全部功能——只要在keybindings.json里加一条带-前缀的规则,就能精准摘除它的按键绑定。
怎么写有效的“禁用命令”规则
减号语法只认完整的命令 ID,不是功能名、不是插件名、也不是你在快捷键面板里看到的中文描述。比如 GitLens 的「文件历史」对应的是gitlens.showQuickFileHistory,不是showFileHistory或gitlens.history。
- 正确做法:在快捷键界面(
Ctrl+K Ctrl+S)搜索目标组合键(如ctrl+shift+h),找到 GitLens 那条,右键 → “复制命令 ID”,粘贴后前面加- - 错误写法:
{"key": "ctrl+shift+h", "command": "-showQuickFileHistory"}(缺 publisher 和插件命名空间) - 最终应类似:
{"key": "ctrl+shift+h", "command": "-gitlens.showQuickFileHistory"}
为什么禁用后快捷键还是被触发
常见原因不是规则没生效,而是 VSCode 根本没加载这条规则——它被更早的语法错误或拼写错误静默忽略了。
-
when条件写错一个字母(比如editorTextFocu少个s),整条绑定失效,且不报错 - 规则写在了错误位置:必须放在
keybindings.json的顶层数组里,不能嵌套在对象中 - 没保存文件:VSCode 不会自动重载
keybindings.json,改完必须手动保存(Ctrl+S) - 系统或输入法劫持了按键本身(如中文输入法吞掉
ctrl+/),这时禁用命令 ID 毫无意义
禁用插件快捷键时要不要删掉它的默认绑定
不用删。VSCode 的键绑定优先级是:用户自定义 > 扩展默认 > 内置默认。你加的-规则本身就是用户级,天然覆盖插件自带的绑定。
- 右键菜单里的“删除键绑定”只是帮你自动生成那条
-规则,和手动写效果一样 - “重置键绑定”是删掉你写的规则,恢复成插件默认值——这反而会让冲突回来
- 如果插件绑了多个键(比如 Vim 插件占了几十个),逐条禁用太累,建议直接禁用整个插件,或换用更轻量的替代品
最易被忽略的一点:禁用命令 ID 只影响快捷键,不影响插件后台服务。比如禁用了-gitlens.toggleFileBlame,GitLens 的代码行注释(blame)可能还在运行并占用内存——要彻底释放资源,得配合禁用插件本身或关闭其设置项。











