インスタンス間でVisual Studio Code設定を同期する方法はありますか?


123

Windows 10とVisual Studioのように、VS Codeのユーザー設定([ファイル]> [設定]> [ユーザー設定])をクラウドに同期して、複数のインストール間で簡単に共有できるようにしたいのですが。

これを行うためのサポートされている方法はありますか?コードでの直接サポートは素晴らしいですが、それ以外の場合は、settings.jsonの場所をDropboxまたはOneDriveフォルダーに移動できればうまくいきます。

私はこれを自動的かつサイレントで行う方法を特に探しています。手動でエクスポート/インポートするのは面倒で、私が探しているものではありません。


更新:これに対する機能リクエストがあります。この機能が必要な場合は、高く評価してください。


2
非常に簡単な方法は、Googleのバックアップと同期プログラムを使用して、C:\ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ Userフォルダーをバックアップに追加するだけです。
— vinsa 2018年

回答:


126

複数のインスタンス間ですべてのVisual Studioコード設定を同期する拡張機能を開発しました。

主な特徴

  1. GitHubアカウントトークンを使用します。
  2. ワンクリックで簡単にアップロードおよびダウンロードできます。
  3. すべての設定とスニペットファイルを保存します。
  4. アップロードキー:Shift + Alt + u
  5. ダウンロードキー:Shift + Alt + d
  6. Sync In Orderと入力して、すべての同期オプションを表示します

同期

  • 設定ファイル
  • キーバインドファイル
  • 起動ファイル
  • スニペットフォルダ
  • VSCode 拡張

詳細なドキュメントソース

VSCode-設定同期のブログ投稿

ここからダウンロード:VSコード-設定の同期-拡張


1
おかげでShan Khan-この拡張機能は非常に便利です-インスタンス間のVS Code設定とキーバインディングを同期する必要がある一連の仮想サーバーがあり、この拡張機能は宣伝どおりに機能します。
— Bill_Stewart

試したが成功しなかった。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]メニュー> [Toggle Developer Tools])。事前設定コマンドから 'Sync:Open Issue'を使用して課題を開くことができます。e.doShow@ messageService.ts:126
— Robin Coe

4
この回答を受け入れたいのですが、ツールを試してみたところ、信頼性が低くバグが多いことがわかりました。非常に単純なシナリオ:VSコードが2台のマシンにインストールされ、自動アップロード/ダウンロードの設定と拡張機能の変更の両方を取得しようとしました。私はそれを機能させるのに失敗した後、結局あきらめました。したがって、素晴らしいアイデアですが、さらに作業が必要です。
— マークウィテカー

2
(半)パブリックGistに自分の設定を投稿するのは複雑な気持ちです。一部の拡張機能は、機密データ(データベースログイン、SFTPログインなど)を設定に保存します。SyncthingやResilio Syncなどの外部ツールによって同期され、代わりにストレージを「ローカル」ファイルにリダイレクトするのは難しいでしょうか?
— korkman

1
@korkmanは、これらの状況を処理するために、設定の同期により、ローカルファイルと、gistのようなgitリポジトリを介して将来の更新で同期できるようになります。
— Shan Khan

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%フォルダへのリンクを作成する必要がある理由がわかりません。同期ディレクトリ内のすべての実際のVSの設定のためにいったん移動します(Dropboxが、OneDrive、何でも...)、その後、すべてのコンピュータにあなたは、設定を同期削除する%APPDATA%\Code\Userと、使用してリンクを作成mklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
— ミカエルPollaを

2
指定された名前が既に存在する場合はリンクの作成に失敗するため、設定がダウンロードされると同期ディレクトリがそこに存在します。
— Ree氏2017年

ネットワークドライブの場合、これは次のメッセージで失敗します"Local NTFS volumes are required to complete the operation."
— Amit Beckenstein

11

ああ、あなたは私のVSCode拡張機能を試すことができます:Syncing。

あなたがそれを好きになることを願っています。:)


クイックガイド

  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(またはa public Gist ID)を入力してください

      4. できた!


うーん。これは、リファレンスのVS Codeインストールでインストールした拡張機能を同期していないようです。何か不足していますか、またはこの機能はこのツールの範囲を超えていますか?
— SeaDude 2018

編集:Syncing: Download Settings拡張機能をダウンロードするには、2x を実行する必要がありました。大したことはありません。キラーツールをありがとう!
— SeaDude 2018

1
(半)パブリックGistに自分の設定を投稿するのは複雑な気持ちです。一部の拡張機能は、機密データ(データベースログイン、SFTPログインなど)を設定に保存します。SyncthingやResilio Syncなどの外部ツールによって同期され、代わりにストレージを「ローカル」ファイルにリダイレクトするのは難しいでしょうか?
— コルクマン

@korkmanローカルストレージへのエクスポートはまだサポートされていませんが、ファイル同期をサポートすることをお勧めします。
— Nonoroazoro

9

v1.45では、github経由で組み込みの設定同期にログインできるように見えます。https://github.com/microsoft/vscode/issues/95160#event-3266867554を参照してください(設定同期でGitHubログインをサポートします) )。そして、v1.45リリースノート。


v1.43のプレビュー機能として(つまり、Insiders 'Buildのみ)、設定の同期があります。見るhttps://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-syncをください

設定の同期

過去2か月間、VSコード設定、拡張機能、およびキーボードショートカットのマシン間での同期をサポートするように取り組んできました(人気の機能要求#2743)。このマイルストーンでは、この機能が次の1.44.0インサイダーリリースからプレビューできるようになったことをお知らせいたします。これで、すべてのマシンのすべてのVS Codeインストールでカスタマイズを同期できます。また、最小限の労力で新しいマシンで個人用のカスタマイズを使用してVSコードをブートストラップすることもできます。次のビデオはこれを示しています:

同期中の設定とキーバインドの競合の検出をサポートします。競合は、左側に着信(クラウド)変更があり、右側にローカル変更がある差分エディターを使用して表示されます。右側のエディターで編集して競合を解決し、エディターで提供されるアクションを使用して変更をマージできます。

サポートされている機能

現在、設定、キーボードショートカット、拡張機能、表示言語は同期していますが、さらに追加する予定です。提案されている設定同期機能のリストを確認できます。

マシン設定(マシンまたはマシンでオーバーライド可能なスコープ)は、デフォルトでは同期されません。設定エディタから、または設定を使用して、このリストに必要な設定を追加または削除することもできます sync.ignoredSettings。

キーボードショートカットは、デフォルトでプラットフォームごとに同期されます。キーボードショートカットがプラットフォームに依存しない場合は、設定を無効にすることで、プラットフォーム間でショートカットを同期できます sync.keybindingsPerPlatform。

すべての組み込みおよびインストールされた拡張機能は、グローバルな有効化状態とともに同期されます。拡張機能ビューから、または設定を使用して、拡張機能の同期をスキップできます sync.ignoredExtensions。

設定の同期アクティビティは、ログ(同期)出力ビューで監視できます。すべてのローカルカスタマイズは、同期中に変更されるたびに、過去30日間(少なくとも10日間)ディスクにバックアップされます。コマンドSync:Open Local Backups Folderを使用して、バックアップの場所に移動し、古いカスタマイズを保持できます。

(およびリリースノートのリンクにあるいくつかのgif)

はあなたのMicrosoftアカウントを通じて機能していることに注意してくださいはgithubではなく(v1.45まで-トップを参照):

設定の同期では、Microsoftアカウントを使用してVSコードのカスタマイズの同期を保存するため、これを使用するにはアカウントが必要です。詳細とヘルプについては、設定同期のドキュメントを参照してください。

設定方法の詳細については、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


マークありがとう。届いたら試してみたいです。
— マークウィテカー

1
100万ドルの問題は、これがいつ安定するかです。1.46は
— リリース

6

Macでこれを行うには、settings.json自動バックアップ用にVS Code をiCloudドライブにコピーし、シンボリックリンクを作成しました。

  1. コピーsettings.jsonからVSコードの設定ディレクトリの $HOME/Library/Application Support/Code/User/settings.jsonバックアップ場所に
  2. にsettings.json名前を変更して古いものをバックアップするsettings-old.json
  3. ターミナルでcd、VSコード設定dirに:cd ~/Library/Application\ Support/Code/User/
  4. コマンドを使用して、バックアップしたファイルへのシンボリックリンクを作成します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これは、ウィンドウの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ワークスペース設定が自動的に取得されます。


返信ありがとうございます。質問を誤解しています。プロジェクト設定ではなく、ユーザー設定について質問しています。質問にいくつかの説明を追加しました。
— Mark Whitaker

1
おかげで、私は答えを改善しました
— Wosi 2015年

3

これを行う別の方法は、ファイルをソフトリンクすることです。これは、GitHubのリポジトリに保存することもできます。たとえば、Mac OSで、というディレクトリがあるとし~/dev/dotfiles/vscodeます。さんと呼ばれるそこに2つのファイルがあるとしましょう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

これは最終的に組み込み機能です。VisualStudio Codeの設定の同期を参照してください。

注:現在、 2020年5月のバージョン1.46の時点で同期がプレビューされています。


2
まだプレビューにかかわらず
— フランク・フー

@FrankFuまあ、これは大きな機能で、進歩しています:microsoft / githubアカウントに同期でき、アカウントログインなどのためのAPIが提案されています(これは、私たちのような他の拡張機能に役立ちます) github btw)
— Chayim Friedman

@ChayimFriedman、ああ100%、私の文句を言うつもりはなかった。元の編集されていない答えは別のことを言わなかったので、人々に誤った希望を与えないようにそれを片付ける必要があると感じました。
— フランク・フー

@FrankFuああ、いいね。ごめんなさい。
— Chayim Friedman

-7

ユーザー設定の代わりにワークスペース設定を使用します。


ワークスペース設定はプロジェクトまたはシステム間で同期しないため、建設的な提案ではありません。
— Itanex 2018

2
疑いの@ColacX利益を与え、私はあなたが作業領域の設定を使用している場合、あなたはgitの/ SVNの/ etc、ここでそれらを保存することができますということでした意図されたものを想定していないという意味で、それらの同期実際に。
— ジョシュアスリーパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.