设置同步

设置同步可让您在计算机之间共享 Visual Studio Code 配置,例如设置、键绑定和已安装的扩展,以便您始终使用自己喜欢的设置。

打开设置同步

您可以使用活动栏底部的管理齿轮菜单中的打开设置同步...条目来打开设置同步。

打开同步命令

系统将要求您登录以及您想要同步哪些首选项;目前支持设置、键盘快捷键、扩展、用户片段和 UI 状态。

设置同步配置对话框

选择“登录并打开”按钮将要求您选择使用 Microsoft 帐户还是 GitHub 帐户登录。

设置同步配置对话框

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

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

合并或替换

如果您已经从一台计算机同步并从另一台计算机打开同步,您将看到以下“合并”或“替换”对话框。

设置同步合并或替换对话框

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

设置同步合并

配置同步数据

默认情况下,机器设置(使用machinemachine-overridable 范围)不同步,因为它们的值特定于给定机器。您还可以从“设置”编辑器或使用“设置”向此列表添加或删除所需的设置settingsSync.ignoredSettings

设置同步忽略的设置

默认情况下,键盘快捷键按平台同步。如果您的键盘快捷键与平台无关,您可以通过禁用设置来跨平台同步它们settingsSync.keybindingsPerPlatform

所有内置和安装的扩展及其全局启用状态均同步。您可以从扩展视图 ( ⇧⌘X (Windows、Linux Ctrl+Shift+X ) ) 或使用设置跳过同步扩展settingsSync.ignoredExtensions

设置同步忽略的设置

当前同步以下 UI 状态:

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

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

冲突

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

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

切换账户

如果您随时想要将数据同步到其他帐户,您可以使用其他帐户关闭并再次打开“设置同步”。

同步稳定版与内部版

默认情况下,VS Code Stable 和Insiders版本使用不同的设置同步服务,因此不共享设置。您可以通过在打开设置同步时选择稳定版同步服务来将您的预览体验成员与稳定版同步。此选项仅在 VS Code Insiders 中可用。

设置同步切换服务

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

恢复数据

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

设置 同步备份视图

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

设置同步启用本地备份视图

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

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

同步机器

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

设置 同步机器视图

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

扩展作者

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

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

如果您的扩展需要在不同的计算机上保留某些用户状态,则使用 将该状态提供给 Settings Sync vscode.ExtensionContext.globalState.setKeysForSync。跨计算机共享状态(例如 UI 关闭或查看标志)可以提供更好的用户体验。

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

报告问题

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

如何删除我的数据?

如果您想从我们的服务器中删除所有数据,只需通过“管理齿轮”菜单下的“设置同步已打开”菜单关闭同步,然后选择复选框即可清除所有云数据。如果您选择重新启用同步,则就像您第一次登录一样。

下一步

常见问题

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

不,Shan Khan的设置同步扩展使用 GitHub 上的私有 Gist 在不同计算机之间共享 VS Code 设置,与 VS Code 设置同步无关。

我可以使用哪些类型的帐户来登录 Settings Sync?

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

注意:VS Code 设置同步目前不支持使用您的Microsoft Sovereign Cloud帐户。如果您愿意,请告诉我们您希望在此 GitHub 问题中使用哪种类型的 Microsoft Sovereign Cloud 。

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

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

解决钥匙串问题

注意:本节适用于 VS Code 1.80 及更高版本。在 1.80 中,由于其存档问题,我们放弃了keytar,转而使用 Electron 的safeStorage API

注意:钥匙串、钥匙圈、钱包、凭证存储在本文档中是同义词。

设置同步使用操作系统钥匙串进行加密,将身份验证信息保留在桌面上。在某些情况下,如果钥匙串配置错误或无法识别环境,则使用钥匙串可能会失败。

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

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

Windows 和 Mac 系统

目前,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_ANY

我们依靠 Chromium 的 oscrypt 模块来发现加密密钥信息并将其存储在密钥环中。Chromium 支持多种不同的桌面环境。下面概述了一些流行的桌面环境和故障排除步骤,如果密钥环配置错误,这些步骤可能会有所帮助。

GNOME 或 UNITY(或类似)

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

凯德

Visual Studio Code 尚未完全支持 KDE 6。解决方法:最新的 kwallet6 也可以作为 kwallet5 访问,因此您可以通过将密码存储设置为强制其使用 kwallet5,如下面kwallet5配置密钥环以与 VS Code 一起使用中所述。

您的钱包(又名钥匙圈)可能已关闭。如果您打开KWalletManager,您可以查看默认是否kdewallet关闭,如果是,请确保打开它。

如果您使用 KDE5 或更高版本并且在连接时遇到问题(例如问题 #189672kwallet5中非官方 VS Code Flatpak 的用户),您可以尝试配置密钥环,因为这将使用Secret Service API与任何有效密钥环进行通信。实现了Secret Service API,可以使用此方法进行访问。gnome-libsecretkwallet5

其他 Linux 桌面环境

首先,如果未检测到您的桌面环境,您可以使用上面的详细日志在 VS Code 上打开问题。这对于我们支持其他桌面配置非常重要。

您可以通过传递标志来手动告诉 VS Code 使用哪个密钥环password-store。我们建议的配置是首先安装gnome-keyring(如果您还没有),然后使用code --password-store="gnome".

password-store如果此解决方案适合您,您可以通过打开命令面板 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) ) 并运行首选项:配置运行时参数命令来保留 的值。这将打开argv.json您可以在其中添加设置的文件"password-store":"gnome"

password-store如果您想尝试使用与 不同的密钥环,以下是所有可能的值gnome-keyring

  • kwallet5:与kwalletmanager5一起使用。
  • gnome:此选项将首先尝试gnome-libsecret选项实现,如果失败,它将回退到gnome-keyring选项实现。
  • gnome-libsecret:与实现Secret Service API的任何包一起使用(例如gnome-keyringkwallet5KeepassXC)。
  • (不推荐) kwallet:与旧版本的kwallet.
  • (不推荐) gnome-keyring:访问不同的实现,仅在出现问题gnome-keyring时才应使用。gnome-libsecret
  • (不推荐) basic:有关更多详细信息,请参阅下面有关基本文本的部分。

如果遇到任何问题,请随时在 VS Code 上使用详细日志提出问题。

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

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

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

是的。请参阅同步稳定版与 Insiders部分以了解更多信息。

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