原因
Macのユーザ名を変更したことでユーザのディレクトリ名(/Users/ユーザ名
)も変更となり、その結果vscode拡張機能のインストール先情報が保存されるextensions.json
ファイルと実際インストール先のパス内容にずれが生じ、正常に動作しなくなった様子
具体例
Macのユーザ名変更前のextensions.json
を以下とする
[
{
"identifier": {
"id": "abusaidm.html-snippets",
"uuid": "XXXX"
},
"version": "0.2.1",
"location": {
"$mid": 1,
"fsPath": "/Users/旧ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
"path": "/Users/旧ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
"scheme": "file"
},
"metadata": {
"id": "XXXX",
"publisherId": "XXXX",
"publisherDisplayName": "Mohamed Abusaid",
"targetPlatform": "undefined",
"updated": false,
"isPreReleaseVersion": false,
"preRelease": false,
"installedTimestamp": 1655852273734
}
},
(中略)
]
この状態でMacのユーザ名が変更されるとextensions.json
の内容は変わらないが、拡張機能が実際にインストールされているフォルダが
/Users/新ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1
となり、
/Users/旧ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1
には拡張機能が保存されていないことになる。
すると、
実際にインストールされているはずの拡張機能がVSCode上で見えなくなったり、再度同じ拡張機能をインストールしようとしてもすでにextensions.json
に記載されている拡張機能なので重複などで正常に動作しなくなる様子
対処法
/Users/ユーザ名/.vscode/extensions/extensions.json
内の各拡張機能のlocationのパスを新しいパスに変更する
先ほどの例で言うと
"location": {
"$mid": 1,
- "fsPath": "/Users/旧ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
- "path": "/Users/旧ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
+ "fsPath": "/Users/新ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
+ "path": "/Users/新ユーザ名/.vscode/extensions/abusaidm.html-snippets-0.2.1",
"scheme": "file"
},
に変更するといい