本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

设置同步

Settings Sync 让你可以在你的机器之间共享 Visual Studio Code 的配置,例如设置、键盘快捷键和已安装的扩展,这样你总是可以使用你最喜欢的设置。

注意:VS Code 不会在 远程 Windows(例如您连接到 SSH、开发容器 (devcontainer) 或 WSL 时)同步您的扩展。

启用设置同步

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

管理菜单的截图,突出显示了备份和同步设置命令。

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

  • 设置
  • 键盘快捷键
  • 用户片段
  • 用户任务
  • 用户界面状态
  • 扩展
  • 个人资料

设置同步配置快速选择以选择要同步的设置的截图。

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

设置同步快速选择的屏幕截图,用于选择帐户类型。

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

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

合并或替换

如果您已经在一台机器上同步,并且从另一台机器上开启同步,您将看到以下合并或替换对话框。

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

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

设置同步合并

配置同步数据

机器设置(带机器机器可覆盖的 scopes默认情况下是不同步的,因为它们的值特定于一台机器。您还可以通过设置编辑器或使用设置将您想要的设置添加到此列表中

设置同步.忽略的设置
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

设置同步忽略的设置

键盘快捷键默认情况下是按平台同步的。如果你的键盘快捷键不针对特定平台,你可以通过禁用该设置来在不同平台上同步它们。

settingsSync.keybindingsPerPlatform
  • Open in VS Code
  • Open in VS Code Insiders
.

All built-in and installed extensions are synchronized along with their global enablement state. You can skip synchronizing an extension, either from the Extensions view (⇧⌘X (Windows, Linux Ctrl+Shift+X)) or using the setting

settingsSync.ignoredExtensions
  • Open in VS Code
  • Open in VS Code Insiders
.

设置同步忽略的设置

Following UI State is synchronized currently:

  • Display Language
  • Activity Bar entries
  • Panel entries
  • Views layout and visibility
  • Recently used commands
  • Do not show again notifications

You can always change what is synced via the Settings Sync: Configure command or by opening the Manage gear menu, selecting Settings Sync is On, and then Settings Sync: Configure.

Conflicts

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

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

切换账户

如果您希望将数据同步到不同的帐户,您可以使用不同的帐户再次打开和关闭设置同步。关闭同步的命令是设置同步:关闭.

同步稳定版本与内部版本

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

设置同步开关服务

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

恢复数据

VS Code 在同步过程中始终会存储你的偏好设置的本地和远程备份,并提供视图以便访问这些备份。如果发生错误,你可以从这些视图中恢复你的数据。

设置同步备份视图

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

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

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

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

同步机器

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

设置同步机器视图

您可以通过 设置同步:显示同步数据 命令从命令面板打开此视图。

扩展作者

如果您是扩展作者,您应确保在用户启用设置同步时,您的扩展能够适当地表现。例如,您可能不希望您的扩展在多台机器上显示相同的已忽略通知或欢迎页面。

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

如果您的扩展需要在不同机器之间保存一些用户状态,请使用 Settings Sync 提供状态。vscode.ExtensionContext.globalState.setKeysForSync共享诸如在不同机器上解除或查看的UI标志等状态可以提供更好的用户体验。

有一个使用示例设置同步密钥扩展功能 主题中。

报告问题

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

如何删除我的数据?

如果您想从我们的服务器中删除所有数据,请通过设置同步已开启管理齿轮菜单中的选项,清除所有云数据。如果您选择重新启用同步,这将如同您第一次登录。

下一步

常见问题

VS Code Settings Sync 与 Settings Sync 扩展是一样的吗?

不,设置同步扩展由Shan Khan提供,它使用GitHub上的私人Gist来在不同机器之间共享你的VS Code设置,这与VS Code设置同步无关。

我可以使用哪些类型的账户进行 Settings Sync 登录?

VS Code Settings Sync 支持使用 Microsoft 帐户(例如 Outlook 或 Azure 帐户)或 GitHub 帐户登录。不支持使用 GitHub 企业帐户登录。未来可能会支持其他身份验证提供商,您可以在 issue #88309 中查看提议的身份验证提供商 API。

注意:VS Code Settings Sync 不支持使用您的 Microsoft 自治云 账户。如果您希望使用此功能,请在 这个 GitHub 问题 中告诉我们您希望使用哪种 Microsoft 自治云。

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

Settings Sync 使用专用服务来存储设置并协调更新。服务提供商 API 可能在将来被暴露,以允许自定义 Settings Sync 后端。

排除钥匙链问题

注意:本节适用于 VS Code 版本 1.80 及更高版本。在 1.80 中,由于 keytar 已归档,我们转而使用 Electron 的 safeStorage API

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

Settings Sync在桌面使用操作系统密钥链来加密保存认证信息。在某些情况下,如果密钥链配置错误或环境不被识别,使用密钥链可能会失败。

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

代码 --详细 --vmodule="*/components/os_crypt/*=1"

Windows & macOS

目前在Windows或macOS上没有已知的配置问题,但如果怀疑有问题,您可以打开一个VS Code上的问题,并附上上面的详细日志。这对于我们支持额外的桌面配置非常重要。

Linux

在上一条命令的日志顶部,你会看到类似以下内容:

[9699:0626/093542.027629:VERBOSE1:key_storage_util_linux.cc(54)] 检测到密码存储的桌面环境:GNOME
[9699:0626/093542.027660:VERBOSE1:key_storage_linux.cc(122)] 选择的OSCrypt后端:GNOME_LIBSECRET

我们依赖Chromium的oscrypt模块来发现和存储加密密钥信息在密钥环中。Chromium支持多种不同的桌面环境。以下是一些流行的桌面环境和如果密钥环配置错误可能有帮助的故障排除步骤。

GNOME 或 UNITY(或类似)

如果你看到的错误是“无法在锁定的集合中创建项目”, chances are your keyring 的登录 密钥环已锁定。您应该启动操作系统的关键环(Seahorse 是一个常用的图形用户界面,用于查看密钥环)并确保默认密钥环(通常称为 登录密钥环已解锁。登录系统时需要解锁此密钥环。

KDE

KDE 6 还不完全支持 Visual Studio Code。作为解决方案:最新的 kwallet6 也可以作为 kwallet5 访问,因此你可以通过将密码存储设置为 kwallet5 来强制使用 kwallet5。kwallet5 如下所述 配置 VS Code 使用的密钥环

可能你的钱包(即钥匙扣)是关闭的。如果你打开KWalletManager,你可以看到默认的kdewallet已关闭,请确保打开它。

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

如果您仍然无法连接到kwallet5一些用户报告称,授予特定 D-Bus 服务权限证明是一个有效的解决方法:

flatpak覆盖 --用户 --talk-name=org.kde.kwalletd5 --talk-name=org.freedesktop.secrets com.visualstudio.code

其他 Linux 桌面环境

首先,如果未检测到桌面环境,您可以在VS Code上打开一个 issues并附上上面的详细日志。这对于我们支持额外的桌面配置非常重要。

你可以通过传递来手动告诉 VS Code 使用哪个密钥环密码存储 标志。我们推荐的配置是首先安装 gnome-keyring(如果你还没有安装的话),然后用 代码 --password-store="gnome-libsecret"输入:.

如果这个解决方案对你有效,你可以将值持久化密码存储 通过打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并运行 首选项:配置运行时参数 命令。这将打开 argv.json文件,您可以在其中添加设置"password-store":"gnome-libsecret"输入:.

以下是所有可能的值密码存储如果您想尝试使用其他钥匙扣而不是gnome-keyring输入:

  • kwallet5:用于kwalletmanager5
  • gnome-密钥管理器:适用于任何实现秘密服务API的软件包(例如gnome-keyringkwallet5KeepassXC)。
  • (不推荐) kwallet: 适用于旧版本kwallet输入:.
  • (不推荐) 基本:请参阅下面的基本文本部分了解更多信息。

如果您的密码存储没有自动检测到,请查看中的设置是否被提及。如果没有,请随意在,并附上详细日志,如果您认为您的问题与自动密码存储检测无关。VS Code 上提交一个新的 issue#187338

我们依赖Chromium的oscrypt模块来发现和存储加密密钥信息在密钥环中。Chromium提供了一种可选的回退加密策略,该策略使用基于Chromium源代码中硬编码字符串的内存中密钥。由于这一点,这种回退策略最多只能算作混淆,只有在你接受系统上的任何进程在理论上都可以解密你存储的秘密的风险时,才应使用。

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

我可以在 VS Code 稳定版和内部测试版之间共享设置吗?

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

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