設定の同期
設定同期を使用すると、設定、キーボードショートカット、インストールされている拡張機能など、Visual Studio Code の構成を複数のマシン間で共有でき、常に使い慣れた設定で作業できます。
注: VS Code は、SSH、開発コンテナ (devcontainer)、WSL などに接続している場合のように、リモートウィンドウとの間で拡張機能を同期しません。
設定を同期する
設定同期は、管理ギアメニューの設定のバックアップと同期...エントリ、またはアクティビティバー下部のアカウントメニューからオンにできます。

設定同期を使用するには、サインインして同期する設定を選択する必要があります。現在、設定同期は以下の設定をサポートしています。
- 設定
- キーボードショートカット
- ユーザー スニペット
- ユーザー タスク
- UI ステート
- 拡張機能
- プロファイル

サインインボタンを選択すると、Microsoft または GitHub アカウントでのサインインを選択できます。

この選択後、ブラウザが開き、Microsoft または GitHub アカウントにサインインできます。Microsoft アカウントを選択した場合、Outlook アカウントなどの個人用アカウントまたは Azure アカウントのいずれかを使用でき、GitHub アカウントを新規または既存の Microsoft アカウントにリンクすることもできます。
サインイン後、設定同期がオンになり、バックグラウンドで自動的に設定が同期され続けます。
マージまたは置換
すでにマシンから同期しており、別のマシンから同期をオンにする場合は、次のマージまたは置換ダイアログが表示されます。

- マージ: このオプションを選択すると、ローカル設定がクラウドのリモート設定とマージされます。
- ローカルを置換: このオプションを選択すると、ローカル設定がクラウドのリモート設定で上書きされます。
- 手動でマージ...: このオプションを選択すると、マージビューが開き、設定を1つずつマージできます。

同期データの構成
マシン固有の設定 (machine または machine-overridable スコープを持つ設定) は、その値が特定のマシンに固有であるため、既定では同期されません。このリストに含める設定の追加または削除は、設定エディターから、または設定 settingsSync.ignoredSettings を使用して行えます。

キーボードショートカットは、既定ではプラットフォームごとに同期されます。キーボードショートカットがプラットフォーム非依存である場合は、設定 settingsSync.keybindingsPerPlatform を無効にすることで、プラットフォーム間で同期できます。
すべての組み込み拡張機能とインストールされた拡張機能は、グローバルな有効化状態とともに同期されます。拡張機能の同期をスキップするには、拡張機能ビュー (⇧⌘X (Windows、Linux Ctrl+Shift+X)) から、または設定 settingsSync.ignoredExtensions を使用します。

現在同期されている UI ステートは次のとおりです。
- 表示言語
- アクティビティバーのエントリ
- パネルエントリ
- ビューのレイアウトと表示設定
- 最近使用したコマンド
- 今後表示しない通知
同期する内容は、Settings Sync: Configure コマンド、または管理ギアメニューを開いてSettings Sync is Onを選択し、さらにSettings Sync: Configureを選択することでいつでも変更できます。
競合
複数のマシン間で設定を同期する際、時折競合が発生することがあります。競合は、マシン間で初めて同期を設定する場合や、マシンがオフライン中に設定が変更された場合に発生する可能性があります。競合が発生した場合、以下のオプションが提示されます。
- ローカルを受け入れる: このオプションを選択すると、クラウドのリモート設定がローカル設定で上書きされます。
- リモートを受け入れる: このオプションを選択すると、ローカル設定がクラウドのリモート設定で上書きされます。
- 競合を表示: これを選択すると、ソース管理の差分エディターに似た差分エディターが表示され、ローカル設定とリモート設定をプレビューし、ローカルまたはリモートのどちらかを受け入れるか、ローカル設定ファイル内の変更を手動で解決してからローカルファイルを受け入れるかを選択できます。
アカウントの切り替え
いつでもデータを別のアカウントに同期したい場合は、設定同期をオフにして、別のアカウントで再度オンにすることができます。同期をオフにするコマンドはSettings Sync: Turn offです。
StableとInsidersの同期
既定では、VS Code StableとInsidersビルドは異なる設定同期サービスを使用するため、設定を共有しません。設定同期をオンにする際にStable同期サービスを選択することで、InsidersをStableと同期できます。このオプションはVS Code Insidersでのみ利用可能です。

注: InsidersビルドはStableビルドよりも新しいため、それらを同期するとデータ互換性の問題が発生する場合があります。そのような場合、データの一貫性を防ぐために、設定同期はStableで自動的に無効になります。Stableビルドの新しいバージョンがリリースされたら、Stableクライアントをアップグレードし、同期をオンにして同期を続行できます。
データの復元
VS Code は、同期中に設定のローカルおよびリモートバックアップを常に保存し、これらにアクセスするためのビューを提供します。何か問題が発生した場合でも、これらのビューからデータを復元できます。

これらのビューは、コマンドパレットからSettings Sync: Show Synced Dataコマンドを使用して開くことができます。ローカル同期アクティビティビューは既定では非表示になっており、Settings SyncビューのオーバーフローアクションにあるViewsサブメニューを使用して有効にできます。

ディスク上のローカルバックアップフォルダは、Settings Sync: Open Local Backups Folderコマンドからアクセスできます。このフォルダは設定の種類ごとに整理されており、バックアップが行われたときのタイムスタンプが付けられたJSONファイルのバージョンが含まれています。
注: ローカルバックアップは30日後に自動的に削除されます。リモートバックアップの場合、各リソース (設定、拡張機能など) の最新20バージョンが保持されます。
同期されたマシン
VS Code は、設定を同期しているマシンを追跡し、それらにアクセスするためのビューを提供します。各マシンには、VS Code の種類 (Insiders または Stable) とそのプラットフォームに基づいて既定の名前が付けられます。ビューのマシンエントリにある編集アクションを使用して、マシン名をいつでも更新できます。また、ビューのマシンエントリにあるTurn off Settings Syncコンテキストメニューアクションを使用して、別のマシンでの同期を無効にすることもできます。

このビューは、コマンドパレットからSettings Sync: Show Synced Dataコマンドを使用して開くことができます。
拡張機能開発者
拡張機能の開発者は、ユーザーが設定同期を有効にしたときに、拡張機能が適切に動作することを確認する必要があります。たとえば、拡張機能が複数のマシンで同じ非表示になった通知やウェルカムページを表示しないようにしたいと考えるでしょう。
マシン間でユーザーのグローバル状態を同期する
拡張機能が異なるマシン間でユーザーの状態を保持する必要がある場合は、vscode.ExtensionContext.globalState.setKeysForSync を使用してその状態を設定同期に提供してください。UI の非表示フラグや表示済みフラグなどの状態をマシン間で共有することで、より良いユーザーエクスペリエンスを提供できます。
setKeysforSync の使用例は、拡張機能の機能のトピックに記載されています。
問題の報告
設定同期のアクティビティは、ログ (設定同期) 出力ビューで監視できます。設定同期で問題が発生した場合は、このログを問題作成時に含めてください。認証に関連する問題の場合は、アカウント出力ビューのログも一緒に含めてください。
データを削除するにはどうすればよいですか?
すべてのデータをサーバーから削除したい場合は、管理ギアメニューにあるSettings Sync is Onメニューから同期をオフにし、すべてのクラウドデータを消去するチェックボックスを選択してください。同期を再度有効にすることを選択した場合、初めてサインインするのと同じ状態になります。
次のステップ
- ユーザーとワークスペースの設定 - ユーザーとワークスペースの設定を通じて VS Code を好みに合わせて構成する方法を学びます。
よくある質問
VS Code の設定同期は、Settings Sync 拡張機能と同じですか?
いいえ、Shan Khan による Settings Sync 拡張機能は、GitHub のプライベート Gist を使用して VS Code の設定を異なるマシン間で共有するものであり、VS Code の設定同期とは関係ありません。
設定同期のサインインには、どのような種類のアカウントを使用できますか?
VS Code の設定同期は、Microsoft アカウント (例: Outlook または Azure アカウント) または GitHub アカウントでのサインインをサポートしています。GitHub Enterprise アカウントでのサインインはサポートされていません。他の認証プロバイダーは将来サポートされる可能性があり、提案されている認証プロバイダー API については、issue #88309 で確認できます。
注: 現時点では、VS Code 設定同期は Microsoft Sovereign Cloud アカウントの使用をサポートしていません。ご希望の場合は、どの種類の Microsoft Sovereign Cloud を使用したいか、この GitHub issue でお知らせください。
設定同期に別のバックエンドまたはサービスを使用できますか?
設定同期は、設定を保存し、更新を調整するために専用のサービスを使用します。将来的には、カスタム設定同期バックエンドを可能にするために、サービスプロバイダーAPIが公開される可能性があります。
キーチェーンのトラブルシューティング
注: このセクションは VS Code のバージョン1.80以降に適用されます。1.80では、keytar のアーカイブに伴い、Electron の safeStorage API に移行しました。
注: このドキュメントでは、キーチェーン、キーリング、ウォレット、資格情報ストアは同義です。
設定同期は、認証情報をデスクトップに OS のキーチェーンを使用して暗号化して永続化します。キーチェーンが正しく設定されていない場合や環境が認識されない場合、キーチェーンの使用が失敗することがあります。
問題を診断するために、VS Code を以下のフラグを付けて再起動することで詳細なログを生成できます。
code --verbose --vmodule="*/components/os_crypt/*=1"
Windows と macOS
現在、Windows または macOS で既知の構成の問題はありませんが、何か問題があると疑われる場合は、上記の詳細ログを添えてVS Code で問題を報告してください。これは、追加のデスクトップ構成をサポートするために重要です。
Linux
前のコマンドのログの上部には、次のような内容が表示されます。
[9699:0626/093542.027629:VERBOSE1:key_storage_util_linux.cc(54)] Password storage detected desktop environment: GNOME
[9699:0626/093542.027660:VERBOSE1:key_storage_linux.cc(122)] Selected backend for OSCrypt: GNOME_LIBSECRET
キーリング内の暗号化キー情報の検出と保存には、Chromium の oscrypt モジュールに依存しています。Chromium は多数の異なるデスクトップ環境をサポートしています。以下に、人気のあるデスクトップ環境と、キーリングが誤って構成されている場合に役立つトラブルシューティングの手順を概説します。
GNOME または UNITY (または類似)
「ロックされたコレクションに項目を作成できません」というエラーが表示されている場合、キーリングの「Login」キーリングがロックされている可能性があります。OS のキーリング (Seahorse は一般的に使用されるキーリング表示用の GUI です) を起動し、既定のキーリング (通常「Login」キーリングと呼ばれます) がロックされていないことを確認してください。このキーリングは、システムにログインするときにロック解除されている必要があります。
KDE
KDE 6 は Visual Studio Code でまだ完全にサポートされていません。回避策として: 最新の kwallet6 は kwallet5 としてもアクセスできるため、以下のVS Code で使用するキーリングを構成するで説明されているように、パスワードストアを
kwallet5に設定することで kwallet5 を使用するように強制できます。
ウォレット (別名キーリング) が閉じている可能性があります。KWalletManager を開くと、既定の kdewallet が閉じているかどうかを確認でき、閉じている場合は必ず開いてください。
KDE5 以降を使用しており、kwallet5 への接続に問題がある場合 (例えば、issue #189672 の非公式 VS Code Flatpak のユーザーなど)、キーリングを gnome-libsecret に構成してみることができます。これにより、Secret Service API を使用して有効なキーリングと通信できるようになります。kwallet5 は Secret Service API を実装しており、この方法でアクセスできます。
まだ kwallet5 への接続に問題がある場合、特定の D-Bus サービス権限を付与することで問題が解決したという報告が一部のユーザーからありました。
flatpak override --user --talk-name=org.kde.kwalletd5 --talk-name=org.freedesktop.secrets com.visualstudio.code
その他の Linux デスクトップ環境
まず、デスクトップ環境が検出されなかった場合、上記の詳細ログを添えてVS Code で問題を報告してください。これは、追加のデスクトップ構成をサポートするために重要です。
(推奨) VS Code で使用するキーリングを構成する
password-store フラグを渡すことで、VS Code にどのキーリングを使用するかを手動で指示できます。推奨される設定は、まだインストールされていない場合はまずgnome-keyringをインストールし、次に code --password-store="gnome-libsecret" で VS Code を起動することです。
この解決策が機能する場合は、コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、Preferences: Configure Runtime Arguments コマンドを実行することで、password-store の値を永続化できます。これにより argv.json ファイルが開き、設定 "password-store":"gnome-libsecret" を追加できます。
gnome-keyring 以外のキーリングを使用したい場合は、password-store のすべての可能な値を以下に示します。
kwallet5: kwalletmanager5 で使用する場合。gnome-libsecret: Secret Service API を実装する任意のパッケージ (例:gnome-keyring,kwallet5,KeepassXC) で使用する場合。- (非推奨)
kwallet: 古いバージョンのkwalletで使用する場合。 - (非推奨)
basic: 詳細については、以下の基本的なテキスト暗号化の構成 (非推奨)セクションを参照してください。
問題が発生した場合は、詳細ログを添えてVS Code で問題を報告することをためらわないでください。
(非推奨) 基本的なテキスト暗号化の構成
キーリング内の暗号化キー情報の検出と保存には、Chromium の oscrypt モジュールに依存しています。Chromium は、Chromium ソースにハードコードされた文字列に基づいてインメモリ キーを使用するオプトインのフォールバック暗号化戦略を提供します。このため、このフォールバック戦略は、せいぜい難読化であり、システム上のあらゆるプロセスが理論的には保存されたシークレットを復号化できるというリスクを受け入れる場合にのみ使用すべきです。
このリスクを受け入れる場合は、コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、Preferences: Configure Runtime Arguments コマンドを実行することで、password-store を basic に設定できます。これにより argv.json ファイルが開き、設定 "password-store":"basic" を追加できます。
VS Code Stable と Insiders の間で設定を共有できますか?
はい。詳細については、「StableとInsidersの同期」セクションを参照してください。
ただし、Insiders ビルドは Stable ビルドよりも新しいため、これによりデータ互換性の問題が発生する場合があります。このような場合、データの一貫性を防ぐために、Settings Sync は Stable で自動的に無効になります。Stable ビルドの新しいバージョンがリリースされたら、クライアントをアップグレードし、Settings Sync をオンにして同期を続行できます。