設定を残してVS Codeをアンインストールする
Visual Studio Code をゴミ箱にドラッグするとエディタは消え、設定は一切消えません。これは意図的な仕様でドキュメントにも書かれており、何かを直そうと再インストールしたあとも、多くの人が VS Code を以前のまま見つける理由です。
まっさらにするために消すなら、肝心なのはアプリ本体ではありません。
サポートファイルを削除する前に、VS Code の現在の公式アンインストール手順を確認してください。専用アンインストーラやアプリ内コマンドがある場合はそれを先に使い、所有者を確認できる残留物だけを後で扱います。
設定はアプリの外に置かれている
VS Code はユーザーの設定と状態をアプリケーションバンドルの外に置きます。
~/Library/Application Support/Code
~/.vscode-shared
~/.vscode
最初の場所には設定、キーバインド、ワークスペースの状態、拡張機能が保存したデータが入ります。最後の場所には拡張機能そのものが入ります。現在の手順には .vscode-shared も含まれます。このフォルダはすべての Mac にあるとは限りませんが、存在する場合は完全なリセットの対象です。
ドキュメントは、これらを消した結果をはっきり書いています。VS Code を入れる前の状態に戻り、設定はすべてリセットされます。それが工場出荷状態の正しい説明であり、固まったウィンドウを直そうとしていたなら望んだ結果ではありません。
まず望む結果を決める
アンインストールと呼ばれている作業は 3 種類あり、消す量も違います。
壊れたインストールを直すための再インストール:アプリだけ消す。すべて戻ります。問題が設定や拡張機能にあったなら何も起きません。それが想定どおりの結果です。
きれいなエディタから始める:アプリと一覧にある状態データを消す。戻したい設定があるなら先に書き出してください。
容量を空ける:エディタ本体、拡張機能、各プロジェクトのキャッシュを比較し、大きいものから確認します。状態データを一括で消す必要はありません。プロジェクトのキャッシュは別の記事で説明しています。
設定の同期が判断の分かれ目になる
Settings Sync がオンで、GitHub または Microsoft アカウントにサインインしているなら、設定、キーバインド、スニペット、拡張機能一覧はそのアカウントにあります。リセットの危険は下がりますが、拡張機能がローカルに書いたすべてのファイルを同期するわけではありません。
Settings Sync がオフなら、これらの状態データが唯一の記録かもしれません。自分で調整した settings.json はキャッシュではないため、別の場所にバックアップがあるか先に確認してください。
削除前に、アクティビティバー下部のアカウントメニューで同期状態を確認してください。
すべて削除する場合でも拡張機能の一覧を書き出す
code --list-extensions > ~/Desktop/vscode-extensions.txt
これは VS Code がまだ入っているうちに使え、再インストール後の復旧が記憶頼りではなく、一覧をなぞるだけの作業になります。code コマンドが PATH にない場合は、コマンドパレットの Shell Command から VS Code 側で入れられます。
コマンドラインツールと残留物
アプリを消すと、存在しないバンドルを指す code シェルコマンドが残ることがあります。参照先を確認して、無効なリンクを削除します。キャッシュ、ログ、保存された状態は個別に確認し、調査用ログや未保存の作業は残してください。状態データ全体をキャッシュとして扱わないことが大切です。
プロジェクトごとの成果物はこの話の対象外です。リポジトリ内の .vscode フォルダはそのプロジェクトのもので、バージョン管理と一緒に扱われます。エディタを消しても触るべきではありません。
判断する前にサイズを確認する
これらの状態データは気づかないうちに大きくなります。拡張機能ホストは言語サーバーをキャッシュし、数 GB まで伸びるインデックスを持つ拡張機能もあります。エディタのディスク使用量がエディタ本体より大きい本当の理由は、たいていそこです。
Mole は関連する状態データのパスとサイズを、アプリと並べて表示します。ただし、キャッシュか設定かは中身を確認して判断し、サイズだけでは決めないでください。通常の削除はゴミ箱へ移すため、空にする前なら取り出せますが、重要な設定は先にバックアップします。
Settings Sync が同期するもの、同期しないもの
Settings Sync が同期するのは、設定、キーボードショートカット、ユーザースニペット、拡張機能の一覧、および一部の UI 状態です。別のマシンで同じアカウントにサインインすれば、これらは自動的に戻ってきます。
同期しないのは、ワークスペース単位の状態と、拡張機能がディスクに書き込むデータです。リポジトリ内の .vscode/settings.json はリポジトリと一緒に移動するものであり、Settings Sync の対象外です。拡張機能のインデックス、言語サーバーのキャッシュ、サインイン状態も同期されないため、再インストールした拡張機能は改めてセットアップが必要になることがあります。
アクティビティバー下部のアカウントメニューに、現在の状態が表示されます。同期が有効なら、同期対象はリセット後に復元できます。拡張機能のローカルデータは別途バックアップが必要です。同期していない場合は、各状態データを唯一のコピーとして確認してください。