参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

设置同步

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

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

打开设置同步

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

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 状态:

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

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

冲突

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

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

切换帐户

如果您想随时将数据同步到另一个帐户,可以关闭“设置同步”,然后用不同的帐户再次打开。关闭同步的命令是“设置同步:关闭”。

同步稳定版与 Insiders 版

默认情况下,VS Code 稳定版和 Insiders 版使用不同的设置同步服务,因此不会共享设置。您可以在打开“设置同步”时选择稳定版的同步服务,从而将您的 Insiders 版与稳定版同步。此选项仅在 VS Code Insiders 版中可用。

Settings Sync Switch Service

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

还原数据

VS Code 在同步时始终会存储您的偏好设置的本地和远程备份,并提供视图来访问这些备份。万一出现问题,您可以从这些视图中还原数据。

Settings Sync backup views

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

Settings Sync enable local backup views

可以通过“设置同步:打开本地备份文件夹”命令访问磁盘上的本地备份文件夹。该文件夹按偏好设置类型组织,并包含您的 JSON 文件的各个版本,文件名带有备份发生时的时间戳。

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

已同步的计算机

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

Settings Sync machines views

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

扩展开发者

如果您是扩展开发者,您应该确保您的扩展在用户启用“设置同步”时表现得当。例如,您可能不希望您的扩展在多台计算机上显示相同的已关闭通知或欢迎页面。

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

如果您的扩展需要在不同计算机之间保留某些用户状态,则应使用 vscode.ExtensionContext.globalState.setKeysForSync 将该状态提供给“设置同步”。在计算机之间共享状态,例如 UI 已关闭或已查看标志,可以提供更好的用户体验。

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

报告问题

“设置同步”的活动可以在“日志 (设置同步)”输出视图中监控。如果您遇到“设置同步”的问题,请在创建问题时附上此日志。如果您的问题与身份验证有关,也请附上“帐户”输出视图中的日志。

如何删除我的数据?

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

后续步骤

常见问题

VS Code 设置同步与 Settings Sync 扩展是同一个东西吗?

不是。Shan Khan 开发的 Settings Sync 扩展使用 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 (或类似环境)

如果您看到的错误是“无法在锁定的集合中创建项目”,那么很可能是您的密钥环的Login密钥环被锁定了。您应该启动您操作系统的密钥环管理工具(Seahorse 是常用的查看密钥环的图形界面),并确保默认密钥环(通常称为Login密钥环)是解锁的。此密钥环需要在您登录系统时解锁。

KDE

Visual Studio Code 尚未完全支持 KDE 6。作为一种变通方法:最新的 kwallet6 也可以作为 kwallet5 访问,因此您可以强制它使用 kwallet5,方法是按照下面配置 VS Code 使用的密钥环中的说明,将密码存储设置为 kwallet5

您的钱包(即密钥环)可能已关闭。如果您打开 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 上提交一个问题,并附上上述的详细日志。这对我们支持更多的桌面配置非常重要。

您可以通过传递 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 上提交问题并附上详细日志。

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

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

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

可以。请参阅同步稳定版与 Insiders 版部分以获取更多信息。

请注意,由于 Insiders 版比稳定版更新,这有时可能会导致数据不兼容。在这种情况下,稳定版上的设置同步将自动禁用,以防止数据不一致。一旦发布了新版本的稳定版,您可以升级您的客户端并打开设置同步以继续同步。