90%的快捷键失效是keybindings.json语法错误或when条件错误;VSCode对JSON格式宽容导致静默丢弃整个文件,需确保方括号包裹、逗号分隔且无末尾逗号,通过命令入口编辑并重载窗口验证。

重绑快捷键后没反应、触发错功能、甚至整个快捷键文件失效——90% 是 keybindings.json 语法错误或 when 条件写错,不是 VSCode 坏了,也不是扩展冲突难解。
为什么改完 keybindings.json 一点反应都没有
VSCode 对 JSON 格式极其“宽容”:少个逗号、多引号、数组没包在 [ ] 里,它不报错、不提示、不警告,直接整份配置静默丢弃——你看到的全是默认快捷键,就像什么都没改过。
- 打开
Preferences: Open Keyboard Shortcuts (JSON)后,确认文件开头是[、结尾是],中间每条规则用逗号分隔,最后一条不能有逗号 - 别手写路径或复制粘贴到错误位置;必须通过这个命令入口编辑,否则 VSCode 根本不读取
- 改完保存后立刻生效,但若涉及焦点条件(比如只在编辑器中生效),建议执行
Developer: Reload Window确保重载
按了快捷键却触发了别的命令
这不是随机错乱,而是多个绑定同时匹配,VSCode 按顺序执行——最后一条生效。图形界面里标黄的“冲突”提示,就是它在告诉你:有不止一条规则盯上了这个组合键。
- 用
Ctrl+K Ctrl+S搜索你的快捷键(如ctrl+shift+b),看所有命中项,注意末尾标注的来源(Default、Prettier、GitLens)和when条件 - 绿色带 ▶ 的那条才是当前实际执行的;灰色条目只是条件不满足,不代表没绑定
- 想覆盖插件绑定,别删它,直接在
keybindings.json末尾加一条新规则,靠位置优先级接管
怎么安全禁用插件快捷键而不卸载插件
很多插件(比如 vscodevim、gitlens)一装就抢走一堆键,但关掉插件等于放弃核心功能。官方支持的精准禁用方式,是用 - 前缀语法。
- 右键快捷键列表中那条干扰项 → “复制命令 ID”,例如
gitlens.showQuickFileHistory - 在
keybindings.json中添加:{"key":"ctrl+shift+b","command":"-gitlens.showQuickFileHistory"} - 这条只取消绑定,不删功能;
command必须写全、大小写和点号都不能错,写成空字符串或null会被 VSCode 完全忽略
双击 Shift、Ctrl+/ 这类快捷键特别容易失效
它们常被输入法、系统工具或非标准插件劫持,且不走常规绑定流程,图形界面的「重置」往往无效。
- 中文输入法下
ctrl+/很可能被转成中英文切换,先关掉搜狗/QQ拼音再试一次,比调十次配置更快 - 非美式键盘用户,检查
settings.json是否设置了"keyboard.dispatch": "keyCode",否则ctrl+;可能被识别为ctrl+: - 双击 Shift 属于连续按键检测,部分插件监听的是底层
keydown序列,图形界面根本看不到——必须手动在keybindings.json末尾加"when": "true"的覆盖规则
最常被忽略的其实是 when 条件的精度:写太宽(比如漏掉 !editorReadonly)会在只读文件里误触发;写太窄(比如只写 editorTextFocus)又导致在终端或设置页里完全失灵。它不是可选项,而是控制作用域的安全阀。


















