有没有办法在实例之间同步我的 Visual Studio Code 设置?

Posted

技术标签:

【中文标题】有没有办法在实例之间同步我的 Visual Studio Code 设置?【英文标题】:Is there any way to sync my Visual Studio Code settings between instances? 【发布时间】:2016-01-28 06:57:36 【问题描述】:

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

是否有支持的方式来执行此操作? Code 中的直接支持会很好,但如果能够将我的 settings.json 位置移动到 Dropbox 或 OneDrive 文件夹也可以。

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


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

【问题讨论】:

一个非常简单的方法是,如果您使用 Google 的备份和同步程序,只需添加备份您的 C:\Users\[YOUR_USER]\AppData\Roaming\Code\User 文件夹。 How to export settings of Visual Studio Code?的可能重复 【参考方案1】:

用户设置

目前在 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 工作区设置。

【讨论】:

感谢您的回复,但您误解了问题。我问的是用户设置,而不是项目设置。我已经对这个问题进行了一些澄清。 谢谢,我改进了答案【参考方案2】:

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

主要特点

    使用您的 GitHub 帐户令牌。 一键上传和下载。 保存所有设置和 sn-ps 文件。 上传键:Shift + Alt + u 下载键:Shift + Alt + d 键入 Sync 以查看所有同步选项

它同步

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

详细文档来源

VSCode - Settings Sync blog post

在此处下载:VS Code - Settings Sync - Extention

【讨论】:

感谢 Shan Khan - 这个扩展非常有用 - 我有一组虚拟服务器,我需要在其中同步 VS Code 设置和实例之间的键绑定,并且这个扩展的工作方式与宣传的完全一样。 试过但没有成功。当我通过 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 Logged In Console (Help menu > Toggle Developer Tools).您可以使用高级设置 command.e.doShow @ messageService.ts:126 中的“同步:打开问题”打开问题 我很乐意接受这个答案,但我尝试了该工具,发现它不可靠且有问题。非常简单的场景:VS Code 安装在两台机器上,我试图让两者都自动上传/下载设置和扩展更改。在未能使其正常工作后,我最终放弃了。所以,好主意,但需要更多的工作。 将我的设置发布到(半)公共 Gist 时,我的心情很复杂。一些扩展在其设置中存储敏感数据(例如数据库登录、SFTP 登录)。是否很难将存储重定向到“本地”文件,由 Syncthing 或 Resilio Sync 等外部工具同步? @korkman 处理这些情况,设置同步将允许在未来的更新中通过本地文件和 git 存储库(如 gist)进行同步。【参考方案3】:

您可以从包含用户设置的目录创建一个硬链接,指向您的应用程序同步目录,例如 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 创建链接 因为如果给定名称已经存在,您将无法创建链接,而一旦下载设置,同步目录就会在那里。 这对于网络驱动器失败并显示消息"Local NTFS volumes are required to complete the operation."【参考方案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')

【讨论】:

【参考方案5】:

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

【讨论】:

不是一个建设性的建议,因为工作区设置不会跨项目或系统同步。 让@ColacX 从疑问中受益,我假设的意思是,如果您使用工作区设置,您可以将它们保存在 git/svn/etc 中,确实 实际上在某种意义上同步它们。【参考方案6】:

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

希望你会喜欢。 :)


快速指南

    安装Syncing:

    获取您自己的GitHub Personal Access Token

      登录您的 GitHub Settings 页面。

      选择Personal access tokens标签并点击Generate new token

      选择gist并点击Generate token

      复制并备份您的令牌。

    同步您的设置:

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

      上传

        VSCode Command Palette 中输入upload

        输入您的GitHub Personal Access Token

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

        完成!

        上传后,您可以在GitHub Gist中找到您的设置和对应的Gist ID

      下载

        VSCode Command Palette 中输入download

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

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

        完成!

【讨论】:

嗯。这似乎没有同步我在参考 VS Code 安装中安装的扩展。是我遗漏了什么还是这个功能超出了这个工具的范围? 编辑:我必须运行 Syncing: Download Settings 2x 才能下载扩展程序。没什么大不了的,只是提个醒。感谢杀手工具! 将我的设置发布到(半)公共 Gist 时,我的心情很复杂。一些扩展在其设置中存储敏感数据(例如数据库登录、SFTP 登录)。是否很难将存储重定向到“本地”文件,由 Syncthing 或 Resilio Sync 等外部工具同步? @korkman 尚不支持导出到本地存储,但支持文件同步可能会更好。【参考方案7】:

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

    settings.json 从 VS code settings directory $HOME/Library/Application Support/Code/User/settings.json 复制到您的备份位置 备份旧的settings.json,重命名为settings-old.json 在终端中,cd 到 VS 代码设置目录:cd ~/Library/Application\ Support/Code/User/ 使用命令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 检查是否可以在 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

【讨论】:

@frankhommers 看起来这可以使用 Window 的符号链接命令复制:mklink。您可以使用 DropBox、OneDrive 或其他云服务来代替 iCloud 驱动器【参考方案8】:

另一种方法是软链接您的文件,这些文件也可以存储在 GitHub 上的存储库中。例如,在 Mac OS 上,假设您有一个名为 ~/dev/dotfiles/vscode 的目录。假设其中有两个文件,分别名为settings.jsonkeybindings.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 找到相应设置目录的路径

【讨论】:

【参考方案9】:

在 v1.48 中:

预览功能

预览版功能尚未准备好发布,但功能足够 使用。我们欢迎您的早期反馈,而他们在 发展。

设置同步

设置同步现在可以在稳定版本中预览?。 参考user guide 了解更多信息和常见问题解答。

功能现在在产品中也称为设置同步。所有的 它的引用和设置被重命名为对齐。

另请参阅https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-synchttps://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync 上的“手动合并”和 Insiders 和 Stable 之间的同步


在 v1.45 中,您似乎可以通过 github 登录到内置的 Settings Sync,请参阅 https://github.com/microsoft/vscode/issues/95160#event-3266867554(在设置同步中支持 GitHub 登录)。还有v1.45 Release Notes。


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

设置同步

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

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

支持的功能

当前设置、键盘快捷键、扩展和显示 语言是同步的,但我们计划添加更多。你可以 查看我们提议的Setting Sync features 列表。

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

默认情况下,每个平台都会同步键盘快捷键。如果你的 键盘快捷键与平台无关,您可以同步 他们通过禁用设置跨平台 sync.keybindingsPerPlatform.

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

设置同步活动可以在日志(同步)输出中监控 看法。所有本地自定义都备份过去 30 天(至少 10) 在同步过程中每当它们被更改时在磁盘中。你 可以使用命令同步:打开本地备份文件夹去 备份位置并保留您的旧自定义设置。

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

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

Settings Sync 使用 Microsoft 帐户来存储您的 VS Code 自定义项以进行同步,因此您需要一个 帐户来使用它。更多信息请参考Settings Sync documentation 信息和帮助。

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


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

【讨论】:

谢谢马克。当它到来时,我会很想尝试一下。 百万美元的问题是什么时候会稳定。 1.46 已经发布,但仍然仅限内部人员使用 :( @bviktor 在 1.48 中现在很稳定:github.com/microsoft/vscode-docs/blob/vnext/release-notes/…【参考方案10】:

这终于是一个内置功能:见Settings Sync in Visual Studio Code。

【讨论】:

仍在预览中 @FrankFu 嗯,但这是一个很大的功能,他们正在取得进展:您可以同步到 microsoft/github 帐户,并且有一个用于帐户登录等的建议 api(其中将对其他扩展有用,例如我们的 github btw) @ChayimFriedman,哦,100%,我绝不打算抱怨。我觉得需要澄清它以避免给人们带来错误的希望,因为原始未经编辑的答案没有另外说明。 在 1.48 中现在稳定了:github.com/microsoft/vscode-docs/blob/vnext/release-notes/…

以上是关于有没有办法在实例之间同步我的 Visual Studio Code 设置?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2013 - 数据库数据比较

有没有办法更改 Visual Studio Code 的扩展文件夹位置?

有没有办法在 mysql 服务器和本地 MS Access 之间同步(两种方式)表?

有没有办法在 Visual Studio 2010 中突出显示当前活动的代码块?

有没有办法先在选项卡之间同步 redux 存储状态,然后让每个选项卡控制自己的状态?

使用 Visual Studio 在数据库项目和数据库之间同步权限