有什么方法可以在实例之间同步我的 Visual Studio 代码设置吗?

Is there any way to sync my Visual Studio Code settings between instances?

我希望能够以某种方式将我的 VS Code 用户设置(文件 > 首选项 > 用户设置)同步到云端,以便我可以轻松地在多个安装之间共享它们,如 Windows 10 和Visual Studio.

有支持的方法吗?代码中的直接支持会很棒,但如果能够将我的 settings.json 位置移动到 Dropbox 或 OneDrive 文件夹也可以。

我正在专门寻找一种自动且安静地执行此操作的方法。手动 exporting/importing 太麻烦了,不是我想要的。


更新:现在是built-in feature in VS Code

用户设置

目前 Visual Studio 代码中没有可用的用户设置自动同步。 在 Windows 上,用户设置位于 %APPDATA%\Code\User\settings.json。您可以将该文件的副本保存在 OneDrive 或 Dropbox 上,然后将其移动到所有计算机上的用户设置文件夹中。但这仍然包括每次更改配置时在每台机器上的手动步骤。

您可以在此处建议自动同步设置:https://visualstudio.uservoice.com/forums/293070-visual-studio-code

工作区设置

将工作区的 .vscode 文件夹添加到版本控制系统(Git/SVN 等)。当您从存储库检出代码时,您将自动获得 VS Code 工作区设置。

我开发了一个扩展程序,可以跨多个实例同步所有 Visual Studio 代码设置。

主要特点

  1. 使用您的 GitHub 帐户令牌。
  2. 一键轻松上传和下载。
  3. 保存所有设置和片段文件。
  4. 上传键:Shift + Alt + u
  5. 下载键:Shift + Alt + d
  6. 键入 Sync 以查看所有同步选项

同步

  • 设置文件
  • 快捷键文件
  • 启动文件
  • 片段文件夹
  • VSCode 扩展

详细文档来源

VSCode - Settings Sync blog post

在这里下载:VS Code - Settings Sync - Extention

您可以从包含用户设置的目录硬 link 到 Dropbox 或 OneDrive 等应用程序的同步目录。

例如,在 windows 上,用户设置位于 %APPDATA%\Code\User,因此您可以键入:

mklink /H /J X:\Your\Sync\Dir %APPDATA%\Code\User

在你的电脑上用Visual Studio代码实现同步。

然后,在另一台计算机上,您可以删除 %APPDATA%\Code\User 文件夹,然后键入:

mklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir

检索同步设置。

我将我的 settings.json 放在与 git 同步的配置文件中(尽管 Dropbox 也可以工作)并使用 Python 脚本将其符号链接到正确的位置每个平台因此从设置菜单更新它会在我的机器上同步。创建符号链接需要 Windows.

的管理员权限
import os
import platform

# Find the settings file in the same directory as this script
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
VS_SETTINGS_SRC_PATH = os.path.join(SCRIPT_DIR, 'settings.json')

# https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations
if platform.system() == 'Windows':
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"%APPDATA%\Code\User\settings.json")
elif platform.system() == "Darwin":
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"$HOME/Library/Application Support/Code/User/settings.json")
elif platform.system() == "Linux":
    raise NotImplementedError()
else:
    raise NotImplementedError()

# On Windows, there might be a symlink pointing to a different file
# Always remove symlinks
if os.path.islink(VS_SETTINGS_DST_PATH):
    os.remove(VS_SETTINGS_DST_PATH)

choice = input('symlink %r -> %r ? (y/n) ' % (VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH))
if choice == 'y':
    os.symlink(VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH)
    print('Done')
else:
    print('aborted')

使用工作区设置而不是用户设置。

啊哈,你可以试试我的 VSCode 扩展名:Syncing.

希望你会喜欢。 :)


快速指南

  1. 安装Syncing:

  2. 得到你自己的 GitHub Personal Access Token:

    1. 登录到您的 GitHub Settings 页面。

    2. Select Personal access tokens 选项卡并单击 Generate new token.

    3. Select gist 然后点击 Generate token.

    4. 复制并备份您的令牌。

  3. 同步您的设置:

    Syncing 将询问必要的信息 for the first timesave for later use.

    1. 上传:

      1. VSCode Command Palette中输入upload

      2. 输入您的GitHub Personal Access Token.

      3. 输入您的Gist ID(或leave it blank自动创建)。

      4. 完成!

      5. 上传后,您可以在GitHub Gist.

        中找到您的设置和对应的Gist ID

    2. 下载:

      1. VSCode Command Palette 中输入 download

      2. 输入您的 GitHub Personal Access Token(如果您想从 public Gist 下载,则输入 leave it blank

      3. 输入您的Gist ID(或public Gist ID)。

      4. 完成!

我在 Mac 上通过将 VS Code 的 settings.json 复制到我的 iCloud 驱动器进行自动备份,然后创建一个符号 link.

  1. settings.jsonVS code settings directory $HOME/Library/Application Support/Code/User/settings.json 复制到您的备份位置
  2. 通过重命名为 settings-old.json
  3. 来备份旧的 settings.json
  4. 在终端中,cd到VS代码设置目录:cd ~/Library/Application\ Support/Code/User/
  5. 使用命令 ln -sf path/to/backup/settings.json settings.json 为您的备份文件创建 symlink。由于我将我的备份到 iCloud 并将文件重命名为 vscode.settings.json,因此我的命令如下所示:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  6. 检查您是否可以在 VS Code 中打开用户首选项

要在另一个 Mac 上使用备份,只需重复步骤 2-5。

我也这样做了 extensions...

cd ~/.vscode/
mkdir ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/
cp -a extensions ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode
mv extensions extensions-old
ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/extensions extensions

另一种方法是软化 link 您的文件,这些文件也可以存储在 GitHub 上的存储库中。例如,在 Mac OS 上,假设您有一个名为 ~/dev/dotfiles/vscode 的目录。假设其中有两个文件,名为 settings.jsonkeybindings.json。你可以软化 link 这些文件:

ln -s ~/dev/dotfiles/vscode/keybindings.json ~/Library/Application\ Support/Code/User/keybindings.json
ln -s ~/dev/dotfiles/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json

如果您使用 Windows 或 Linux,可以在 https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations

找到相应设置目录的路径

在 v1.48 中:

Preview features

Preview features are not ready for release but are functional enough to use. We welcome your early feedback while they are under development.

Settings Sync

Settings Sync is now available for preview in the stable release . Refer to the user guide for more information & FAQs.

Feature is now called Settings Sync also in the product. All of its references & settings are renamed to be aligned.

另见 https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync

内幕人士与稳定版之间的“手动合并”和同步

在 v1.45 中,您似乎可以通过 github 登录内置设置同步,参见 https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Support GitHub logins in settings sync). And the v1.45 Release Notes


在 v1.43 中,作为预览功能(因此仅在 Insiders' Build 中)是 settings sync。参见 https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Settings Sync

过去几个月我们一直在努力支持跨机器同步 VS 代码设置、扩展和键盘快捷键(热门功能请求 #2743). In this milestone, we are happy to announce that this feature is ready for preview from our next 1.44.0-insider 版本。您现在可以在所有 VS 中同步您的自定义代码安装在你所有的机器上。你也可以 bootstrap 在一台新机器上使用你的个人自定义设置 VS 代码,毫不费力。下面的视频演示了这一点:

Supports detecting conflicts in settings and keybindings while synchronizing. Conflicts are shown using the diff editor with incoming (cloud) changes on the left side and local changes on the right side. You can resolve the conflicts by editing in the right side editor and merge the changes using the actions provided in the editor.

支持的功能

Currently Settings, Keyboard Shortcuts, Extensions, and the Display Language are synchronized but we are planning to add more. You can review our list of proposed Setting Sync features.

Machine settings (with machine or machine-overridable scopes) are not synchronized by default. You can also add or remove settings you want to this list from settings editor or using the setting sync.ignoredSettings.

Keyboard Shortcuts are synchronized per platform by default. If your keyboard shortcuts are platform agnostic then, you can synchronize them across platforms by disabling the setting sync.keybindingsPerPlatform.

All built-in and installed extensions are synchronized along with their global enablement state. You can skip synchronizing an extension, from extensions view or using the setting sync.ignoredExtensions.

Settings Sync activity can be monitored in the Log (Sync) output view. All local customizations are backed up for last 30 days (atleast 10) in the disk whenever they are changed during synchronization. You can use the command Sync: Open Local Backups Folder to go the backups location and retain your old customizations.

(以及发行说明中的​​一些 gif 图 link)

请注意,通过您的 Microsoft 帐户,而不是 github(直到 v1.45 - 见顶部):

Settings Sync uses a Microsoft account to store your VS Code customizations for synchronization and therefore you would need an account to use this. Refer to the Settings Sync documentation for more information and help.

有关如何设置 settings sync 的更多信息,另请参阅 https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md


还有关于设置同步的 link 到 v1.44 的信息:https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync

这终于是一个内置功能:请参阅 Settings Sync in Visual Studio Code