设置同步
设置同步允许你在各台机器之间共享Visual Studio Code的配置,比如设置、键盘快捷键和已安装的扩展,这样你就能随时使用你最喜欢的配置。
注意:VS Code 不会同步你的扩展到或同步远程窗口,比如连接 SSH、开发容器(devcontainer)或 WSL 时。
开启设置同步
你可以在“管理装备”菜单或活动栏底部的账户菜单中,使用“备份和同步设置”项来开启设置同步。

要使用同步设置,你需要登录并选择你想同步的设置。目前,设置同步支持以下设置:
- 背景设定
- 键盘快捷键
- 用户摘要
- 用户任务
- UI州
- 扩展
- 简介

当你选择登录按钮时,可以选择用 Microsoft 或 GitHub 账户登录。

选择后,浏览器会打开,你可以登录你的 Microsoft 或 GitHub 账户。如果你选择了Microsoft账户,可以使用个人账户,比如Outlook账户,或者Azure账户,你也可以将GitHub账户与新的或现有的Microsoft账户关联。
登录后,设置同步会被打开,并会在后台自动同步你的偏好设置。
合并或替换
如果你已经从一台机器同步,并且在另一台机器开启同步,你会看到以下合并或替换对话框。

- 合并:选择此选项将本地设置与云端远程设置合并。
- 替换本地:选择此选项将覆盖本地设置,使用云端的远程设置。
- 手动合并......:选择此选项会打开“合并视图”,您可以逐个合并偏好。

配置同步数据
机器设置(其中机器或机器可覆盖 示波器)由于其值是特定机器特有的,默认情况下并非同步。你也可以从设置编辑器或使用设置添加或删除你想要的设置

键盘快捷键默认是按平台同步的。如果你的快捷键与平台无关,可以通过关闭设置来跨平台同步
所有内置和已安装的扩展及其全局启用状态都同步。你可以跳过同步扩展,无论是在扩展视图(Windows,Linux Ctrl+Shift+X)中,还是使用设置

以下UI状态目前同步:
- 显示语言
- 活动栏条目
- 小组参赛作品
- 视图布局与可见性
- 最近使用的命令
- 请勿再次显示通知
你总可以通过设置同步:配置命令更改同步内容,或者打开管理齿轮菜单,选择设置同步为开启,然后选择设置同步:配置。
冲突
在多台机器之间同步设置时,偶尔可能会发生冲突。冲突可能发生在机器间首次设置同步,或者机器离线时设置更改。当发生冲突时,您将面临以下选项:
- 接受本地设置:选择此选项会覆盖云端的远程设置,并保留本地设置。
- 接受远程:选择此选项将覆盖本地设置,并用云端的远程设置覆盖。
- 显示冲突:选择此选项后会显示一个类似于源控差异编辑器的差异编辑器,你可以预览本地和远程设置,选择接受本地或远程设置,或手动在本地设置文件中解决更改后接受本地文件。
账户切换
如果你想将数据同步到另一个账户,可以关闭并重新启用设置同步功能。关闭同步的命令是设置同步:关闭。
同步稳定版与内部用户
默认情况下,VS Code Stable 和 Insiders 版本使用不同的设置同步服务,因此不会共享设置。你可以选择Stable sync服务并开启设置同步,将Insiders与Stable同步。这个选项仅在VS Code Insiders中提供。

注:由于 Insider 版本比稳定版更新,同步它们有时会导致数据不兼容。在这种情况下,稳定版会自动禁用设置同步,以防止数据不一致。一旦稳定版新版本发布,你可以升级稳定客户端并开启同步以继续同步。
数据恢复
VS Code 在同步时总会存储你的偏好设置的本地和远程备份,并提供访问这些偏好的视图。如果出现问题,你可以从这些视图恢复数据。

您可以使用命令面板中的设置同步:显示同步数据命令打开这些视图。本地同步活动视图默认是隐藏的,你可以在设置下的视图子菜单中启用它,同步视图溢出作。

磁盘中的本地备份文件夹可以通过设置同步:打开本地备份文件夹命令访问。文件夹按偏好类型组织,包含你的 JSON 文件版本,文件名称带有备份时间戳。
注意:本地备份在30天后会自动删除。对于远程备份,每个资源(设置、扩展等)的最新20个版本都会被保留。
同步机器
VS Code 跟踪机器同步你的偏好设置,并提供访问它们的视图。每台机器都会根据VS代码类型(Insiders或Stable)及其所处平台赋予默认名称。你总可以通过视图中机器条目上的编辑作更新机器名称。你也可以在视图中通过“关闭设置同步”的右键菜单作,在机器条目中禁用同步。

你可以在命令面板中使用设置同步:显示同步数据的命令打开这个视图。
扩展作者
如果你是扩展作者,应确保用户启用“设置同步”时扩展的行为正常。例如,你可能不希望扩展在多台机器上显示相同的被关闭通知或欢迎页。
同步用户全局状态
如果你的扩展需要在不同机器之间保留某些用户状态,那就用设置同步提供该状态VScode。ExtensionContext.globalState.setKeysForSync.在不同机器之间共享UI关闭或已查看标志等状态,可以提供更好的用户体验。
有一个例子是setKeysforSync在扩展能力主题中。
报告问题
设置同步活动可以在日志(设置同步)输出视图中监控。如果你在设置同步中遇到问题,请在创建问题时附上这份日志。如果你的问题与身份验证有关,也可以附上账户输出视图的日志。
我该如何删除我的数据?
如果你想从我们的服务器上删除所有数据,只需通过设置关闭同步,在“管理齿轮”菜单中查看同步已开启,然后勾选清除所有云数据的复选框即可。如果你选择重新启用同步,就像你第一次登录一样。
下一步
- 用户和工作区设置——了解如何通过用户和工作区设置将VS Code配置到你的偏好中。
常见问题
VS Code 设置同步和设置同步扩展是一样的吗?
不,Shan Khan 的设置同步扩展使用了 GitHub 上的私有 Gist 来分享你的 VS Code 设置,跨越不同机器,这和 VS Code 设置同步无关。
我可以使用哪些类型的账户进行设置同步登录?
VS Code 设置同步支持用 Microsoft 账户(例如 Outlook 或 Azure 账户)或 GitHub 账户登录。不支持使用GitHub企业账户登录。未来可能会支持其他认证提供者,您可以在#88309期中查看拟议的认证提供者API。
注意:VS Code 设置同步目前不支持使用您的 Microsoft Sovereign Cloud 账户。如果你愿意这样做,请告诉我们你想在本 GitHub 问题中使用哪种 Microsoft 主权云。
我可以用不同的后端或服务来实现设置同步吗?
设置同步使用专用服务来存储设置并协调更新。未来可能会公开服务提供商API,以支持自定义设置同步后端。
排查钥匙扣问题
注意:本节适用于VS Code 1.80及以上版本。在1.80版本中,由于keytar的归档性,我们放弃了keytar,转而采用Electron的safeStorage API。
注意:钥匙扣、钥匙圈、钱包、凭证存储在本文档中是同义词。
设置同步通过作系统密钥链加密,在桌面上保持认证信息。如果钥匙扣配置错误或环境未被识别,使用钥匙扣在某些情况下可能会失败。
为了帮助诊断问题,你可以用以下标志重启 VS Code,生成冗长日志:
code --verbose --vmodule="*/components/os_crypt/*=1"
Windows 和 macOS
目前Windows和macOS上都没有已知的配置问题,但如果你怀疑有问题,可以在VS Code上用上面冗长的日志提交相关问题。这对我们支持更多桌面配置非常重要。
Linux
在上一个命令日志的顶部,你会看到大致内容:
[9699:0626/093542.027629:VERBOSE1:key_storage_util_linux.cc(54)] Password storage detected desktop environment: GNOME
[9699:0626/093542.027660:VERBOSE1:key_storage_linux.cc(122)] Selected backend for OSCrypt: GNOME_LIBSECRET
我们依赖Chromium的OSCRYPT模块来发现并存储密钥环中的加密密钥信息。Chromium 支持多种不同的桌面环境。下面列出了一些流行的桌面环境和故障排除步骤,如果钥匙圈配置错误,可能会有所帮助。
GNOME 或 UNITY(或类似软件)
如果你看到的错误是“无法在锁定的收藏中创建物品”,很可能是你的钥匙圈登录钥匙圈锁着。你应该启动作系统的钥匙圈(Seahorse 是查看钥匙圈的常用图形界面),并确保默认钥匙圈(通常称为登录钥匙扣)已经解锁。登录系统时需要解锁这个钥匙圈。
KDE
KDE 6 尚未被 Visual Studio Code 完全支持 KDE。作为一个变通方法:最新的kwallet6也可以通过kwallet5访问,所以你可以通过设置密码存储为
kwallet5如下文“配置钥匙圈以配合VS代码”一文。
你的钱包(也就是钥匙圈)可能已经关闭了。如果你打开KWalletManager,可以看到默认设置KDEWALLET是关闭的,如果是,务必打开它。
如果你用的是KDE5或更高版本,并且连接时遇到困难kwallet5(就像非官方VS Code Flatpak在#189672期的用户一样),你可以尝试配置钥匙圈侏儒自由秘密因为这会使用特勤局 API 与任何有效的密钥圈通信。kwallet5实现了秘密特工API,并可使用此方法访问。
如果你仍然难以连接kwallet5,一些用户报告称授予特定的D-Bus服务权限是一个可行的解决方案:
flatpak override --user --talk-name=org.kde.kwalletd5 --talk-name=org.freedesktop.secrets com.visualstudio.code
其他Linux桌面环境
首先,如果你的桌面环境没被检测到,你可以用上面那些冗长的日志在VS Code上开启一个问题。这对我们支持更多桌面配置非常重要。
(推荐)将钥匙圈配置为与VS Code一起使用
你可以手动告诉VS Code用哪个钥匙圈,方法是传递密码存储旗帜。我们推荐的配置是,如果你还没有安装gnome-keyring,然后用Code --password-store=“gnome-libsecret”.
如果这个方法对你有效,你可以保留 的值密码存储通过打开命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P))并运行“偏好设置:配置运行时参数”命令。这将打开argv.json你可以添加设置的文件“password-store”:gnome-libsecret”.
以下是所有可能的值密码存储如果你想试试用别的钥匙圈,可以试试侏儒钥匙圈:
kwallet5:用于kwalletmanager5。侏儒自由秘密: 用于任何实现特勤局 API 的包(例如)侏儒钥匙圈,kwallet5,KeepassXC).- (不推荐)
KWALLET:用于较旧版本的KWALLET. - (不推荐)
基础: 详见下方关于基本文本的部分。
如果你的密码存储没有被自动检测到,看看你的设置是否在问题#187338中被提及。如果没有,也可以把你的设置写进去,或者如果你觉得问题不是自动密码存储检测引起的,可以在VS Code上开设带有冗长日志的问题。
(不推荐)配置基础文本加密
我们依赖Chromium的OSCRYPT模块来发现并存储密钥环中的加密密钥信息。Chromium 提供一种选择加入的备用加密策略,使用基于 Chromium 源代码中硬编码字符串的内存密钥。因此,这种备选策略充其量只是混淆,只有在你愿意接受系统中任何进程理论上可能解密你存储秘密的风险时才应使用。
如果你接受这个风险,你可以设置密码存储到基础通过打开命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P))并运行“偏好设置:配置运行时参数”命令。这将打开argv.json你可以添加设置的文件“password-store”:basic”.
我可以在VS Code Stable和Insiders之间共享设置吗?
是的。更多信息请参阅“同步稳定与内部人士”部分。
请注意,这有时会导致数据不兼容,因为Insiders的构建比稳定版更新。在这种情况下,稳定版会自动关闭设置同步,以防止数据不一致。一旦稳定版新版本发布,你可以升级客户端并开启设置同步以继续同步。