VS Code 1.84+ 版本已默认禁用官方 Settings Sync 功能,点击“Turn on Settings Sync”无响应或报错;替代方案是用私有 GitHub Gist 托管 settings.json 和 extensions.json,并通过脚本自动拉取与安装。

VS Code 官方账户同步(Settings Sync)在 1.84 版本后已默认关闭,Sync is disabled 错误会直接阻止登录和同步——这不是你配置错了,是微软主动停用了该功能。
为什么点“Turn on Settings Sync”没反应或报错
VS Code 自 2023 年底起逐步下线基于 GitHub/GitLab 账户的原生同步服务。1.84+ 版本中,settings sync 相关菜单项虽仍存在,但点击后实际调用的是空逻辑或返回 Sync is disabled。官方文档已移除相关说明,GitHub 上的 vscode-sync 扩展也早已归档。
这意味着:你无法再通过 VS Code 内置的“Sign in with GitHub”完成设置/扩展同步。
替代方案:用 GitHub Gist 手动托管 settings.json + extensions.json
这是目前最轻量、可控、跨平台且无需第三方服务的方案。核心是把两个关键文件推到私有 Gist,再在新设备上拉取并应用。
-
settings.json:存放在~/.config/Code/User/(Linux/macOS)或%APPDATA%\Code\User\(Windows) -
extensions.json:可通过命令导出:code --list-extensions > extensions.json,再手动补上code --install-extension命令模板 - Gist 必须设为 Private,否则 API 无法读取(GitHub 的限制)
- 推荐用
gistupCLI 工具发布:npm install -g gistup,然后gistup --private --desc "vscode-config" settings.json extensions.json
自动化恢复:用 shell 脚本一键重装
在新设备上,不需要手动复制粘贴。写一个脚本就能还原全部扩展和设置:
#!/bin/bash # fetch-config.sh GIST_ID="your-gist-id-here" curl -s "https://api.github.com/gists/$GIST_ID" | jq -r '.files."settings.json".content' > ~/.config/Code/User/settings.json curl -s "https://api.github.com/gists/$GIST_ID" | jq -r '.files."extensions.json".content' | while read ext; do [ -n "$ext" ] && code --install-extension "$ext" done
注意点:
- 需要提前安装
jq(解析 JSON)和curl - Windows 用户可用
PowerShell替代,但code命令需确保在 PATH 中(安装时勾选 “Add to PATH”) - 扩展名格式必须是
publisher.name,比如ms-python.python,不能只写python
扩展自动更新与冲突处理
扩展列表本身不会自动更新——你得定期手动运行 code --list-extensions > extensions.json 并提交新 Gist 版本。这点容易被忽略:
- 新增扩展后不更新 Gist → 下一台设备就漏装
- 卸载扩展后不更新 Gist → 下一台设备仍会重装已删的扩展
- 不同设备的
settings.json有本地路径差异(如"python.defaultInterpreterPath"),建议把这些字段从 Gist 中删掉,改用 VS Code 的settings.json的"[python]": {...}语法做语言级覆盖
真正的难点不在同步动作本身,而在于识别哪些配置是设备无关的、哪些必须隔离——比如终端字体、主题、快捷键可以同步;Python 解释器路径、SSH 配置、工作区特定设置则必须留空或注释掉。










