设置同步
设置同步允许您跨机器共享 Visual Studio Code 配置,例如设置、键盘快捷键和已安装的扩展,这样您总能使用您最喜欢的设置。
注意:VS Code 不会同步您的扩展到或从远程窗口,例如当您连接到 SSH、开发容器 (devcontainer) 或 WSL 时。
打开设置同步
您可以通过使用管理齿轮菜单中的备份和同步设置...条目或活动栏底部的账户菜单来打开设置同步。

要使用同步设置,您需要登录并选择要同步的设置。目前,设置同步支持以下设置
- 设置
- 键盘快捷键
- 用户代码片段
- 用户任务
- UI 状态
- 扩展
- 配置文件

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

做出此选择后,浏览器会打开,以便您可以登录您的 Microsoft 或 GitHub 账户。如果您选择 Microsoft 账户,您可以使用个人账户(例如 Outlook 账户)或 Azure 账户,并且您还可以将 GitHub 账户链接到新的或现有的 Microsoft 账户。
登录后,设置同步将开启并在后台自动同步您的偏好设置。
合并或替换
如果您已经从一台机器同步过,并从另一台机器开启同步,您将看到以下合并或替换对话框。

- 合并:选择此选项将把本地设置与云中的远程设置合并。
- 替换本地:选择此选项将把本地设置替换为云中的远程设置。
- 手动合并...:选择此选项将打开合并视图,您可以在其中逐个合并偏好设置。

配置同步数据
机器设置(带有 machine 或 machine-overridable 作用域)默认不同步,因为它们的值特定于给定机器。您还可以从设置编辑器或使用设置 settingsSync.ignoredSettings 将要同步的设置添加到此列表或从中删除。

键盘快捷方式默认按平台同步。如果您的键盘快捷方式与平台无关,您可以通过禁用设置 settingsSync.keybindingsPerPlatform 来跨平台同步它们。
所有内置和已安装的扩展及其全局启用状态都将同步。您可以跳过同步某个扩展,无论是从扩展视图(⇧⌘X (Windows、Linux Ctrl+Shift+X))还是使用设置 settingsSync.ignoredExtensions。

以下 UI 状态目前是同步的
- 显示语言
- 活动栏条目
- 面板条目
- 视图布局和可见性
- 最近使用的命令
- 不再显示通知
您随时可以通过设置同步:配置命令或打开管理齿轮菜单,选择设置同步已开启,然后选择设置同步:配置来更改同步内容。
冲突
在多台机器之间同步设置时,偶尔可能会发生冲突。冲突可能在首次在机器之间设置同步时或在机器离线时设置发生更改时发生。发生冲突时,您将看到以下选项
- 接受本地:选择此选项将使用您的本地设置覆盖云中的远程设置。
- 接受远程:选择此选项将使用云中的远程设置覆盖本地设置。
- 显示冲突:选择此选项将显示一个类似于源代码管理差异编辑器的差异编辑器,您可以在其中预览本地和远程设置,并选择接受本地或远程,或手动解决本地设置文件中的更改,然后接受本地文件。
切换账户
如果您随时想将数据同步到不同的账户,您可以关闭并使用不同的账户再次打开设置同步。关闭同步的命令是设置同步:关闭。
同步稳定版与预览版
默认情况下,VS Code 稳定版和预览版使用不同的设置同步服务,因此不共享设置。您可以通过在打开设置同步时选择稳定版同步服务来将您的预览版与稳定版同步。此选项仅在 VS Code 预览版中可用。

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

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

可以通过设置同步:打开本地备份文件夹命令访问磁盘中的本地备份文件夹。该文件夹按偏好类型组织,并包含您的 JSON 文件的版本,文件名带有备份发生时的时间戳。
注意:本地备份会在 30 天后自动删除。对于远程备份,每个独立资源(设置、扩展等)的最新 20 个版本会保留。
已同步机器
VS Code 会跟踪同步您偏好设置的机器,并提供一个视图来访问它们。每台机器都会根据 VS Code 的类型(预览版或稳定版)和所在平台获得一个默认名称。您始终可以使用视图中机器条目上的编辑操作更新机器名称。您还可以使用视图中机器条目上的关闭设置同步上下文菜单操作在另一台机器上禁用同步。

您可以通过命令面板中的设置同步:显示已同步数据命令打开此视图。
扩展作者
如果您是扩展作者,您应该确保您的扩展在用户启用设置同步时表现正常。例如,您可能不希望您的扩展在多台机器上显示相同的已关闭通知或欢迎页面。
在机器之间同步用户全局状态
如果您的扩展需要在不同机器之间保留一些用户状态,那么可以使用 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 Enterprise 账户登录。未来可能会支持其他身份验证提供程序,您可以在问题 #88309 中查看提议的身份验证提供程序 API。
注意:VS Code 设置同步目前不支持使用您的Microsoft 主权云账户。如果您希望实现此功能,请在此 GitHub 问题中告知我们您希望使用哪种 Microsoft 主权云。
我可以使用不同的后端或服务进行设置同步吗?
设置同步使用专用服务来存储设置和协调更新。未来可能会公开一个服务提供程序 API,以允许自定义设置同步后端。
密钥链问题故障排除
注意:本节适用于 VS Code 版本 1.80 及更高版本。在 1.80 中,由于 keytar 的存档,我们放弃了它,转而使用 Electron 的 safeStorage API。
注意:在此文档中,keychain、keyring、wallet、credential store 是同义词。
设置同步使用操作系统密钥链在桌面上持久化身份验证信息进行加密。如果密钥链配置错误或环境无法识别,使用密钥链有时会失败。
为了帮助诊断问题,您可以使用以下标志重新启动 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 是用于查看密钥环的常用 GUI),并确保默认密钥环(通常称为登录密钥环)已解锁。此密钥环需要在您登录系统时解锁。
KDE
KDE 6 尚未完全支持 Visual Studio Code。作为一种变通方法:最新的 kwallet6 也可以作为 kwallet5 访问,因此您可以通过将密码存储设置为
kwallet5来强制它使用 kwallet5,如下面配置用于 VS Code 的密钥环中所述。
您的钱包(又称密钥环)可能已关闭。如果您打开 KWalletManager,您可以查看默认的 kdewallet 是否已关闭,如果是,请确保将其打开。
如果您使用的是 KDE5 或更高版本,并且在连接到 kwallet5 时遇到问题(例如问题 #189672 中的非官方 VS Code Flatpak 用户),您可以尝试将密钥环配置为 gnome-libsecret,因为这将使用 Secret Service API 与任何有效的密钥环通信。kwallet5 实现了 Secret Service 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 的密钥环
您可以通过传递 password-store 标志手动告诉 VS Code 使用哪个密钥环。我们推荐的配置是,如果您还没有安装 gnome-keyring,请先安装它,然后使用 code --password-store="gnome-libsecret" 启动 VS Code。
如果此解决方案对您有效,您可以通过打开命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))并运行首选项:配置运行时参数命令来持久化 password-store 的值。这将打开 argv.json 文件,您可以在其中添加设置 "password-store":"gnome-libsecret"。
如果您想尝试使用不同于 gnome-keyring 的密钥环,以下是 password-store 的所有可能值
kwallet5:用于 kwalletmanager5。gnome-libsecret:用于实现 Secret Service API 的任何包(例如gnome-keyring、kwallet5、KeepassXC)。- (不推荐)
kwallet:用于旧版本的kwallet。 - (不推荐)
basic:有关更多详细信息,请参阅下面的基本文本部分。
如果您遇到任何问题,请随时在 VS Code 上打开一个问题并附带详细日志。
(不推荐)配置基本文本加密
我们依靠 Chromium 的 oscrypt 模块来发现和存储密钥环中的加密密钥信息。Chromium 提供了一种可选的备用加密策略,该策略使用基于 Chromium 源代码中硬编码字符串的内存中密钥。因此,这种备用策略充其量只是一种混淆,并且只有在您接受系统上的任何进程理论上都可以解密您存储的秘密的风险时才应使用。
如果您接受此风险,可以通过打开命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))并运行首选项:配置运行时参数命令来将 password-store 设置为 basic。这将打开 argv.json 文件,您可以在其中添加设置 "password-store":"basic"。
我可以在 VS Code 稳定版和预览版之间共享设置吗?
是的。有关更多信息,请参阅同步稳定版与预览版部分。
请注意,这有时可能导致数据不兼容,因为预览版比稳定版新。在这种情况下,设置同步将在稳定版上自动禁用,以防止数据不一致。一旦发布了新版本的稳定版,您可以升级您的客户端并打开设置同步以继续同步。