VSCodeの拡張機能が動かなくなった
Visual Studio Codeの拡張機能が動かなくなった。
原因としては markdown-all-in-one
という拡張機能がうまくアンインストールできていなかったから。
調査の記録を記事として書きました。
現象
拡張機能を使おうとすると Command 'Live Share: Join Collaboration Session' resulted in an error (command 'liveshare.join not found)
と表示されて拡張機能が動作しない。
LiveShareだけかと思ったらその他の拡張機能も同様に開くことができなくなっていた。
調査
拡張機能が存在するか調査
code --list-extentions
コマンドでVSCodeに入っている拡張機能一覧を取得する。
ref: Managing Extensions in Visual Studio Code
❯ code --list-extensions 4ops.terraform aws-scripting-guy.cform christian-kohler.path-intellisense CoenraadS.bracket-pair-colorizer Darfka.vbscript DavidAnson.vscode-markdownlint donjayamanne.githistory eamodio.gitlens esbenp.prettier-vscode funkyremi.vscode-google-translate GitHub.vscode-pull-request-github Gruntfuggly.todo-tree hashicorp.terraform hediet.vscode-drawio jebbs.plantuml ms-azuretools.vscode-docker ms-python.python ms-python.vscode-pylance ms-toolsai.jupyter ms-toolsai.jupyter-keymap ms-toolsai.jupyter-renderers ms-vscode-remote.remote-containers ms-vscode-remote.remote-ssh ms-vscode-remote.remote-ssh-edit ms-vscode-remote.remote-wsl ms-vscode-remote.vscode-remote-extensionpack ms-vscode.powershell ms-vsliveshare.vsliveshare ms-vsliveshare.vsliveshare-audio ms-vsliveshare.vsliveshare-pack redhat.java redhat.vscode-commons redhat.vscode-yaml streetsidesoftware.code-spell-checker Tyriar.sort-lines VisualStudioExptTeam.vscodeintellicode vscjava.vscode-java-debug vscjava.vscode-java-dependency vscjava.vscode-java-pack vscjava.vscode-java-test vscjava.vscode-maven
開けなかった拡張機能は存在していることになっている...
❯ ls ~/.vscode/extensions 4ops.terraform-0.2.2 aws-scripting-guy.cform-0.0.24 christian-kohler.path-intellisense-2.6.0 christian-kohler.path-intellisense-2.6.1 coenraads.bracket-pair-colorizer-1.0.62 darfka.vbscript-1.0.4 davidanson.vscode-markdownlint-0.45.0 donjayamanne.githistory-0.6.19 eamodio.gitlens-11.7.0 esbenp.prettier-vscode-9.1.0 funkyremi.vscode-google-translate-1.4.13 github.vscode-pull-request-github-0.34.3 gruntfuggly.todo-tree-0.0.214 gruntfuggly.todo-tree-0.0.215 hashicorp.terraform-2.18.0 hashicorp.terraform-2.19.0 hediet.vscode-drawio-1.6.4 jebbs.plantuml-2.17.0 jebbs.plantuml-2.17.1 jebbs.plantuml-2.17.2 ms-azuretools.vscode-docker-1.18.0 ms-azuretools.vscode-docker-1.19.0 ms-python.python-2021.12.1559732655 ms-python.vscode-pylance-2021.11.0 ms-python.vscode-pylance-2022.1.0 ms-python.vscode-pylance-2022.1.1 ms-toolsai.jupyter-2021.10.1001414422 ms-toolsai.jupyter-2021.11.1001550889 ms-toolsai.jupyter-2021.9.1101343141 ms-toolsai.jupyter-keymap-1.0.0 ms-toolsai.jupyter-renderers-1.0.4 ms-vscode-remote.remote-containers-0.202.5 ms-vscode-remote.remote-containers-0.209.6 ms-vscode-remote.remote-ssh-0.70.0 ms-vscode-remote.remote-ssh-edit-0.70.0 ms-vscode-remote.remote-wsl-0.63.13 ms-vscode-remote.vscode-remote-extensionpack-0.21.0 ms-vscode.powershell-2021.12.0 ms-vsliveshare.vsliveshare-1.0.5065 ms-vsliveshare.vsliveshare-1.0.5242 ms-vsliveshare.vsliveshare-1.0.5273 ms-vsliveshare.vsliveshare-audio-0.1.91 ms-vsliveshare.vsliveshare-pack-0.4.0 redhat.java-1.2.0 redhat.vscode-commons-0.0.6 redhat.vscode-yaml-1.2.2 redhat.vscode-yaml-1.3.0 streetsidesoftware.code-spell-checker-2.0.14 streetsidesoftware.code-spell-checker-2.1.3 streetsidesoftware.code-spell-checker-2.1.4 tyriar.sort-lines-1.9.1 visualstudioexptteam.vscodeintellicode-1.2.15 vscjava.vscode-java-debug-0.37.0 vscjava.vscode-java-dependency-0.18.9 vscjava.vscode-java-pack-0.20.0 vscjava.vscode-java-test-0.33.1 vscjava.vscode-maven-0.34.2 yzhang.markdown-all-in-one-3.4.0
一覧表示してもわかりにくいので表示のdiffを取ります。
❯ diff -i <(ls ~/.vscode/extensions | sed 's/-[0-9].*$//g' | uniq) <(code --list-extensions) 42d41 < yzhang.markdown-all-in-one
なんかフォルダだけに残っている拡張機能がありますね👀
コマンドの解説
diffコマンド
対象のファイルの差分を出力します。
比較するファイルとしてコマンドの実行結果を渡すには <()
を用いて名前付きパイプとするとあたかもファイルのように比較することができます。
まだ diff -i
で大文字と小文字の変化を無視することができます。
lsとsedコマンド
みんなの強い味方 sed
-[数字]
を空白に置換することで vscode/extentions
の表示に含まれるバージョン情報を削除しています。
ls ~/.vscode/extensions | sed 's/-[0-9].*$//g'
~ ❯ ls ~/.vscode/extensions | tail -n 3 vscjava.vscode-maven-0.34.2 yzhang.markdown-all-in-one-3.4.0 ~ ❯ ls ~/.vscode/extensions | sed 's/-[0-9].*$//g' | tail -n 3 vscjava.vscode-java-test vscjava.vscode-maven yzhang.markdown-all-in-one
uniq コマンド
表示行で重複するものを消せる。 複数バージョンの拡張機能があると複数フォルダが表示されて嶋う。uniq コマンドで重複を消している
検証
ファイルはあるけどVSCode側にインストールされていない拡張機能を削除。
❯ rm -rf ~/.vscode/extensions/yzhang.markdown-all-in-one-3.4.0
うまく動くようになった!
どうやら Markdown all in one を過去にアンインストールした際にファイルが残り続けてしまったことが原因らしい。
探してみるとネット上にもちらほらそんな記事が存在した。
最後に
無事に拡張機能が使えるようになってよかったです。 最近読んだシェルノック本がとても役立ちました。
いままでsedでどうやるんだっけ...とか悩むことがありましたがその頻度も減ってきていい感じです。 おすすめ。