設定の同期
設定の同期を使用すると、設定、キーボードショートカット、インストールされている拡張機能など、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 ビルドよりも新しいため、同期するとデータに互換性がなくなる場合があります。そのような場合、データ inconsistencies を防ぐために、設定の同期は 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 アカウントでのサインインはサポートされていません。他の認証プロバイダーは将来サポートされる可能性があり、issue #88309 で提案されている認証プロバイダー API を確認できます。
注: 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 のキーリングを起動し (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 で 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 ビルドよりも新しいため、これによりデータに互換性がなくなる場合があることに注意してください。そのような場合、データ inconsistencies を防ぐために、設定の同期は Stable で自動的に無効になります。新しいバージョンの Stable ビルドがリリースされたら、クライアントをアップグレードし、設定の同期をオンにして同期を続行できます。