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


123

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

有支持的方法吗?直接在Code中提供支持会很棒,但否则可以将我的settings.json位置移动到Dropbox或OneDrive文件夹中也可以。

我正在寻找一种自动且无声地执行此操作的方法。手动导出/导入太麻烦了,这不是我想要的。


更新:这里有一个功能要求。如果您想要此功能,请给我一个赞许。


2
一种非常简单的方法是,如果您使用Google的“备份和同步”程序,而只需添加要备份的C:\ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User文件夹。
— vinsa

Answers:


126

我开发了一个扩展程序,该扩展程序将在多个实例之间同步所有Visual Studio代码设置。

主要特点

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

它同步

  • 设定文件
  • 绑定文件
  • 启动文件
  • 片段文件夹
  • VSCode 扩展

详细文档来源

VSCode-设置同步博客文章

在此处下载:VS代码-设置同步-扩展名


1
谢谢Shan Khan-此扩展非常有用-我有一组虚拟服务器,需要在这些虚拟服务器之间同步VS Code设置和实例之间的键绑定,并且此扩展的功能与广告中所宣传的完全相同。
— Bill_Stewart '16

尝试过但没有成功。当我通过Alt-Shift U激活它时,出现错误:extensionHost.ts:293 [Extension Host] {“ message”:“ Not Found”,“ documentation_url”:“ developer.github.com/v3 ”} A。 logExtensionHostMessage @ extensionHost.ts:293 messageService.ts:126Error登录到控制台(“帮助”菜单>“切换开发者工具”)。您可以使用高级设置命令中的“同步:未解决问题”来解决问题。e.doShow@ messageService.ts:126
— Robin Coe

4
我很想接受这个答案,但是我尝试了该工具,发现它不可靠且有故障。非常简单的情况:VS Code安装在两台计算机上,我试图同时获取自动上传/下载设置和扩展名更改。由于无法正常工作,我最终放弃了。因此,好主意但需要更多工作。
— 马克·惠特克

2
我对将自己的设置发布到(半)公开Gist上感到百感交集。一些扩展在其设置中存储敏感数据(例如数据库登录名,SFTP登录名)。很难通过Syncthing或Resilio Sync之类的外部工具将存储重定向到“本地”文件吗?
— korkman

1
@korkman用于处理这些情况,“设置同步”将允许在将来的更新中通过本地文件和git存储库(如gist)进行同步。
— 山汗

21

您可以从包含用户设置的目录到应用程序的同步目录(例如Dropbox或OneDrive)建立硬链接。

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

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

在您的计算机上使用Visual Studio Code实现同步。

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

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

检索同步的设置。


嗨!我不明白为什么您需要从同步目录到%appdata%文件夹的链接。在同步目录(DropBox,OneDrive等)中为所有实际VS设置移动一次,然后在要同步设置的每台计算机上%APPDATA%\Code\User,使用mklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
— –MichaëlPolla

2
因为如果给定名称已经存在,您将无法创建链接,因此一旦下载了设置,同步目录将位于该目录中。
— Ree先生

对于带有消息的网络驱动器,此操作将失败"Local NTFS volumes are required to complete the operation."
— Amit Beckenstein

11

啊哈,你可以试试我的VSCode扩展:正在同步。

希望你会喜欢。:)


快速指南

  1. 安装同步:

  2. 拥有自己的GitHub Personal Access Token:

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

      登录设置页面

    2. 选择Personal access tokens选项卡,然后单击确定Generate new token。

      生成新令牌

    3. 选择gist并单击Generate token。

      允许要点

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

      复制和备份令牌

  3. 同步您的设置:

    Syncing会询问必要的信息for the first time和save for later use。

    1. 上载:

      1. 键入upload在VSCode Command Palette。

      2. 输入您的GitHub Personal Access Token。

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

      4. 做完了!

      5. 上传后,您可以Gist ID在GitHub Gist中找到您的设置和相应的设置。

        设置和要点

    2. 资料下载:

      1. 键入download在VSCode Command Palette。

      2. 输入您的GitHub Personal Access Token(或leave it blank如果您想从公共Gist下载)

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

      4. 做完了!


嗯 这似乎不同步我在参考VS Code安装中安装的扩展。我是否缺少某些功能,或者此功能超出了此工具的范围?
— SeaDude

编辑:我必须运行Syncing: Download Settings2倍才能下载扩展。没什么大不了的,只是抬头。感谢您的杀手级工具!
— SeaDude

1
我对将自己的设置发布到(半)公开Gist上感到百感交集。某些扩展在其设置中存储敏感数据(例如数据库登录名,SFTP登录名)。很难通过Syncthing或Resilio Sync之类的外部工具将存储重定向到“本地”文件吗?
— korkman

@korkman目前尚不支持导出到本地存储,但是最好支持文件同步。
— Nonoroazoro

9

在v1.45中,您似乎可以通过github登录到内置的“设置同步”,请参阅https://github.com/microsoft/vscode/issues/95160#event-3266867554(在设置同步中支持GitHub登录) )。以及v1.45发行说明。


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

设置同步

最近几个月,我们一直在努力支持跨计算机同步VS Code设置,扩展名和键盘快捷键(流行功能请求#2743)。在这个里程碑中,我们很高兴地宣布,此功能已准备好在我们的下一个1.44.0版本的内部发布程序中进行预览。现在,您可以在所有计算机上的所有VS Code安装中同步自定义设置。您还可以轻松地在新机器上使用个人自定义引导VS Code。以下视频演示了这一点:

支持在同步时检测设置和键绑定中的冲突。使用差异编辑器显示冲突,左侧的传入(云)更改和右侧的本地更改。您可以通过在右侧编辑器中进行编辑来解决冲突,并使用编辑器中提供的操作合并更改。

支持的功能

当前,设置,键盘快捷键,扩展名和显示语言已同步,但我们计划添加更多功能。您可以查看建议的设置同步功能列表。

默认情况下,机器设置(具有机器或机器可覆盖范围的机器)不同步。您还可以从设置编辑器或使用设置向此列表添加或删除所需的设置 sync.ignoredSettings。

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

所有内置和已安装的扩展都与其全局启用状态同步。您可以从扩展程序视图或使用设置来跳过同步扩展程序 sync.ignoredExtensions。

设置同步活动可以在日志(同步)输出视图中进行监视。在同步过程中进行更改时,所有本地自定义项都会在磁盘中备份最近30天(至少10天)。您可以使用命令同步:打开本地备份文件夹转到备份位置并保留旧的自定义设置。

(以及发行说明链接中的一些gif)

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

设置同步使用Microsoft帐户存储您的VS Code定制以进行同步,因此您将需要一个帐户来使用它。有关更多信息和帮助,请参阅“ 设置同步”文档。

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


还有指向设置同步的v1.44信息的链接:https : //github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


谢谢马克。到来时,我会很想尝试的。
— Mark Whitaker

1
百万美元的问题是何时能稳定下来。1.46已经出局,但仍仅限内部人员使用:(
— bviktor

6

我在Mac上通过将VS Code复制settings.json到我的iCloud驱动器以进行自动备份,然后创建了符号链接来做到这一点。

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

要在其他Mac上使用备份,只需重复步骤2-5。

我也做了扩展 ...

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

@frankhommers看起来可以使用Window的symlink命令复制它mklink。您可以使用DropBox,OneDrive或其他云服务代替iCloud驱动器
— Chris Feist

4

我将我放置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')

3

用户设置

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

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

工作区设置

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


感谢您的答复,但您误解了这个问题。我问的是用户设置,而不是项目设置。我对这个问题做了一些澄清。
— 马克·惠特克

1
谢谢,我改进了答案
— 德沃斯

3

做到这一点的另一种方法是软链接文件,这些文件也可以存储在GitHub上的存储库中。例如,在Mac OS上,假设您有一个名为的目录~/dev/dotfiles/vscode。假设其中有两个文件,分别为settings.json和keybindings.json。您可以通过以下方式将这些文件进行软链接:

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找到相应设置目录的路径。


2

最终,这是一个内置功能:请参见Visual Studio Code中的“设置同步”。

注意:从2020年5月的1.46版开始,同步当前处于预览状态。


2
虽然仍在预览中
— 弗兰克·富

@FrankFu好吧,但这是一个很大的功能,而且他们正在取得进展:您能够同步到microsoft / github帐户,并且有一个建议的用于帐户登录的api等。(这对于像我们这样的其他扩展很有用github btw)
— Chayim Friedman

@ChayimFriedman,哦,百分百,我无意抱怨。我觉得有必要清除它,以免给人们错误的希望,因为原始的未经编辑的答案没有其他说明。
— 弗兰克·富

@FrankFu哦,很好。抱歉。
— Chayim Friedman

-7

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


这不是建设性的建议,因为工作空间设置不会在项目或系统之间同步。
— Itanex '18年

2
给予@ColacX疑点的利益,我假设什么意思是,如果你使用的工作空间的设置,你可以将它们保存在混帐/ SVN /等等,这确实在事实上同步他们的感觉。
— Joshua Sleeper
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.