LoginSignup
8
10

More than 1 year has passed since last update.

Visual Studio Code 拡張機能をCLIで操作する

Last updated at Posted at 2020-02-29

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サイトでも確認できます。
image.png

インストール・アンインストール

拡張機能の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にあります。

vscodeの拡張機能画面
image.png

Marketplace
IDはUnique Identifierになってますね。
image.png

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.
8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10