vscodeはコマンドラインで拡張機能の操作が行えます。
この記事の情報はWindows 64bit版のバージョン1.60.0
で確認した内容です。1年越しにちょっと更新しました。内容はほぼ変わってません。
> code -v
1.60.0
e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff
x64
ちなみに、自分自身の複数の開発環境を整えたい場合は設定の同期機能を使えばよいですし、プロジェクトでメンバーに特定の拡張機能を導入させたい場合は extensions.json を使ったりすることをお勧めします。
表示
インストールされている拡張機能をすべて表示する
code --list-extensions
--show-versions
を合わせて指定するとバージョンも出力されます。
code --list-extensions --show-versions
--category
を使えばカテゴリでフィルタできます。
code --list-extensions --category <category>
カテゴリを指定せずに実行すると、指定できるカテゴリを表示できます。1年くらい経ってから記事を更新してますが地味に変わってますね。
> code --list-extensions --category
Possible Categories:
azure
data science
debuggers
extension packs
education
formatters
keymaps
language packs
linters
machine learning
notebooks
programming languages
scm providers
snippets
testing
themes
visualization
other
MarketplaceのWebサイトでも確認できます。
インストール・アンインストール
拡張機能のIDかvsixファイルのパスを指定することで、インストールできます。
code --install-extension <extension-id[@<version>] | path-to-vsix> [--force]
既にインストールされている拡張機能のバージョンアップには--force
を指定する必要があります。
バージョンを指定した場合は--force
を指定しなくても上書きされるようです。
アンインストールには拡張機能のIDを指定します。
code --uninstall-extension <extension-id>
インストール・アンインストールのどちらも複数指定することで一括で処理できます。
code --install-extension <extension-id-1> --install-extension <extension-id-2>
一時的に無効
一時的に無効にしてvscodeを起動するためのオプションが用意されています。
あくまでデバッグ用途のため、実行したプロセスでしか無効になりません。
有効・無効の設定を操作するようなオプションはないようです。
指定した拡張機能を無効にして起動します。
code --disable-extension <extension-id>
複数指定すれば、複数無効にできます。
code --disable-extension <extension-id-1> --disable-extension <extension-id-2>
すべて無効にして起動します。
code --disable-extensions
Tips
拡張機能のIDやバージョンはどこで調べるの?
拡張機能のIDやバージョンは、vscodeやMarketplaceで拡張機能を検索して調べます。過去のバージョンはChangelogで確認できます。
codeコマンドで検索できればいいんですけどね。
記述時点では、それぞれ以下のように表示されます。Marketplaceはちょっとわかりづらいですが画面右部のMore Infoにあります。
Marketplace
IDはUnique Identifierになってますね。
bashスクリプトで一発インストール
コマンドラインで操作できると簡単なbashスクリプトで一発でインストールできたり便利ですね。
#!/bin/bash
exts=(
"vscode-icons-team.vscode-icons"
"PKief.material-icon-theme"
"ms-python.python"
)
cmd="code"
for ext in "${exts[@]}" ; do
cmd="$cmd --install-extension $ext"
done
eval $cmd
その他
他にも拡張機能のインストールディレクトリを変更するオプションやデバッグ用のオプションなどがあるみたいです。
以下は、バージョン1.60.0
のヘルプから拡張機能関連を切り出したもの。
Extensions Management
--extensions-dir <dir>
Set the root path for extensions.
--list-extensions
List the installed extensions.
--show-versions
Show versions of installed extensions, when using --list-extensions.
--category <category>
Filters installed extensions by provided category, when using --list-extensions.
--install-extension <extension-id[@version] | path-to-vsix>
Installs or updates the extension. The identifier of an extension is always `${publisher}.${name}`. Use `--force` argument to update to latest version. To install a specific version provide `@${version}`. For example: 'vscode.csharp@1.2.3'.
--uninstall-extension <extension-id>
Uninstalls an extension.
--enable-proposed-api <extension-id>
Enables proposed API features for extensions. Can receive one or more extension IDs to enable individually.
...
--disable-extensions Disable all installed extensions.
--disable-extension <extension-id> Disable an extension.
--sync <on> <off> Turn sync on or off.
--inspect-extensions <port> Allow debugging and profiling of
extensions. Check the developer tools for
the connection URI.
--inspect-brk-extensions <port> Allow debugging and profiling of
extensions with the extension host being
paused after start. Check the developer
tools for the connection URI.