vscode内置settings sync已停用,唯一可行方案是安装shan khan的settings sync扩展,需手动启用extension sync、keybinding sync等开关,通过github gist上传/下载配置,并注意token权限、路径过滤及工作区配置不参与同步。

VSCode内置Settings Sync已停用,必须换用Settings Sync扩展
官方Settings Sync功能在2023年底正式下线,现在点“Turn on Settings Sync”只会看到空白页或404。所有同步行为必须依赖Shan Khan开发的Settings Sync扩展——它不自动启用插件同步,也不默认上传keybindings.json,更不会告诉你哪些字段被静默过滤。
常见错误现象:新设备登录GitHub后显示“Synced”,但插件一个没装、快捷键还是默认的。原因就是没手动打开syncExtensions和syncKeybindings开关。
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),运行Sync: Advanced Options→ 逐个启用Toggle Extension Sync、Toggle Keybinding Sync、Toggle Snippet Sync - 首次上传时弹出的
Merge/Replace提示不能跳过:Merge会保留本地已装插件并叠加云端列表;Replace会清空本地插件再重装云端清单——选错直接丢掉一半插件 - 同步只管理“安装列表”,不触发实际安装:比如
ms-python.python卡在Installing…状态,得手动点扩展面板右上角刷新按钮
.sftp.json里uploadOnSave为true却没上传?检查watcher是否生效
uploadOnSave只是开关,不是魔法。它只在文件保存瞬间比对时间戳并上传变更内容,但前提是watcher已正确加载且未被其他进程干扰。
常见错误现象:改了index.js并保存,远程服务器文件没变;或者修改多个文件后只传了第一个。
- 确认
.sftp.json顶层有完整watcher区块:"watcher": { "files": "**/*", "autoUpload": true } - 修改配置后必须重启VSCode窗口(不是重载窗口),否则
watcher不会重新注册监听 - 如果项目根目录下有
.gitignore或.sftp.json里的exclude规则匹配了目标文件(如"*.js"),watcher会直接跳过,连日志都不打 - Windows用户注意:
remotePath必须用正斜杠/,写成\会导致路径解析失败,uploadOnSave静默失效
GitHub Token权限不足导致同步中断,但VSCode不报错
Settings Sync扩展通过GitHub Gist存储配置,但Token权限缺一不可。权限不够时,上传/下载动作看似成功,实际只写入空Gist或拉回旧版本——VSCode左下角仍显示“Synced”,没有任何提示。
典型表现:在Mac上配置好Python路径,同步到Windows设备后python.defaultInterpreterPath为空;或新装的rust-analyzer插件在另一台机器上始终不出现。
- Token必须勾选三项:
gist(必需)、user:email(用于识别账户)、read:user(用于校验身份) - 不要用“Tokens (fine-grained)”——Settings Sync只兼容“Tokens (classic)”
- 生成Token后,务必在VSCode中运行
Sync: Configure Gist重新绑定,不能只粘贴进弹窗就以为完事 - 敏感字段如
http.proxy、terminal.integrated.profiles.windows会被VSCode静默过滤,想强制同步需改用Git手动管理$HOME/.config/Code/User/目录
工作区级配置天然不同步,别指望.svn/settings.json自动上云
.vscode/settings.json是项目级配置,VSCode设计上就禁止它参与任何云同步。这是硬性限制,不是bug,也不是设置没开对。
常见误操作:在团队项目里把"editor.tabSize": 2写进工作区配置,以为新成员clone后就能自动生效;结果别人打开项目还是4空格缩进。
- 工作区配置只影响当前文件夹,不会上传到Gist,也不会出现在
Sync: Show Synced Data列表里 - 若需统一团队编辑器行为,应在
.editorconfig中声明基础规则(如缩进、换行),再配合插件如EditorConfig for VS Code读取 - 真正需要同步的用户级设置,必须写在全局
settings.json(路径:$HOME/.config/Code/User/settings.json或%APPDATA%\Code\User\settings.json) - 工作区里放
launch.json或tasks.json没问题,它们本身就不走同步通道,靠Git维护更安全
watcher没重启、Token少勾一个权限、工作区配置误当全局用——每个环节都安静得像什么都没发生,直到你发现某台机器的快捷键突然失灵,或者Python解释器路径空着。











