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

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

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

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

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

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

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

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

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

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

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

このビューは、コマンド パレットから 設定の同期: 同期データの表示 コマンドを使用して開くことができます。
拡張機能の開発者
あなたが拡張機能の作成者である場合は、ユーザーが設定の同期を有効にしたときに拡張機能が適切に動作することを確認する必要があります。たとえば、非表示にした通知やウェルカム ページを、拡張機能が複数のマシンで再度表示しないようにしたい場合などです。
マシン間でユーザーのグローバル状態を同期する
拡張機能が異なるマシン間で一部のユーザー状態を保持する必要がある場合は、vscode.ExtensionContext.globalState.setKeysForSync を使用して設定の同期に状態を提供します。UI の非表示フラグや表示済みフラグなどの状態をマシン間で共有することで、より優れたユーザー エクスペリエンスを提供できます。
setKeysforSync の使用例は、拡張機能の機能のトピックにあります。
問題の報告
設定の同期のアクティビティは、ログ (設定の同期) 出力ビューで監視できます。設定の同期で問題が発生した場合は、問題(イシュー)を作成する際にこのログを含めてください。問題が認証に関連している場合は、アカウント出力ビューのログもあわせて含めてください。
データを削除するにはどうすればよいですか?
サーバーからすべてのデータを削除したい場合は、管理ギア メニューにある 設定 of 同期はオンです メニューから同期をオフにし、すべてのクラウド データを消去するチェックボックスを選択します。同期を再度有効にすることを選択した場合、初めてサインインするときと同じ状態になります。
次のステップ
- ユーザー設定とワークスペース設定 - ユーザー設定とワークスペース設定を使用して、好みに合わせて VS Code を構成する方法を学びます。
よくある質問
VS Code の「設定の同期」は、「Settings Sync」拡張機能と同じですか?
いいえ、Shan Khan 氏による Settings Sync 拡張機能は、GitHub のプライベート Gist を使用して異なるマシン間で VS Code の設定を共有するものであり、VS Code の「設定の同期」とは関係ありません。
設定の同期のサインインにはどのような種類のアカウントを使用できますか?
VS Code の設定の同期は、Microsoft アカウント(Outlook や Azure アカウントなど)または GitHub アカウントのいずれかでのサインインをサポートしています。GitHub Enterprise アカウントでのサインインはサポートされていません。将来的には他の認証プロバイダーがサポートされる可能性があり、提案されている Authentication Provider API についてはイシュー #88309で確認できます。
注意: 現時点では、VS Code の設定の同期は Microsoft Sovereign Cloud アカウントの使用をサポートしていません。これをご希望の場合は、どのような Microsoft Sovereign Cloud を使用したいかをこちらの GitHub イシューでお知らせください。
設定の同期に別のバックエンドやサービスを使用できますか?
設定の同期は、設定を保存し、アップデートを調整するために専用のサービスを使用します。将来的には、カスタムの設定の同期バックエンドを可能にするために、サービス プロバイダー 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(あるいは類似のもの)
表示されているエラーが「Cannot create an item in a locked collection(ロックされたコレクション内にアイテムを作成できません)」である場合、キーリングの Login キーリングがロックされている可能性があります。OS のキーリングを起動し(Seahorse はキーリングを表示するためによく使用される GUI です)、デフォルトのキーリング(通常は Login キーリングと呼ばれます)がロック解除されていることを確認してください。このキーリングは、システムにログインするときにロック解除されている必要があります。
KDE
KDE 6 は、まだ Visual Studio Code で完全にサポートされていません。回避策として、最新の kwallet6 は kwallet5 としてもアクセスできるため、以下の VS Code で使用するキーリングの構成で説明されているように、パスワード ストアを
kwallet5に設定することで強制的に kwallet5 を使用させることができます。
ウォレット(別名キーリング)が閉じている可能性があります。KWalletManager を開くと、デフォルトの kdewallet が閉じているかどうかを確認できます。閉じている場合は、必ず開いてください。
KDE5 以降を使用していて、kwallet5 への接続に問題がある場合(イシュー #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))を開き、基本設定: ランタイム引数の構成コマンドを実行することで、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: 詳細については、基本テキストに関する以下のセクションを参照してください。
パスワード ストアが自動的に検出されなかった場合は、ご使用の構成がイシュー #187338 に記載されているかどうかを確認してください。記載されていない場合は、ご使用の構成をそちらに追加していただくか、自動パスワード ストア検出に関連しないと思われる問題であれば、詳細ログを添付して VS Code でイシューをオープンしてください。
(非推奨) 基本テキスト暗号化の構成
暗号化キー情報を検出し、キーリングに保存するために、Chromium の oscrypt モジュールに依存しています。Chromium は、ソースコードにハードコードされた文字列に基づくメモリ内キーを使用する、オプトインのフォールバック暗号化方式を提供しています。このため、このフォールバック方式は良く言えば「難読化」に過ぎず、システム上の任意のプロセスが論理的に保存された秘密情報を復号できるというリスクを許容する場合にのみ使用してください。
このリスクを受け入れる場合は、コマンド パレット(⇧⌘P(Windows、Linux では Ctrl+Shift+P))を開き、基本設定: ランタイム引数の構成コマンドを実行して、password-store を basic に設定できます。これにより argv.json ファイルが開き、設定 "password-store":"basic" を追加できます。
VS Code Stable と Insiders の間で設定を共有できますか?
はい。詳細については、Stable と Insiders の同期セクションを参照してください。
Insiders ビルドは Stable ビルドよりも新しいため、同期するとデータに非互換性が生じることがあります。そのような場合、データの不整合を防ぐために、Stable 側で設定の同期が自動的に無効になります。新しいバージョンの Stable ビルドがリリースされたら、クライアントをアップグレードして設定の同期をオンにすることで、同期を継続できます。