設定の同期
設定の同期を使用すると、設定、キーボードショートカット、インストール済みの拡張機能などの 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 の状態が同期されます。
- 表示言語
- アクティビティ バーのエントリ
- パネルのエントリ
- ビューのレイアウトと可視性
- 最近使用したコマンド
- 「今後表示しない」に設定した通知
[設定の同期: 構成] コマンドを使用するか、管理歯車メニューを開き、[設定の同期はオンです] を選択し、次に [設定の同期: 構成] を選択することで、いつでも同期対象を変更できます。
競合
複数のマシン間で設定を同期していると、時々競合が発生することがあります。競合は、マシン間で初めて同期を設定するときや、マシンがオフラインの間に設定が変更されたときに発生する可能性があります。競合が発生すると、次のオプションが表示されます。
- ローカルを受け入れる: このオプションを選択すると、クラウドのリモート設定がローカル設定で上書きされます。
- リモートを受け入れる: このオプションを選択すると、ローカル設定がクラウドからのリモート設定で上書きされます。
- 競合を表示: これを選択すると、ソース管理の差分エディターに似た差分エディターが表示されます。ここでは、ローカルとリモートの設定をプレビューし、ローカルまたはリモートを受け入れるか、ローカル設定ファイルで手動で変更を解決してからローカルファイルを受け入れるかを選択できます。
アカウントの切り替え
いつでもデータを別のアカウントに同期したい場合は、設定の同期を一度オフにしてから、別のアカウントで再度オンにすることができます。同期をオフにするコマンドは [設定の同期: オフにする] です。
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
の使用例は、拡張機能の機能のトピックにあります。
問題の報告
設定の同期アクティビティは、ログ (設定の同期) 出力ビューで監視できます。設定の同期で問題が発生した場合は、Issue を作成する際にこのログを含めてください。問題が認証に関連している場合は、アカウント出力ビューのログも合わせて含めてください。
自分のデータを削除するにはどうすればよいですか?
サーバーからすべてのデータを削除したい場合は、管理歯車メニューの下にある [設定の同期はオンです] メニューから同期をオフにし、すべてのクラウドデータをクリアするチェックボックスを選択してください。同期を再度有効にすることを選択した場合、初めてサインインするかのように扱われます。
次のステップ
- ユーザー設定とワークスペース設定 - ユーザー設定とワークスペース設定を通じて、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 アカウントの使用をサポートしていません。これをご希望の場合は、この GitHub issue でどのような種類の Microsoft Sovereign Cloud を使用したいかをお知らせください。
設定の同期に別のバックエンドやサービスを使用できますか?
設定の同期は、設定を保存し、更新を調整するために専用のサービスを使用します。将来的には、カスタムの設定の同期バックエンドを可能にするために、サービスプロバイダー 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 で Issue を開くことができます。これは、追加のデスクトップ構成をサポートするために重要です。
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
への接続に問題がある場合 (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 で Issue を開くことができます。これは、追加のデスクトップ構成をサポートするために重要です。
(推奨) 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 で Issue を開くことをためらわないでください。
(非推奨) 基本テキスト暗号化を構成する
私たちは、キーリング内の暗号化キー情報を発見し保存するために、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 ビルドの新しいバージョンがリリースされたら、クライアントをアップグレードして設定の同期を有効にし、同期を続けることができます。