shan khan 版 settings sync 是当前唯一可靠方案:它通过 github gist 实现配置同步,需手动启用 syncextensions、排除本地路径字段,并注意跨平台差异与权限配置。

Settings Sync 扩展(Shan Khan 版)是当前唯一可靠方案
VSCode 官方 Settings Sync 功能已在 2023 年底正式弃用,现在点开齿轮菜单里的“Turn on Settings Sync…”或执行 Preferences: Turn on Settings Sync… 命令,实际已不生效。所有依赖微软后端的服务都停了,别再试 Microsoft 账户或 GitHub OAuth 登录内置同步——它不会上传,也不会下载。
Shan Khan 的 Settings Sync 扩展是目前事实标准:它绕过已下线的 API,直接读写你私有的 GitHub Gist,配置文件以纯文本形式存在,可审计、可回滚、不受企业网络 OAuth 屏蔽影响。
- 安装后必须重启 VSCode,否则
Sync: Login等命令不可见 - 首次登录 GitHub 时,必须勾选 gist 权限(不是
repo或user),否则后续所有操作静默失败 - 授权成功 ≠ 自动同步:必须手动运行
Sync: Upload Settings,否则 Gist 为空
syncExtensions 开关默认关闭,插件不会自动装上
很多人上传完发现 extensions.json 里有插件列表,但新设备下载后插件没装——这是因为 syncExtensions 默认是 false。它藏在高级选项里,不手动打开,插件同步就是摆设。
- 按
Ctrl+Shift+P输入Sync: Advanced Options - 选择
Toggle Extension Sync,确认状态变为enabled - 再运行一次
Sync: Upload Settings,此时extensions.json才会包含真实插件 ID(如ms-python.python) - 新设备运行
Sync: Download Settings后,需手动点击扩展面板右上角刷新按钮,或执行Extensions: Install Extensions from VSIX触发批量安装
跨平台同步时,这些字段必须显式排除
全局 settings.json 里混入本地路径、Python 解释器、终端 shell、WSL 路径等字段,同步到另一台系统会直接导致扩展崩溃、调试器打不开、甚至 Ctrl+Shift+P 卡死。
- 常见危险字段:
python.defaultInterpreterPath、terminal.integrated.profiles.windows、files.associations中含绝对路径的条目、editor.codeActionsOnSave里调用本地脚本的配置 - 安全做法:在
settings.json中添加"sync.ignoredSettings": ["python.defaultInterpreterPath", "terminal.integrated.profiles.*"] - 不要依赖“只同步 settings”就安全——很多插件会在 settings 里写入平台相关路径,必须主动过滤
快捷键同步失效?不是 bug,是平台隔离策略
你在 Windows 上设了 Ctrl+K Ctrl+S 打开快捷键面板,Mac 上还是 Cmd+K Cmd+S——这不是同步失败,是 VS Code 默认按 OS 分开存 keybindings,避免误操作。
- 想强制统一(比如你用 Karabiner 或 PowerToys 统一了键盘映射),在
settings.json加:"settingsSync.keybindingsPerPlatform": false - 加完必须重启 VSCode,再改一次快捷键,它才会覆盖所有平台绑定
- 改完别立刻切设备验证:等右下角云朵图标闪烁变蓝(表示上传完成),否则另一台设备拉不到更新
最常被忽略的一点:同步不是“设好就一劳永逸”。每次新增插件、修改解释器路径、重装系统后,都要重新检查 syncExtensions 是否仍为 enabled,sync.ignoredSettings 是否覆盖了新引入的本地字段——尤其当你用 WSL、Docker 或远程开发时,路径和 shell 配置极易悄悄混进去。











