最安全的导出方式是通过命令“preferences: open keyboard shortcuts (json)”直接打开 keybindings.json,避免手动查找文件路径;该文件若为空需保存空对象{}以防解析跳过;json格式必须严格合规(禁用注释、末尾逗号、中文符号);恢复时应差异比对而非覆盖;跨平台迁移需手动将cmd替换为ctrl,vscode不自动转换。

直接打开 keybindings.json 是最安全的导出方式
别去文件系统里翻找路径——%APPDATA%\Code\User\(Windows)、~/.config/Code/User/(Linux)或 ~/Library/Application Support/Code/User/(macOS)这些目录可能为空、被缓存干扰,甚至指向只读的系统模板。VSCode 的命令 Preferences: Open Keyboard Shortcuts (JSON) 会强制加载或创建有效的用户级 keybindings.json,确保你看到的是真实生效的配置。
如果文件是空的(只含 {} 或根本没内容),说明你还没自定义过快捷键。此时手动保存一个空对象比留空强——VSCode 在后续写入时会以此为基础合并,否则可能跳过整个文件解析。
keybindings.json 的 JSON 格式陷阱会导致静默失效
VSCode 对 JSON 错误极其宽容:不报错,也不提示,而是直接忽略整个文件。你感觉“快捷键丢了”,其实是配置根本没加载。必须检查以下三点:
-
// 注释—— JSON 不支持单行注释,删掉;/* */块注释 VSCode 也不认,最稳妥是彻底删除所有注释 - 末尾逗号 —— 比如
"when": "editorTextFocus",这一行末尾的逗号,在数组最后一项后是非法的 - 中文引号或全角符号 —— 把
"command"写成“command”,会导致解析失败
快速验证方法:按 Ctrl+Shift+I(或 Cmd+Option+I)打开开发者工具,切换到 Console 标签页,粘贴 JSON.parse(document.querySelector('vscode-editor').innerText)(需先聚焦在 keybindings.json 编辑器内),报错即说明格式非法。
恢复时别覆盖,先做差异比对
直接把备份的 keybindings.json 覆盖到目标路径,容易引发冲突,尤其当你启用了 Settings Sync:本地文件可能被云端覆盖,或新文件同步后把旧设备的快捷键冲掉。
更稳妥的做法是:
- 用
diff -u(macOS/Linux)或Compare-Object(PowerShell)对比当前和备份内容 - 只合并你真正需要的条目,而不是全量替换
- 如果只想还原某几个快捷键,直接在命令面板打开
Preferences: Open Keyboard Shortcuts (JSON),粘贴对应片段,保存即可
跨平台迁移时 ctrl 和 cmd 不会自动转换
VSCode 不会把 Windows 的 "key": "ctrl+shift+p" 在 macOS 上自动转成 "cmd+shift+p"。它原样加载,结果就是快捷键失效。官方文档明确说明:跨平台快捷键需手动适配。
如果你的备份要用于多系统环境,必须显式区分:
- macOS 用户应使用
cmd - Windows/Linux 用户应使用
ctrl - 不能混用,也不能依赖“自动映射”这种不存在的机制
最容易被忽略的点是:你导出时用的是 macOS 环境,但备份文件里写了 cmd,拿到 Windows 上就完全无效——而 VSCode 不会报错,也不会提醒你。











