Visual Studio Code公式の設定同期「Settings Sync」を利用する

# はじめに

これまでも「Setting Sync」という拡張を入れることで、複数のVisual Studio Codeの設定を同期することは可能でした。ただGithubやGistの設定がやや面倒な側面があり、初期設定が煩雑でした。

しかしVer.1.48でついに公式の設定同期機能「Settings Sync（紛らわしいですがこちらは複数形）」が[リリース](https://code.visualstudio.com/updates/v1_48#_settings-sync)されました。以下の内容が同期可能です。

- 設定
- キーボードショートカット
- ユーザースニペット
- 拡張機能
- UIの状態（表示言語、アクティビティバー、パネル、画面レイアウト、コマンド履歴、同一通知の抑止）

ここではその簡単な使い方と、何ができるのか簡単にまとめたいと思います。

なお公式ドキュメントはこちら。

- [https://code.visualstudio.com/docs/editor/settings-sync](https://code.visualstudio.com/docs/editor/settings-sync)

# 事前準備

設定の同期を利用するためには、以下のいずれかのアカウントが必要です。必要に応じて準備してください。

- GitHubアカウント
- Microsoftアカウント

# 初期設定

まず左下の設定（歯車）をクリックし、「設定の同期をオンにする」を選択します。

![ss08-0013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/17ae2db8-7f2d-0d54-dcfd-c2e51e47e65a.png)

すると現時点ではプレビュー版のためその旨確認されるため、設定するのであれば「オンにする」を選択します。

![ss08-0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/838111d5-62d8-f956-e082-32880e2704ab.png)

「設定の同期」画面が開かれたら、同期する設定を選択し「サインインしてオンにする」を選択します。

![ss08-0003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/e8b6f23c-178e-1f3d-9790-c5300ca7e377.png)

同期するアカウントの種類の選択が求められるので、今回はGitHubを選択します。

![ss08-0004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/d91e4cbd-0d4f-0c5c-48c0-da693b0abb67.png)

するとブラウザが起動するので「Continue」を選択し

![ss08-0005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/ae75313e-354d-2729-5f79-78047d141dfa.png)

問題なければ「Authorize github」を選択して認証します。

![ss08-0006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/9ad6aa24-ba67-4ce5-437e-b2b64cff0352.png)

ブラウザがVS Codeの起動を確認してくるので開き

![ss08-0007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/95d6d74e-d7c6-a460-0c96-a32a7f1f80ca.png)

引き続きVS Code側の起動確認で「開く」を選択します。

![ss08-0008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/d5492711-0f6f-4241-eed4-3c7a8260297e.png)

すると初期の同期が実施されます。

# 同期の再設定

初期設置と同じように同期をオンにします。言語設定などは再起動しないと反映されないため、同期が完了したら一度再起動しましょう。

![vscode.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/9f2be0ab-96ae-cbcf-dfe9-748ec9e7577a.gif)

テーマや拡張・言語設定などが適用されているのが見て取れるかと思います。

起動直後は同期設定のメニューが表示されないことがあるので、その場合は設定メニューを開きなおしてください。

# 設定のマージとリプレース

サーバーの設定とローカルの設定で差異が発生した場合、つぎのようなダイアログが表示され対応が求められます。

![ss08-0014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/7bd89355-9212-a310-27a8-f1f94978721f.png)

つぎのいずれかから選択します。

- マージ：サーバーの設定をローカルにマージした上でサーバーの設定を更新します
- ローカルを置換：ローカルの設定を破棄してサーバーの設定を有効にします
- 手動でマージする：マージウィンドウが開かれるので手動でマージします

# 除外設定

つぎの同期対象を個別に除外設定することが可能です。

- 拡張
- 設定値
- プラットフォーム別のキーバインド

CSharp用の拡張を除外設定する例をお見せしましょう。

![vscode.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/cfa1bbe9-bb20-9cef-31e2-208be0f6f809.gif)

「設定」から「設定の同期がオン」を選択し、「設定の同期：設定を表示する」を開きます。その後、設定したい項目を選択してください。設定画面上ではアシストが効くため簡単に設定できることが見て取れます。

# 設定の復元

設定は履歴管理されており過去の状態へいつでも戻すことが可能ですし、一度戻したものを再度適用することも可能です。

![vscode.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99262/27df1c51-e6dc-9210-e07c-315f9bc91779.gif)

左の同期メニューを開き、同期アクティビティの履歴を確認することができます。

またその履歴から復元や再適用を自由に行うことができます。

# まとめ

という訳で、待望の設定同期機能が公式からまだプレビュー段階とはいえ公開されました。2020年8月時点では以下が同期可能です。

- 設定
- キーボードショートカット
- ユーザースニペット
- 拡張機能
- UIの状態（表示言語、アクティビティバー、パネル、画面レイアウト、コマンド履歴、同一通知の抑止）

プレビューですが、概ね正しく動作しているようで私は人柱していこうかと思います。