现已发布!了解 11 月的新功能和修复。

设置同步

设置同步允许您在多台计算机之间共享 Visual Studio Code 配置,例如设置、快捷键绑定和已安装的扩展,以便您始终使用自己喜欢的设置进行工作。

注意:当您连接到 SSH、开发容器 (devcontainer) 或 WSL 等远程窗口时,VS Code 不会同步您的扩展。

启用设置同步

您可以使用管理齿轮菜单中的备份和同步设置... 条目或活动栏底部的帐户菜单启用设置同步。

Screenshot of the Manage menu, highlighting the Backup and Sync Settings command.

要使用同步设置,您需要登录并选择要同步的设置。目前,设置同步支持以下设置

  • 设置
  • 键盘快捷键
  • 用户代码片段
  • 用户任务
  • UI 状态
  • 扩展
  • 配置文件

Screenshot of the Settings Sync configure Quick Pick to select the settings to synchronize.

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

Screenshot of the Settings Sync Quick Pick to choose an account type.

做出此选择后,浏览器将打开,以便您可以登录到您的 Microsoft 或 GitHub 帐户。如果您选择 Microsoft 帐户,则可以使用个人帐户(例如 Outlook 帐户)或 Azure 帐户,并且还可以将 GitHub 帐户链接到新的或现有的 Microsoft 帐户。

登录后,设置同步将开启,并在后台自动继续同步您的偏好设置。

合并或替换

如果您已经从一台计算机同步过,并且要从另一台计算机启用同步,则会显示以下合并或替换对话框。

Settings Sync Merge or Replace dialog

  • 合并:选择此选项会将本地设置与云端的远程设置合并。
  • 替换本地:选择此选项会将本地设置覆盖为云端的远程设置。
  • 手动合并...:选择此选项将打开合并视图,您可以在其中逐个合并首选项。

Settings Sync Merges

配置同步数据

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

Settings Sync ignored settings

默认情况下,键盘快捷方式按平台同步。如果您的键盘快捷方式与平台无关,则可以通过禁用设置 settingsSync.keybindingsPerPlatform 在多个平台之间同步它们。

所有内置的和已安装的扩展都将连同其全局启用状态一起同步。您可以跳过同步扩展,可以从扩展视图中(⇧⌘X(Windows、Linux Ctrl+Shift+X)或使用设置 settingsSync.ignoredExtensions 来实现。

Settings Sync ignored settings

目前同步以下 UI 状态

  • 显示语言
  • 活动栏条目
  • 面板条目
  • 视图布局和可见性
  • 最近使用的命令
  • 不再显示的通知

您始终可以通过设置同步:配置命令或打开管理齿轮菜单,选择设置同步已打开,然后选择设置同步:配置来更改同步的内容。

冲突

当在多台计算机之间同步设置时,偶尔可能会出现冲突。冲突可能发生在首次在计算机之间设置同步时,或者在计算机离线时设置更改时。当发生冲突时,您将看到以下选项

  • 接受本地:选择此选项会将云端的远程设置覆盖为您的本地设置。
  • 接受远程:选择此选项会将本地设置覆盖为云端的远程设置。
  • 显示冲突:选择此选项将显示类似于源代码管理差异编辑器的差异编辑器,您可以在其中预览本地和远程设置,并选择接受本地或远程,或者手动解析本地设置文件中的更改,然后接受本地文件。

切换帐户

如果您想随时将您的数据同步到不同的帐户,您可以关闭并使用不同的帐户再次开启设置同步。

同步稳定版与预览版

默认情况下,VS Code 稳定版和 预览版构建使用不同的设置同步服务,因此不共享设置。您可以在启用设置同步时选择稳定版同步服务,从而将您的预览版与稳定版同步。此选项仅在 VS Code 预览版中可用。

Settings Sync Switch Service

注意:由于预览版构建比稳定版构建更新,因此同步它们有时可能会导致数据不兼容。在这种情况下,设置同步将在稳定版上自动禁用,以防止数据不一致。一旦发布较新版本的稳定版构建,您就可以升级您的稳定版客户端并开启同步以继续同步。

恢复数据

VS Code 在同步时始终存储您的偏好设置的本地和远程备份,并提供用于访问这些备份的视图。如果出现问题,您可以从这些视图中恢复您的数据。

Settings Sync backup views

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

Settings Sync enable local backup views

可以通过设置同步:打开本地备份文件夹命令访问磁盘中的本地备份文件夹。该文件夹按首选项类型进行组织,并包含 JSON 文件的版本,这些版本使用备份发生时的时间戳命名。

注意:本地备份会在 30 天后自动删除。对于远程备份,会保留每个单独资源(设置、扩展等)的最新 20 个版本。

已同步的计算机

VS Code 会跟踪同步你的偏好设置的机器,并提供一个视图来访问它们。每台机器都会根据 VS Code 的类型(Insiders 或 Stable)和所在的平台获得一个默认名称。你可以随时使用视图中机器条目上的编辑操作来更新机器名称。你还可以使用视图中机器条目上的关闭设置同步上下文菜单操作来禁用另一台机器上的同步。

Settings Sync machines views

你可以使用命令面板中的设置同步:显示已同步数据命令打开此视图。

扩展作者

如果你是扩展作者,你应该确保你的扩展程序在用户启用设置同步时行为正确。例如,你可能不希望你的扩展程序在多台机器上显示相同的已关闭的通知或欢迎页面。

在机器之间同步用户全局状态

如果你的扩展程序需要在不同的机器之间保留一些用户状态,那么可以使用 vscode.ExtensionContext.globalState.setKeysForSync 将状态提供给设置同步。跨机器共享诸如 UI 关闭或已查看标志之类的状态可以提供更好的用户体验。

扩展功能主题中有一个使用 setKeysforSync 的示例。

报告问题

可以在 日志 (设置同步) 输出视图中监视设置同步活动。如果你在设置同步时遇到问题,请在创建问题时包含此日志。如果你的问题与身份验证相关,请同时包含 帐户 输出视图中的日志。

如何删除我的数据?

如果你想从我们的服务器中删除所有数据,只需通过管理齿轮菜单下的设置同步已开启菜单关闭同步,并选中清除所有云数据的复选框。如果你选择重新启用同步,它将如同你第一次登录一样。

后续步骤

常见问题

VS Code 设置同步与设置同步扩展程序相同吗?

不,由 Settings Sync 扩展程序(作者:Shan Khan)使用 GitHub 上的私有 Gist 来跨不同机器共享你的 VS Code 设置,这与 VS Code 设置同步无关。

我可以使用哪些类型的帐户进行设置同步登录?

VS Code 设置同步支持使用 Microsoft 帐户(例如 Outlook 或 Azure 帐户)或 GitHub 帐户登录。不支持使用 GitHub 企业帐户登录。将来可能会支持其他身份验证提供程序,你可以在 issue #88309 中查看提议的身份验证提供程序 API。

注意:VS Code 设置同步目前不支持使用你的Microsoft 主权云帐户。如果你希望使用此功能,请在此 GitHub issue中告知我们你希望使用哪种 Microsoft 主权云。

我可以使用不同的后端或服务进行设置同步吗?

设置同步使用专用服务来存储设置并协调更新。将来可能会公开服务提供程序 API,以允许自定义设置同步后端。

解决密钥链问题

注意:本节适用于 VS Code 版本 1.80 及更高版本。在 1.80 中,我们弃用了 keytar(因为它已存档),转而使用 Electron 的 safeStorage API

注意:在此文档中,密钥链、密钥环、钱包、凭据存储是同义词。

设置同步使用操作系统密钥链进行加密,以在桌面上持久存储身份验证信息。如果密钥链配置错误或环境未被识别,则使用密钥链可能会在某些情况下失败。

为了帮助诊断问题,你可以使用以下标志重新启动 VS Code 以生成详细日志

code --verbose --vmodule="*/components/os_crypt/*=1"

Windows 和 macOS

目前,Windows 或 macOS 上没有已知的配置问题,但是,如果你怀疑出现问题,可以使用上述详细日志在 VS Code 上提交一个 issue。这对我们支持其他桌面配置非常重要。

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(或类似环境)

如果你看到的错误是“无法在锁定的集合中创建项目”,则你的密钥环的 Login 密钥环很可能已锁定。你应该启动操作系统的密钥环(Seahorse 是查看密钥环的常用 GUI),并确保默认密钥环(通常称为 Login 密钥环)已解锁。当你登录系统时,需要解锁此密钥环。

KDE

Visual Studio Code 尚未完全支持 KDE 6。作为一种解决方法:最新的 kwallet6 也可以作为 kwallet5 访问,因此你可以强制它使用 kwallet5,方法是将密码存储设置为 kwallet5,如其他 Linux 桌面环境中下面的说明所示。

你的钱包(又名密钥环)有可能已关闭。如果你打开KWalletManager,你可以查看默认的 kdewallet 是否已关闭,如果已关闭,请确保将其打开。

如果你使用的是 KDE5 或更高版本,并且在连接到 kwallet5 时遇到问题(例如,issue #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 上提交一个 issue。这对我们支持其他桌面配置非常重要。

你可以通过传递 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-keyringkwallet5KeepassXC)。
  • (不推荐) kwallet:用于旧版本的 kwallet
  • (不推荐) basic:有关更多详细信息,请参阅下面有关基本文本的部分。

如果你遇到任何问题,请随时使用详细日志在 VS Code 上提交一个 issue

我们依赖 Chromium 的 oscrypt 模块来发现并将加密密钥信息存储在密钥环中。Chromium 提供了一种选择加入的备用加密策略,该策略使用基于硬编码在 Chromium 源代码中的字符串的内存中密钥。因此,这种备用策略充其量只是混淆,并且仅当你可以接受系统上的任何进程都可以在理论上解密你存储的机密的风险时才应使用。

如果你接受此风险,你可以通过打开命令面板(⇧⌘P(Windows、Linux Ctrl+Shift+P)并运行首选项:配置运行时参数命令,将 password-store 设置为 basic。这将打开 argv.json 文件,你可以在其中添加设置 "password-store":"basic"

我可以在 VS Code 稳定版和预览版之间共享设置吗?

可以。有关更多信息,请参阅同步 Stable 与 Insiders部分。

请注意,这有时会导致数据不兼容,因为 Insiders 版本比 Stable 版本更新。在这种情况下,设置同步将在 Stable 上自动禁用,以防止数据不一致。一旦发布了较新版本的 Stable 版本,你可以升级客户端并启用设置同步以继续同步。