有没有办法在实例之间同步我的 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 time
和save 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.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 找到相应设置目录的路径
【讨论】:
【参考方案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 Code 的扩展文件夹位置?
有没有办法在 mysql 服务器和本地 MS Access 之间同步(两种方式)表?
有没有办法在 Visual Studio 2010 中突出显示当前活动的代码块?