設定の同期
設定の同期を使用すると、設定、キーバインド、インストール済みの拡張機能など、Visual Studio Code の構成を複数のマシン間で共有できるため、常に使い慣れた設定で作業できます。
注: VS Code は、SSH、開発コンテナー (devcontainer)、WSL に接続されている場合など、リモート ウィンドウとの間で拡張機能を同期しません。
設定の同期の有効化
設定の同期を有効にするには、管理 ギアメニューまたはアクティビティバーの下部にある アカウント メニューの 設定のバックアップと同期... エントリを使用します。
設定の同期を使用するには、サインインして同期する設定を選択する必要があります。 現在、設定の同期では以下の設定がサポートされています。
- 設定
- キーボードショートカット
- ユーザースニペット
- ユーザタスク
- UI 状態
- 拡張機能
- プロファイル
サインイン ボタンを選択すると、Microsoft アカウントまたは GitHub アカウントでサインインするかを選択できます。
この選択を行うと、ブラウザが開き、Microsoft アカウントまたは GitHub アカウントにサインインできます。 Microsoft アカウントを選択した場合、Outlook アカウントなどの個人アカウント、または Azure アカウントを使用できます。また、GitHub アカウントを新規または既存の Microsoft アカウントにリンクすることもできます。
サインインすると、設定の同期が有効になり、バックグラウンドで自動的に設定が同期され続けます。
マージまたは置換
既に 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
の使用例は、拡張機能の機能トピックにあります。
問題の報告
設定の同期アクティビティは、**ログ(設定の同期)**出力ビューで監視できます。設定の同期で問題が発生した場合は、問題を作成するときにこのログを含めてください。問題が認証に関連している場合は、**アカウント**出力ビューのログも含めてください。
データを削除するにはどうすればよいですか?
サーバーからすべてのデータを削除するには、**管理**ギアメニューにある**設定の同期がオンです**メニューから同期をオフにし、すべてのクラウドデータをクリアするチェックボックスを選択します。同期を再度有効にすることを選択した場合、初めてサインインする場合と同じようになります。
次の手順
- ユーザーとワークスペースの設定 - ユーザーとワークスペースの設定を通じてVS Codeを好みに設定する方法を学びます。
よくある質問
VS Codeの設定の同期は、設定の同期拡張機能と同じですか?
いいえ、設定の同期拡張機能(作成者:Shan Khan)は、GitHub上のプライベートGistを使用してVS Code設定を異なるマシン間で共有するものであり、VS Codeの設定の同期とは関係ありません。
設定の同期のサインインには、どのような種類のアカウントを使用できますか?
VS Codeの設定の同期は、Microsoftアカウント(OutlookやAzureアカウントなど)またはGitHubアカウントでのサインインをサポートしています。GitHub Enterpriseアカウントでのサインインはサポートされていません。将来的には他の認証プロバイダーがサポートされる可能性があり、issue #88309で提案されている認証プロバイダーAPIを確認できます。
**注**: VS Codeの設定の同期は、現在、Microsoft Sovereign Cloudアカウントの使用をサポートしていません。これが必要な場合は、このGitHub issueで使用したいMicrosoft Sovereign Cloudの種類をお知らせください。
設定の同期に別のバックエンドまたはサービスを使用できますか?
設定の同期は、設定を保存し、更新を調整するために専用のサービスを使用します。将来的には、カスタム設定の同期バックエンドを許可するために、サービスプロバイダーAPIが公開される可能性があります。
キーチェーンの問題のトラブルシューティング
**注**: このセクションは、VS Codeバージョン**1.80以降**に適用されます。1.80では、アーカイブされているため、keytarからElectronのsafeStorage APIに移行しました。
**注**: このドキュメントでは、keychain、keyring、wallet、credential storeは同義です。
設定の同期は、暗号化のために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(または類似のもの)
表示されているエラーが「ロックされたコレクションにアイテムを作成できません」である場合、キーリングのログイン
キーリングがロックされている可能性があります。OSのキーリング(Seahorseはキーリングを表示するために一般的に使用されるGUIです)を起動し、デフォルトのキーリング(通常はログイン
キーリングと呼ばれます)のロックが解除されていることを確認する必要があります。このキーリングは、システムにログインするときにロックを解除する必要があります。
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))を開き、**設定: ランタイム引数の構成**コマンドを実行することで、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))を開き、**設定: ランタイム引数の構成**コマンドを実行することで、password-store
をbasic
に設定できます。これにより、argv.json
ファイルが開き、設定"password-store":"basic"
を追加できます。
VS Code Stable と Insiders の間で設定を共有できますか?
はい。詳細については、StableとInsidersの同期セクションを参照してください。
InsidersビルドはStableビルドよりも新しいため、データの互換性がない場合があります。このような場合、データの不整合を防ぐために、Stableで設定の同期が自動的に無効になります。Stableビルドの新しいバージョンがリリースされたら、クライアントをアップグレードして設定の同期をオンにすると、同期を続行できます。