清空keybindings.json为[]是最直接有效的重置方式;它使vs code退回到内置默认快捷键,不删文件更稳妥,且需关闭settings sync以防旧配置恢复。

清空 keybindings.json 是最直接有效的做法
VS Code 的快捷键默认行为只在用户没覆盖时生效。只要你改过任何快捷键,改动就写进了 keybindings.json——哪怕只是右键点过“更改键绑定”,它也会生成一条记录。这个文件一旦存在且非空,VS Code 就优先读它,完全跳过内置默认。
清空内容比删文件更稳妥:VS Code 启动时若发现 keybindings.json 是空文件(或仅含 []),会直接忽略它,退回到内置逻辑;但如果你删了整个文件,它可能从缓存或旧同步状态里恢复出残缺内容。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入并执行
Preferences: Open Keyboard Shortcuts (JSON),确认路径末尾是User/keybindings.json - 全选 → 删除全部内容 → 保存(
Ctrl+S或Cmd+S) - 执行
Developer: Reload Window,无需重启整个编辑器
用快捷键编辑器移除单个冲突绑定,不碰全局配置
多数时候你并不需要全盘重置,只是某个组合键失效了(比如 Ctrl+P 打不开快速打开,或 Shift+Alt+F 不格式化)。这类问题往往由扩展注入的绑定、误操作覆盖,或语言模式错配导致。
直接在图形界面里定位修复,既快又安全,不会影响其他快捷键:
- 按
Ctrl+K Ctrl+S(Windows/Linux)或Cmd+K Cmd+S(macOS)打开快捷键编辑器 - 在搜索框输入命令 ID,例如
workbench.action.quickOpen或editor.action.formatDocument - 找到对应条目右侧显示的当前绑定,点击垃圾桶图标删除
- VS Code 立即回退到该命令的默认键位,实时生效
别忽略 Settings Sync 和扩展干扰
清空 keybindings.json 后快捷键还是不对?大概率是 Settings Sync 在后台自动拉取了旧配置,或者某个扩展(如 GitLens、Prettier、Volar)悄悄注册了自己的快捷键并覆盖了默认行为。
Settings Sync 开着,等于重置白做——你刚清空文件,一刷新,三个月前的 keybindings.json 又回来了。
- 先执行
Preferences: Turn Off Settings Sync,务必勾选Turn Off and Reset Local State - 重启 VS Code 后检查右下角齿轮旁是否还有云朵图标;没有才说明关成功
- 禁用所有扩展,再逐个启用,观察哪个一开就让快捷键异常
- 特别注意那些声明了
keybindings贡献点的扩展,它们的绑定优先级高于用户 JSON
keybindings.json 格式错误会导致静默失效
VS Code 对 keybindings.json 的语法宽容度极低:一个多余逗号、一行 // 注释、引号不闭合,都会让整个文件被跳过——不是报错,而是完全不加载,结果就是你自以为“还有效”的快捷键其实早没了,编辑器全靠内置默认撑着,但你根本不知道。
这种情况下,即使你手动写了新绑定,也毫无作用。验证方式很简单:
- 打开
keybindings.json,看是否含//、/* */、尾随逗号或未转义的双引号 - 把内容全选 → 粘贴进任意 JSON 校验器(如 jsonlint.com),确认无误再保存
- 如果校验失败,直接清空为
[]或留空,比修语法更快
真正麻烦的从来不是“怎么设快捷键”,而是“为什么设了却不生效”——绝大多数时候,问题不在你没写对,而在 VS Code 根本没读进去。











