設定の同期
設定の同期を使用すると、設定、キーボード ショートカット、インストールされている拡張機能などの Visual Studio Code の構成を複数のマシンで共有できるため、常に使い慣れたセットアップで作業できます。
注: VS Code は、SSH、開発コンテナー (devcontainer)、または WSL に接続している場合など、リモート ウィンドウとの間で拡張機能を同期しません。
設定の同期を有効にする
設定の同期は、**管理**ギアメニューの**設定のバックアップと同期...**エントリまたはアクティビティバーの下部にある**アカウント**メニューを使用して有効にできます。
設定の同期を使用するには、サインインして、同期する設定を選択する必要があります。現在、設定の同期は以下の設定をサポートしています。
- 設定
- キーボードショートカット
- ユーザー スニペット
- ユーザー タスク
- UI の状態
- 拡張機能
- プロファイル
**サインイン**ボタンを選択すると、Microsoft または GitHub アカウントでのサインインを選択できます。
この選択を行うと、ブラウザが開き、Microsoft または GitHub アカウントにサインインできます。Microsoft アカウントを選択した場合、Outlook アカウントなどの個人アカウントまたは Azure アカウントを使用でき、GitHub アカウントを新規または既存の Microsoft アカウントにリンクすることもできます。
サインインすると、設定の同期が有効になり、バックグラウンドで設定が自動的に同期され続けます。
マージまたは置換
あるマシンからすでに同期しており、別のマシンから同期を有効にする場合、以下の**マージまたは置換**ダイアログが表示されます。
- マージ: このオプションを選択すると、**ローカル**設定がクラウドからの**リモート**設定とマージされます。
- ローカルを置換: このオプションを選択すると、**ローカル**設定がクラウドからのリモート設定で上書きされます。
- 手動でマージ...: このオプションを選択すると、**マージ**ビューが開き、設定を一つずつマージできます。
同期されたデータを構成する
マシン設定(machine
または machine-overridable
スコープを持つもの)は、その値が特定のマシンに固有であるため、デフォルトでは同期されません。このリストに追加または削除したい設定は、設定エディターから、または設定 settingsSync.ignoredSettings を使用して行うことができます。
キーボード ショートカットは、デフォルトではプラットフォームごとに同期されます。キーボード ショートカットがプラットフォームに依存しない場合、設定 settingsSync.keybindingsPerPlatform を無効にすることで、プラットフォーム間で同期できます。
すべての組み込みおよびインストールされた拡張機能は、そのグローバルな有効化状態とともに同期されます。拡張機能の同期をスキップするには、拡張機能ビュー(⇧⌘X (Windows, Linux Ctrl+Shift+X))から行うか、設定 settingsSync.ignoredExtensions を使用して行います。
現在、以下の UI 状態が同期されます。
- 表示言語
- アクティビティバーのエントリ
- パネルのエントリ
- ビューのレイアウトと表示
- 最近使用したコマンド
- 今後表示しない通知
同期される内容は、**設定の同期: 構成**コマンドを使用するか、**管理**ギアメニューを開き、**設定の同期がオン**を選択し、次に**設定の同期: 構成**を選択することで、いつでも変更できます。
競合
複数のマシン間で設定を同期する際、時折競合が発生する場合があります。競合は、マシン間で同期を初めて設定するときや、マシンがオフライン中に設定が変更された場合に発生する可能性があります。競合が発生した場合、以下のオプションが表示されます。
- ローカルを受け入れる: このオプションを選択すると、クラウドの**リモート**設定がローカル設定で上書きされます。
- リモートを受け入れる: このオプションを選択すると、**ローカル**設定がクラウドのリモート設定で上書きされます。
- 競合を表示: これを選択すると、ソース管理の差分エディターに似た差分エディターが表示され、ローカルとリモートの設定をプレビューし、ローカルまたはリモートのどちらかを受け入れるか、ローカル設定ファイルで変更を手動で解決してからローカルファイルを受け入れるかを選択できます。
アカウントの切り替え
データを別のBアカウントに同期したい場合は、いつでも設定の同期をオフにしてから、異なるアカウントで再度有効にすることができます。同期をオフにするコマンドは、**設定の同期: オフにする**です。
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` の使用例は、拡張機能の機能のトピックにあります。
問題の報告
設定の同期のアクティビティは、**ログ (設定の同期)** 出力ビューで監視できます。設定の同期で問題が発生した場合は、問題を作成する際にこのログを含めてください。問題が認証に関連する場合は、**アカウント**出力ビューからのログも一緒に含めてください。
データを削除するにはどうすればよいですか?
サーバーからすべてのデータを削除したい場合は、**管理**ギアメニューの下にある**設定の同期がオン**メニューから同期をオフにし、すべてのクラウドデータをクリアするチェックボックスを選択するだけです。同期を再度有効にすることを選択した場合、初めてサインインするような状態になります。
次のステップ
- ユーザーとワークスペースの設定 - ユーザーとワークスペースの設定を通じて、VS Code を好みに合わせて構成する方法を学びます。
よくある質問
VS Code の設定同期は、Settings Sync 拡張機能と同じですか?
いいえ、Settings Sync 拡張機能(Shan Khan 氏による)は、GitHub のプライベートな Gist を使用して VS Code の設定を異なるマシン間で共有するものであり、VS Code の設定同期とは関係ありません。
設定同期のサインインには、どのような種類のアカウントを使用できますか?
VS Code の設定同期は、Microsoft アカウント(Outlook や Azure アカウントなど)または GitHub アカウントでのサインインをサポートしています。GitHub Enterprise アカウントでのサインインはサポートされていません。他の認証プロバイダーは将来的にサポートされる可能性があり、提案されている認証プロバイダー 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 (または類似)
表示されているエラーが「ロックされたコレクションにアイテムを作成できません」の場合、キーリングの Login
キーリングがロックされている可能性があります。OS のキーリング(キーリングを確認するための一般的な GUI はSeahorse です)を起動し、デフォルトのキーリング(通常 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))を開き、**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 ビルドよりも新しいため、これによりデータの互換性の問題が発生する可能性があることに注意してください。そのような場合、データの不整合を防ぐため、Stable では設定同期が自動的に無効になります。新しいバージョンの Stable ビルドがリリースされたら、クライアントをアップグレードして設定同期を有効にし、同期を継続できます。