VS Codeのエージェントモードを拡張するには、を試してください!

2024年11月 (バージョン 1.96)

更新 1.96.1: この更新では、これらの問題が解決され、GitHub Copilot 無料プランが有効になります。

更新 1.96.2: この更新では、これらの問題が解決されます。

更新 1.96.3: この更新では、これらの問題が解決されます。

更新 1.96.4: この更新では、これらの問題が解決されます。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code の 2024 年 11 月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くの更新が含まれています。主なハイライトの一部を以下に示します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新にアクセスしてください。Insiders: 新しい機能をできるだけ早く試したいですか? 夜間ビルドのInsidersをダウンロードして、最新の更新が利用可能になり次第すぐに試すことができます。

GitHub Copilot

GitHub Copilot 無料プラン

GitHub Copilot の全く新しい無料枠を発表できることを嬉しく思います。GitHub Copilot 無料プランにサインアップするだけで、必要なのは GitHub アカウントだけです。毎月、 completions とチャットインタラクションの回数が与えられ、これは毎月リセットされます。

VS Code 内から直接サインアップできます。Copilot セットアップガイドの手順に従ってください。

Chat view shows the Copilot message and a button that enables you to sign in to use Copilot.

Copilot 無料プランの詳細と条件について詳しく学ぶことができます。

Copilot Edits

前回のマイルストーンで、自然言語を使用して複数のファイルを一度にすばやく編集できるCopilot Edits (現在プレビュー版) を導入しました。それ以来、エクスペリエンスの反復を続けています。Copilot Edits は、コマンドセンターの Copilot メニューを開き、[Open Copilot Edits] を選択するか、をトリガーすることで試すことができます。

進行状況とエディターコントロール

Copilot Edits は、さまざまなファイルで複数の変更を行うことができます。編集がストリーミングされるにつれて、その進行状況をより明確に確認できるようになりました。また、エディターオーバーレイコントロールを使用すると、すべての変更を簡単に循環して受け入れたり破棄したりできます。

チャットセッションを Copilot Edits に移動

コードへの変更のアイデアを検討するためにチャットビューを使用することがあります。個々のコードブロックを適用する代わりに、チャットセッションを Copilot Edits に移動して、セッションからのすべてのコード提案を適用できるようになりました。

Edit with Copilot showing for a chat exchange.

作業セットの提案ファイル

Copilot Edits では、作業セットは Copilot Edits が変更を提案できるファイルを決定します。関連するファイルを作業セットに追加するのに役立つように、Git リポジトリの場合、Copilot Edits は、既に追加したファイルに基づいて追加のファイルを提案できるようになりました。たとえば、Copilot Edits は、既に追加したファイルとよく一緒に変更されるファイルを提案します。

Copilot は、作業セットのファイルを追加ボタンの横に提案ファイルを表示します。ファイルを追加を選択し、関連ファイルを選択して、提案ファイルのリストから選択することもできます。

再起動後に編集セッションを復元

編集セッションは、VS Code の再起動後に完全に復元されるようになりました。これには、作業セット、承認状態、および過去のすべての編集ステップのファイル状態が含まれます。

エクスプローラー、検索、エディターから作業セットに追加

検索ビューの検索結果やエクスプローラービューのファイルに対して、新しいCopilot Edits にファイルを追加コンテキストメニューアクションを使用して、Copilot Edits 作業セットにファイルを追加できます。さらに、エディターコンテキストメニューからテキスト選択を Copilot Edits にアタッチすることもできます。

Add a file from the explorer view to Copilot Edits

Copilot でデバッグ

デバッグの構成は、特に新しいプロジェクトや言語を扱っている場合に難しい場合があります。このマイルストーンでは、VS Code を使用してプログラムをデバッグするのに役立つ新しい`copilot-debug` ターミナルコマンドを導入します。通常実行するコマンドの前に`copilot-debug`を付けることで使用できます。たとえば、通常`python foo.py`コマンドを使用してプログラムを実行する場合、`copilot-debug python foo.py`を実行してデバッグセッションを開始できます。

プログラムが終了すると、プログラムを再実行したり、プログラムのデバッグに使用された VS Code の起動構成を表示、保存、または再生成したりするオプションが表示されます。

ターミナルには、デバッグセッション後に起動構成を再実行、再生成、保存、または表示するオプションが表示されます。 テーマ: Codesong (vscode.devでプレビュー)

タスクのサポート

Copilot のデバッグ機能 ( `copilot-debug` および `/startDebugging` インテントを含む) は、デバッグ前にコンパイルステップが必要なコードに対して、必要に応じて `preLaunchTask` を生成するようになりました。これは、Rust や C++ などのコンパイル済み言語でよく見られます。

コンテキストを追加

Copilot Chat と Copilot Edits にシンボルとフォルダーをコンテキストとして含める新しい方法を追加し、ワークフロー中に関連情報を参照しやすくしました。

シンボル

シンボルは、アウトラインビューまたはパンくずリストからチャットビューにドラッグアンドドロップすることで、Copilot Chat と Copilot Edits に簡単にSを追加できるようになりました。

また、チャット入力にシンボル補完を導入しました。`#` の後にシンボル名を入力すると、最近作業したファイルからのシンボルの候補が表示されます。

プロジェクト全体でシンボルを参照するには、`#sym` を使用してグローバルシンボルピッカーを開くことができます。

フォルダー

フォルダーは、エクスプローラー、パンくずリスト、またはその他のビューから Copilot Chat にドラッグすることで、コンテキストとして追加できるようになりました。

フォルダーを Copilot Edits にドラッグすると、そのフォルダー内のすべてのファイルが作業セットに含まれます。

Copilot 使用状況グラフ

VS Code 拡張機能は、VS Code API を使用してCopilot の機能の上に構築できます。Runtime Status ビューで拡張機能の Copilot 使用状況のグラフを表示できるようになりました。このグラフは、過去 30 日間に拡張機能によって行われたチャットリクエストの数を示します。

Copilot usage graph in the Runtime Status view

コミットメッセージ生成のカスタム手順

Copilot は、変更に基づいてコミットメッセージを生成するのに役立ちます。このマイルストーンでは、コミットメッセージを生成する際のカスタム手順のサポートを追加しました。たとえば、コミットメッセージが特定の形式に従う必要がある場合、これをカスタム手順で記述できます。

github.copilot.chat.commitMessageGeneration.instructions 設定を使用して、カスタム手順を指定するか、カスタム手順を含むワークスペースのファイルを指定できます。これらの手順は、コミットメッセージの生成に使用されるプロンプトに追加されます。カスタム手順の使用方法に関する詳細情報を取得します。

インラインチャット

このマイルストーンでは、インラインチャットのユーザーエクスペリエンスをさらに改善しました。進行状況のレポートをより控えめなものにし、変更のストリーミング中に波線が非表示になり、検出されたコマンドがよりきれいにレンダリングされるようになりました。

また、擬似コードの検出を改善し続け、行がほとんど自然言語である場合にインラインチャットを続行できるヒントを表示するようになりました。この機能により、エディターに擬似コードを入力でき、それがインラインチャットのプロンプトとして使用されます。⌘I (Windows、Linux Ctrl+I) を押してこのフローをトリガーすることもできます。

Inline Chat hint for a line that is dominated by natural language.

さらに、空の行にインラインチャットのヒントを表示する新しい実験的な設定があります。この設定は、inlineChat.lineEmptyHint を介して有効にできます。デフォルトでは、この設定は無効になっています。

ターミナルチャット

ターミナルインラインチャットは、エディターインラインチャットに見た目と雰囲気を近づけるように刷新されました。

Terminal inline chat looks a lot like editor chat now

その他、注目すべき改善点をいくつか紹介します。

  • ウィジェットのレイアウトと配置が改善され、全体的に動作が向上しました。
  • モデルピッカーがあります。
  • 下部のボタンがより一貫性を持つようになりました。

@workspace のパフォーマンス向上

現在開いているワークスペースについて Copilot に質問するために`@workspace`を使用する場合、まずワークスペースを Copilot にコンテキストとして渡せる関連コードスニペットのセットに絞り込む必要があります。ワークスペースが GitHub リポジトリによってバックアップされている場合、GitHub コード検索を使用してこれらの関連スニペットをすばやく見つけることができます。ただし、コード検索インデックスはリポジトリのメインブランチを追跡するため、ローカルの変更やブランチ上ではそれに頼ることはできませんでした。

このマイルストーンでは、GitHub 検索の高速化の恩恵をブランチやプルリクエストにもたらす作業を行いました。これは、リポジトリのメインブランチに基づくリモートインデックスと、ローカルで変更されたファイルの検索の両方を行うことを意味します。次に、これらの結果を結合し、Copilot に高速で最新のスニペットのセットを提供します。GitHub コード検索とその有効化方法について詳しく読むことができます。

アクセシビリティ

コードアクションのアクセシビリティ信号

一部のコードアクションは完了に時間がかかる場合があります。たとえば、外部サービスを呼び出して画像の代替テキストを生成するクイックフィックスなどです。それらがいつトリガーされたか、またはいつ完全に適用されたかは明らかではない場合があります。そのため、コードアクションがトリガーされたか適用されたかを示すアクセシビリティ信号を追加しました。

これらの信号は、accessibility.signals.codeActionTriggered および accessibility.signals.codeActionApplied 設定で有効にできます。

REPL での自動フォーカス管理

REPL での作業時にアクセシビリティを向上させる新しい設定を導入しました。accessibility.replEditor.autoFocusReplExecution を使用すると、コードが実行されるたびにフォーカスを変更しない (none)、入力ボックスに移動する (input)、または最後に実行されたセルに移動する (lastExecution) かどうかを指定できるようになりました。デフォルトでは、フォーカスは入力ボックスに移動します。

ワークベンチ

拡張機能の検索結果の改善

拡張機能ビューでフリーフォームテキストを使用して拡張機能を検索すると、インストール済みの拡張機能が検索結果の上部に表示されるようになりました。これにより、マーケットプレイスを検索する際に、インストール済みの拡張機能を見つけて管理しやすくなります。

Installed extensions shown at top of search results.

拡張機能ビューから拡張機能をダウンロード

拡張機能ビューの拡張機能のコンテキストメニューにあるダウンロードアクションを使用して、VS Code から直接拡張機能をダウンロードできるようになりました。これは、拡張機能をインストールせずにダウンロードしたい場合に便利です。

Context menu option to download an extension from the Extensions view.

拡張機能のディスク容量

拡張機能エディターで、ディスク上の拡張機能のメモリ使用量を確認できるようになりました。これは、拡張機能が使用しているディスク容量を理解するのに役立ちます。

Extension memory usage on disk shown in the Extensions view.

エクスプローラーでの検索機能の改善

9 月のリリースでは、以前は利用できなかったプロジェクト全体でファイルをエクスプローラーで検索する機能が導入されました。ただし、この更新により、一時的にハイライトモードが削除され、特定のアクションが制限されました。

このリリースでは、ハイライトモードが復活しました。この機能により、ワークスペース全体でファイルやフォルダーを簡単に見つけられ、一致する結果がハイライト表示されて視認性が向上します。さらに、折りたたまれたフォルダーに新しい視覚的なインジケーターが導入され、一致がその中に隠されているかどうかが表示されます。

フィルター切り替えは引き続き利用可能で、一致しない項目を非表示にして、クエリに一致するファイルとフォルダーのみに集中できます。また、以前のリリースで無効にする必要があったすべてのコンテキストメニューアクションも再有効化しました。

検索コントロールを使用する際のユーザーエクスペリエンスも改善されました。ファイルエクスプローラーの最上部にスクロールすると、上部に余分なスペースが作成され、コントロールが検索結果を妨げないようにします。

The find control is rendered above the first file or folder in the explorer when scrolled to the top.

プライマリサイドバーとセカンダリサイドバーの間でビューを移動

ドラッグアンドドロップまたはビューの移動コマンドを使用して、ビューコンテナーを別の場所に移動できました。ビューコンテナーの移動先コンテキストメニューアクションを直接使用して、プライマリサイドバー、セカンダリサイドバー、またはパネル領域の間で移動できるようになりました。

タイトル領域のナビゲーションコントロールを非表示

タイトル領域をできるだけきれいに保ちたい人もいます。タイトル領域の戻る/進むボタンを非表示にできる新しい設定workbench.navigationControl.enabledを追加しました。

この設定は、タイトル領域を右クリックして、[ナビゲーションコントロール] を選択することでもアクセスできます。

Navigation Controls context menu when right-clicking the VS Code title area.

エディター

貼り付けとドラッグアンドドロップの動作を構成する

ファイルをテキストエディターにドラッグアンドドロップまたはコピーアンドペーストすると、VS Code はそのファイルに挿入する複数の方法を提供します。デフォルトでは、VS Code はファイルのワークスペース相対パスを挿入しようとします。ドロップ/ペーストコントロールを使用して、リソースの挿入方法を切り替えることができるようになりました。拡張機能は、Markdown のようにカスタマイズされた編集を提供することもでき、Markdown リンクを挿入する編集を提供します

新しいeditor.pasteAs.preferences および editor.dropIntoEditor.preferences 設定を使用すると、デフォルトで使用する編集の種類を優先的に指定できるようになりました。たとえば、コピー/ペーストで常に貼り付けられたファイルの絶対パスを挿入したい場合は、次のように設定するだけです。

"editor.pasteAs.preferences": [
    "uri.path.absolute"
]

これらの設定は、編集の種類の順序付けされたリストです。優先される種類の最初の一致する編集がデフォルトで適用されます。デフォルトの編集が適用された後でも、ドロップ/ペーストコントロールを使用して別の種類の編集に変更できます。

これらの新しい設定は、JavaScript と TypeScript の新しいコピーと貼り付けとインポートのサポートとうまく連携します。この機能は、JavaScript または TypeScript ファイル間でコードをコピーアンドペーストするときに、インポートを自動的に追加します。ワークフローを妨げないようにするため、デフォルトでは、貼り付けはプレーンテキストを挿入するだけで、`paste with imports` は貼り付けコントロールのオプションとして提供されるようにしました。ただし、VS Code で常にインポートを使用して貼り付けようとしたい場合は、次のように設定するだけです。

"editor.pasteAs.preferences": [
    "text.updateImports"
]

これで、VS Code は可能な場合は常にインポートを使用して貼り付けようとし、インポートを使用して貼り付ける編集が利用できない場合はプレーンテキストの貼り付けに戻ります。現時点では、これは JavaScript と TypeScript でのみ機能しますが、時間とともに他の言語もサポートを採用することを期待しています。

最後に、`editor.action.pasteAs` キーバインディングを設定する際に、優先する貼り付けスタイルを指定できるようになりました。以下のキーバインディングは常に貼り付けとインポートの更新を試みます。

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

エディターの検索履歴を永続化

検索コントロールは、セッション間で検索履歴を永続化し、VS Code の再起動後も復元できるようになりました。検索履歴はワークスペースごとに保存され、editor.find.history 設定で無効にできます。

上書きモード

Vim キーマップをインストールしない限り、VS Code がエディターでのテキストの上書きをサポートしていなかったことをご存知でしたか?多くのご要望により、入力時にテキストを挿入するのではなく、エディターでテキストを上書きする上書きモードが追加されました。これに便利なシナリオは、Markdown テーブルを編集する際に、テーブルのセルの境界をきれいに揃えたい場合です。

このモードは、コマンド View: Toggle Overtype/Insert Mode またはキーボードの Insert キーを使用して切り替えることができます。上書きモードの場合、ステータスバーに OVR インジケーターが表示されます。

上書きモード中のカーソルのスタイルは、editor.overtypeCursorStyle 設定を使用して変更できます。さらに、editor.overtypeOnPaste 設定があり、上書きモードでの貼り付けが上書きか挿入かを決定します。デフォルトの動作は、貼り付けられたテキストを挿入することです。

ソース管理

Git blame 情報 (実験的)

このマイルストーンでは、エディターの装飾とステータスバー項目を使用して blame 情報を表示する実験的なサポートが追加されました。git.blame.editorDecoration.enabled および git.blame.statusBarItem.enabled 設定を使用してこの機能を有効にできます。blame 情報にマウスオーバーすると、コミットの詳細が表示されます。

エディターとステータスバーに表示されるメッセージの形式は、git.blame.editorDecoration.templategit.blame.statusBarItem.template の設定でカスタマイズできます。最も一般的な情報には変数を使用できます。たとえば、次のテンプレートは、コミットの件名、作成者の名前、および作成者の日付を現在からの相対時間で表示します。

{
  "git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}

エディターの装飾の色を調整したい場合は、git.blame.editorDecorationForeground テーマカラーを使用してください。

この実験的な機能を試して、ご意見をお聞かせください。

ソース管理グラフのタイトルアクション

ユーザーからのフィードバックに基づいて、プルアクションとプッシュアクションをソース管理グラフビューのタイトルバーに戻しました。これらのアクションは、現在の履歴項目参照がソース管理グラフに表示されている場合に有効になります。

これらのアクション、またはソース管理グラフビューのタイトルバーのその他のアクションを使用しない場合は、タイトルバーを右クリックして非表示にすることができます。

Source Control Graph title actions and context menu to hide specific items.

ノートブック

セル間の選択ハイライト

選択ハイライトがノートブック内でサポートされるようになり、複数のセルにわたるテキスト選択に基づいたハイライトが可能になりました。これは、既存の設定 editor.selectionHighlight で制御されます。

複数カーソル: 検索一致のすべての出現箇所を選択

ノートブックは、検索一致のすべての出現箇所を選択のキーボードショートカットをサポートするようになりました。これは、コマンド ID notebook.selectAllFindMatches で見つけることができ、デフォルトでキーストローク ⇧⌘L (Windows、Linux Ctrl+Shift+L) で使用できます。

Markdown のセクションでセルを実行

ノートブックでは、Markdown セルのセルツールバーにセクションでセルを実行アクションが公開されるようになりました。Markdown セルにヘッダーがある場合、セクションとその子セクション内のすべてのセルが実行されます。ヘッダーがない場合、可能であれば、周囲のセクションのすべてのセルが実行されます。

セル実行時間の詳細表示

セルステータスバー内の実行時間情報に、詳細表示を増やすオプションが追加されました。これは、notebook.cellExecutionTimeVerbosity 設定でオンにすることができ、実行時間だけでなく実行タイムスタンプも表示できます。

Verbose cell execution time within cell status bar.

ターミナル

合字のサポート

GPU アクセラレーションを使用しているかどうかに関係なく、合字がターミナルでサポートされるようになりました。この機能は、terminal.integrated.fontLigatures の設定で有効にできます。

Fonts that support ligatures like ->, ==>, and so on will now visually look like single characters

この機能を使用するには、合字をサポートするフォントも使用していることを確認してください terminal.integrated.fontFamily

ターミナルタブをカスタマイズするための新しい変数

ターミナルタブに表示されるテキストは、変数のコレクションの使用を可能にする`terminal.integrated.tabs.title`および`terminal.integrated.tabs.description`設定によって決定されます。以下の新しい変数をサポートするようになりました。

  • ${shellType} - ターミナルで使用されているシェルの検出されたタイプ。これはデフォルト値に似ていますが、たとえば git コマンドを実行しても `git` には変更されません。

  • ${shellCommand} - ターミナルで実行されているコマンド。これはシェル統合が必要です。

    alt text

  • ${shellPromptInput} - ターミナルで実行されているコマンド、または現在検出されているプロンプト入力。これはシェル統合が必要です。

    Typing "echo hello" in the terminal will show "echo hello|" in the tab when configured

最近のコマンド実行で履歴ソースファイルを表示

最近のコマンド実行シェル統合機能には、関連する場合は履歴ファイルを含む、コマンドのソースの全サイズのヘッダーと、それを開く便利なボタンが含まれるようになりました。

alt text

このコマンドのデフォルトのキーバインディングは Ctrl+Alt+R です。

`/path/to/file.ext, ` の形式のリンクは、ターミナルでリンクとして検出されるようになりました。

テスト

帰属カバレッジ

このマイルストーンでは、拡張機能がテストごとにカバレッジを提供できるようにする API を完成させました。これにより、特定のテストがどのコードを実行したかを正確に確認できます。帰属カバレッジが利用可能な場合、フィルターボタンはテストカバレッジビュー、エディターアクション、テストカバレッジツールバー (テスト: テストカバレッジツールバーコマンドで切り替える) で利用できます。または、単にテスト: テストでカバレッジをフィルターコマンドを使用するだけでも利用できます。

テーマ: Codesong (vscode.devでプレビュー)

インライン失敗メッセージの再設計

テスト失敗メッセージを、より目を引くように、しかし邪魔にならないように再設計しました。これは、SCM や Copilot Edits からの diff など、忙しいシナリオで特に役立ちます。失敗メッセージを選択すると、引き続きピークコントロールが開き、失敗の完全な詳細が表示されます。

Image of new test error messages in the editor.

連続実行 UI の改善

以前は、テストエクスプローラービューの「目」アイコンで切り替え可能な連続テスト実行のグローバル状態は、デフォルトの実行プロファイルセットで連続実行をオンまたはオフに切り替えていました。

連続実行 UI を再設計し、プロファイルごとに個別に連続実行をオンまたはオフに切り替えるドロップダウンメニューを含めました。インジケーターを選択すると、最後に使用した実行プロファイルのセットがオンまたはオフに切り替わります。

言語

TypeScript 5.7

JavaScript および TypeScript のサポートは、TypeScript 5.7 を使用するようになりました。この主要なアップデートには、多くの言語とツールの改善、重要なバグ修正、およびパフォーマンス最適化が含まれています。

TypeScript 5.7 のリリースに関するすべての情報は、TypeScript ブログで読むことができます。以下のセクションでは、いくつかのツールのハイライトも紹介しています。

JavaScript と TypeScript のインポート付き貼り付け

ファイル間でコードを移動した後にインポートを追加するのにうんざりしていませんか?TypeScript 5.7 以降のインポート付き貼り付け機能を試してください。JavaScript または TypeScript 間でコードをコピーして貼り付けるたびに、VS Code は貼り付けられたコードのインポートを追加できるようになりました。

インポートが追加されるだけでなく、貼り付けられたコードで使用されていたローカル変数に新しい export が追加されていることに注目してください!

この機能は時間を大幅に節約できると思いますが、既存のワークフローを妨げることにも配慮しています。そのため、デフォルトでは、コピー&ペーストは常に貼り付けられたテキストのみを挿入するようにしています。`paste with imports` の編集が利用可能な場合、貼り付けコントロールが表示され、`paste with imports` の編集を選択できます。

Paste control that shows options to insert plain text or paste with imports.

常にインポート付きで貼り付けることを好む場合は、新しい`editor.pasteAs.preferences` 設定を使用できます。

"editor.pasteAs.preferences": [
    "text.updateImports"
]

編集が利用可能な場合、常にインポート付きで貼り付けを試みます。

利用可能な場合、インポート付きで貼り付けするキーバインディングを設定することもできます。

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

ご希望であれば、逆にインポート付き貼り付けをデフォルトにし、プレーンテキストとして貼り付けるキーバインディングを追加することもできます。

"editor.pasteAs.preferences": [
    "text.updateImports"
]
{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.plain"]
  }
}

最後に、`paste with imports` を完全に無効にしたい場合は、typescript.updateImportsOnPaste.enabledjavascript.updateImportsOnPaste.enabled を使用できます。

リモート開発

リモート開発拡張機能を使用すると、Dev Container、SSH またはリモートトンネルを介したリモートマシン、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。

主なハイライトは次のとおりです。

  • remote-ssh Copilot チャット参加者
  • 強化されたセッションログ

これらの機能の詳細については、リモート開発リリースノートをご覧ください。

エンタープライズサポート

許可される拡張機能を構成する

extensions.allowed 設定を使用して、VS Code にインストールできる拡張機能を制御できるようになりました。この設定を使用すると、発行元、特定の拡張機能、およびバージョンによって許可またはブロックする拡張機能を指定できます。拡張機能またはバージョンがブロックされている場合、すでにインストールされていれば無効になります。次の種類の拡張機能セレクターを指定できます。

  • 発行元からのすべての拡張機能を許可またはブロックする
  • 特定の拡張機能を許可またはブロックする
  • 特定の拡張機能のバージョンを許可する
  • 特定の拡張機能のバージョンとプラットフォームを許可する
  • 拡張機能の安定バージョンのみを許可する
  • 発行元からの安定拡張機能バージョンのみを許可する

次の JSON スニペットは、さまざまな設定値の例を示しています。

"extensions.allowed": {
    // Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
    "microsoft": true,

    // Allow all extensions from the 'github' publisher
    "github": true,

    // Allow prettier extension
    "esbenp.prettier-vscode": true,

    // Do not allow docker extension
    "ms-azuretools.vscode-docker": false,

    // Allow only version 3.0.0 of the eslint extension
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // Allow multiple versions of the figma extension
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // Allow version 5.0.0 of the rust extension on Windows and macOS
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // Allow only stable versions of the GitHub Pull Requests extension
    "github.vscode-pull-request-github": "stable",

    // Allow only stable versions from redhat publisher
    "redhat": "stable"
}

発行元 ID で発行元を指定します。キーにピリオド (.) がない場合、それは発行元 ID と見なされます。キーにピリオドがある場合、それは拡張機能 ID と見なされます。現在、ワイルドカードの使用はサポートされていません。

異なる発行元 ID を持つ可能性があるにもかかわらず、Microsoft が発行したすべての拡張機能を参照するために、発行元 ID として `microsoft` を使用できます。

バージョン範囲はサポートされていません。拡張機能の複数のバージョンを許可する場合は、各バージョンを個別に指定する必要があります。プラットフォームによってバージョンをさらに制限するには、`@` 記号を使用してプラットフォームを指定します。たとえば、`"rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]`。詳細については、エンタープライズドキュメントを参照してください。

管理者は、Windows のグループポリシーを介してこの設定を構成することもできます。詳細については、エンタープライズドキュメントの「Windows のグループポリシー」セクションを参照してください。

VS Code をプリインストールされた拡張機能でセットアップする

VS Code を、一連のプリインストールされた拡張機能 (ブートストラップ) でセットアップできます。この機能は、VS Code がプリインストールされ、特定の拡張機能がユーザーにすぐに利用できるマシンイメージ、仮想マシン、またはクラウドワークステーションを準備する場合に役立ちます。

: 拡張機能のプリインストールは現在、Windows でのみサポートされています。

拡張機能をブートストラップするには、次の手順を実行します。

  1. VS Code インストールディレクトリに `bootstrap\extensions` フォルダーを作成します。

  2. プリインストールしたい拡張機能のVSIX ファイルをダウンロードし、`bootstrap\extensions` フォルダーに配置します。

  3. ユーザーがVS Codeを初めて起動すると、`bootstrap\extensions`フォルダー内のすべての拡張機能がバックグラウンドでサイレントインストールされます。

ユーザーはプリインストールされた拡張機能をアンインストールできます。拡張機能をアンインストールした後に VS Code を再起動しても、拡張機能は再インストールされません。

拡張機能への貢献

Python

Python Environments 拡張機能

このリリースでは、マーケットプレイスでプレビュー版が利用可能になった Python Environments 拡張機能を導入します。

この拡張機能は、Python 環境管理を簡素化し、環境の作成、削除、管理のための UI と、パッケージのインストールおよびアンインストール用のパッケージ管理を提供します。

さまざまな API を介して好みの環境マネージャーとシームレスに統合するように設計されており、デフォルトでグローバル Python インタープリター、venv、および Conda をサポートしています。開発者は、お気に入りの Python 環境マネージャーのサポートを追加し、拡張機能 UI と統合して、機能とユーザーエクスペリエンスを向上させるための拡張機能を構築できます。

Python Environments はマーケットプレイスからダウンロードでき、Python 拡張機能のプレリリースバージョンで使用できます。

Python テストの機能強化

  • pytest の `--rootdir` 引数は、ワークスペース内の `python.testing.cwd` 設定の有無に基づいて動的に調整されるようになりました。
  • テストデバッグセッションを再起動すると、指定されたテストのみが再実行されるようになりました。
  • カバレッジサポートが `NoSource` 例外を処理するように更新されました。
  • `pytest-describe` プラグインは、UI でのテスト検出と実行をサポートしています。
  • テスト書き換えは、プロセス間通信に UDS の代わりに FIFO を利用するようになり、ユーザーは `pytest_socket` のような pytest プラグインを自身のテスト設計で活用できるようになりました。
  • 書き換えがデフォルトステータスに近づいています: このリリースでは、テスト書き換えの最後の既知の問題が解決され、さらなる問題が発生しない限り、書き換え実験はオフになり、2025 年初めに書き換えがデフォルトに設定されます。

Python REPL の機能強化

  • ネイティブ REPL へのスマート送信後、エディターにフォーカスを残す
  • ネイティブ REPL のリロード後の処理を改善
  • VS Code ターミナルで Python 3.13 のインデントエラーの問題を修正

Pylance「フル」言語サーバーモード

`python.analysis.languageServerMode` 設定は、`full` モードもサポートするようになり、Pylance の機能の完全な範囲と最も包括的な IntelliSense エクスペリエンスを活用できるようになりました。ただし、これはパフォーマンスの低下を伴うことに注意してください。特に大規模なコードベースでは、Pylance がリソースを大量に消費する可能性があるためです。

`python.analysis.languageServerMode` 設定は、それが `light`、`default`、または `full` のいずれに設定されているかに応じて、以下の設定のデフォルト値を変更するようになりました。

設定 light default full
python.analysis.exclude ["**"] [] []
python.analysis.useLibraryCodeForTypes false true true
python.analysis.enablePytestSupport false true true
python.analysis.indexing false true true
python.analysis.autoImportCompletions false false true
python.analysis.showOnlyDirectDependenciesInAutoImport false false true
python.analysis.packageIndexDepths [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] { "name": "", "depth": 4, "includeAllSymbols": true }
python.analysis.regenerateStdLibIndices false false true
python.analysis.userFileIndexingLimit 2000 2000 -1
python.analysis.includeAliasesFromUserFiles false false true
python.analysis.functionReturnTypes false false true
python.analysis.pytestParameters false false true
python.analysis.supportRestructuredText false false true
python.analysis.supportDocstringTemplate false false true

TypeScript

TypeScript の展開可能なホバー (実験的)

このマイルストーンでは、TS サーバーから展開/縮小された情報を表示できるようになりました。拡張機能は、Expandable Hover API を使用して、エディターのホバーに `+` と `-` マーカーを表示し、より多くの情報またはより少ない情報を表示します。

実験的な設定は、typescript.experimental.expandableHover を使用して有効にできます。この設定を機能させるには、TypeScript バージョン 5.8 以降を使用する必要があります。`TypeScript: Select TypeScript Version...` コマンドを使用して TypeScript バージョンを変更できます。

Microsoft アカウントが MSAL (Windows で WAM をサポート) を使用するようになりました

Microsoft 認証の強力なセキュリティベースラインを確保するため、Microsoft アカウント拡張機能にMicrosoft 認証ライブラリを採用しました。

この作業の際立った機能の 1 つは、WAM (Web Account Manager...別名Broker) 統合です。簡単に言えば、Microsoft 認証フローのためにブラウザに移動する代わりに、OS に直接話しかけるようになりました。これは Microsoft 認証セッションを取得するための推奨される方法です。さらに、OS にすでにログインしているアカウントを活用できるため、高速です。

An authentication popup that the OS shows over VS Code.

この新しいフローで問題が発生した場合はお知らせください。重大な問題が発生し、以前の Microsoft 認証動作に戻す必要がある場合は、microsoft-authentication.implementation (classic に設定し、VS Code を再起動する) で行うことができますが、この設定は長くは存在しないことに注意してください。したがって、MSAL フローで問題が発生している場合は、イシューをオープンしてください。

拡張機能の作成

@vscode/chat-extension-utils

チャット言語モデル拡張機能 API を数か月間利用できるようにして、拡張機能の作成者が GitHub Copilot と統合できるようにしました。しかし、LLM と連携し、高品質のチャット拡張機能を構築することは本質的に複雑であり、特にツール呼び出しを使用したい場合はなおさらです。

チャット参加者を可能な限り簡単に立ち上げて実行できるようにすることを目的とした npm パッケージ、@vscode/chat-extension-utils を公開しました。これにより、チャット参加者がわずか数行のコードで実装できるように、自分でやらなければならないいくつかのことを引き継ぎます。このパッケージには、@vscode/prompt-tsx で使用するための便利な高品質の要素のコレクションも含まれています。

完全なドキュメントは`chat-extension-utils` リポジトリで確認でき、サンプルチャット拡張機能で実際に動作を確認できます。新しいLanguageModelTool API ドキュメントでもその使用方法について説明しています。

帰属カバレッジ API

テストカバレッジ API を使用すると、拡張機能はテストごとにカバレッジ情報を提供できるようになりました。この API を実装するには、`FileCoverage` の `includesTests?: TestItem[]` プロパティに、そのファイルでコードを実行したテストを示す値を設定し、`TestRunProfile.loadDetailedCoverageForTest` を実装してステートメントと宣言のカバレッジを提供します。

ユーザーにとってどのように表示されるかの例については、上記の帰属カバレッジセクションを参照してください。

JavaScript デバッグターミナルへの貢献

JavaScript デバッガーには、他の拡張機能が JavaScript デバッグターミナルの作成に参加するメカニズムが追加されました。これにより、Node.js 以外のフレームワークやランタイムでも、同じおなじみの場所でデバッグが可能になります。詳細については、JavaScript デバッガーのドキュメントを参照してください。

Node.js `fetch` API のプロキシサポート

グローバルな `fetch` 関数は、プロキシサポートが有効になりました (http.fetchAdditionalSupport)。これは、すでにプロキシサポートがあった `https` モジュールと似ています。

プレビュー機能

チャットコンテキストをアタッチするためにコードを貼り付ける

以前は、ファイルを Copilot Chat のコンテキストとしてすでにアタッチできました。コンテキストをより細かく制御するために、コードフラグメントを貼り付けてチャットのコンテキストとしてアタッチできるようになりました。これにより、必要なファイル情報と対応する行番号が追加されます。現在のワークスペースのファイルからのコードのみを貼り付けることができます。

これを試すには、いくつかのコードをコピーして、インラインチャット、クイックチャット、またはチャットビューに貼り付けます。表示される貼り付けコントロールを選択し、[貼り付けたコードのアタッチメント] を選択します。または、editor.pasteAs.preferences 設定を設定することもできます。

"editor.pasteAs.preferences": [
    "chat.attach.text"
]

Attaching code as context in Copilot Chat using the paste control.

より多くのシェルに対するターミナルの補完機能

以前のイテレーションでは、`pwsh` のターミナル補完機能に対する実験的なサポートを追加しました。このリリースでは、これを他のシェルに拡張する作業を開始しました。現時点では特に `bash` と `zsh` を対象としていますが、この新しいアプローチは拡張ホスト API によって実現されているため、ほとんどのシェルに対して一般的なサポートを提供する予定です。

terminal.integrated.suggest.enabled および terminal.integrated.suggest.enableExtensionCompletions を設定することで、現在の作業中の機能を試すことができます。現在、`cd`、`code`、`code-insiders` の引数のみがサポートされています。

The command  is typed on the terminal, which shows suggestions. Then  is typed and options are provided,  is selected. Completions are requested with ctrl+space and all locales are shown.  is typed and the list is filtered to  and .

提案されたAPI

クイックピックでの提案値選択 API

`InputBox` では、「値選択」を設定でき、入力の一部またはすべてをプログラムで選択できるようになりました。このマイルストーンでは、QuickPick での値選択の提案 API を追加しました。

その例を以下に示します。

const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];
qp.items = [
  { label: '12345678', description: 'desc 1' },
  { label: '12345678', description: 'desc 2' },
  { label: '12345678', description: 'desc 3' }
];
qp.show();

A couple of characters are selected in the quick pick's input box.

valueSelectionInQuickPick の提案を試して、この GitHub イシューでご意見をお聞かせください!

提案されたネイティブウィンドウハンドルAPI

このマイルストーンでは、フォーカスされたウィンドウのネイティブウィンドウハンドルを取得するための新しい提案APIを追加しました。ネイティブウィンドウハンドルは、特定のウィンドウへのポインタを提供するOSの概念です。これは、ネイティブコードと対話していて、たとえばウィンドウの上にネイティブダイアログをレンダリングする必要がある場合に便利です。

declare module 'vscode' {
  export namespace window {
    /**
     * Retrieves the native window handle of the current active window.
     * This will be updated when the active window changes.
     */
    export const nativeHandle: Uint8Array | undefined;
  }
}

これは、Microsoft Authentication のMSAL の採用のために特に追加されました。これにより、ネイティブハンドルを OS に渡して、VS Code の上に認証ダイアログをレンダリングできるようにしました。

nativeWindowHandle の提案に対するユースケースやフィードバックがありましたら、この GitHub イシューでお知らせください!

エンジニアリング

vscode-unpkg サービスによる拡張機能更新の最適化

マーケットプレイスインフラストラクチャへの負荷を軽減するため、VS Code は新しく追加された `vscode-unpkg` サービスのエンドポイントを使用して拡張機能の更新をチェックするようになりました。このサービスは 10 分の TTL を持つサーバーサイドキャッシュを実装しており、マーケットプレイスへの直接リクエストの数を大幅に削減します。この最適化は、extensions.gallery.useUnpkgResourceApi 設定 (デフォルトで有効) で制御されます。

拡張機能の更新に問題がある場合は、extensions.gallery.useUnpkgResourceApi でこの機能を無効にし、直接マーケットプレイスのバージョンチェックに戻すことができます。

エディターにおける GPU アクセラレーションの基礎作業

ターミナルと同様に、エディターでの GPU アクセラレーションを有効にする作業を開始したことをお知らせします。この取り組みの目標は、主に入力遅延を減らし、スクロールパフォーマンスを向上させることで、全体的なコーディングエクスペリエンスを向上させることです。

これはまだ初期段階でテストする準備はできていませんが、これまでに達成された進捗状況の詳細を共有したいと考えていました。

  • GPU レンダラーは、内部で WebGPU を使用しています。
  • 現在は、パフォーマンスよりも機能の同等性と正確性に焦点を当てています。
  • GPU アクセラレーションが有効になっている場合に、完全にサポートされていない行が DOM レンダリングに「フォールバック」できるようにするフォールバックメカニズムがあります。これは、早期に自己ホストでき、現在互換性のない行が代わりに DOM アプローチを使用して表示されることを意味します。現在フォールバックする行の例:200 文字を超える行、特定の Monaco デコレーション (例: 未使用変数のフェード) を含む行、折り返される行など。
  • Monaco のインライン装飾は、文字を含む実際の要素をスタイリングできるため、CSS を使用してスタイリングされるため、この機能にとって大きな課題となりました。ほとんどのインライン装飾を破損したり API を変更したりせずにサポートするために使用しているアプローチは、これらの装飾に添付された CSS を検出し、次に一般的な CSS プロパティのサブセットをサポートし、すべてのスタイルがサポートされていない場合はフォールバックすることです。

機能が動作しているスクリーンショットを次に示します。ガターの黄色の線は、フォールバックレンダリングを使用している行を示していることに注意してください。この特定のケースでは、`dontShow` パラメーターが未使用としてインライン装飾を持っているため、フォールバックレンダリングを使用しています。

GPU rendering looks mostly the same as DOM rendering currently, a yellow line appears for lines rendered via the DOM

この作業を追跡するイシューは#221145 であり、進捗状況に関する頻繁な更新と詳細が提供されています。

macOS 10.15 の EOL 警告

VS Code デスクトップは、今後数か月のマイルストーンでElectron 33に更新されます。Electron 33 の更新により、VS Code デスクトップは macOS Catalina では動作しなくなります。このマイルストーンでは、影響を受けるプラットフォームのユーザーに移行を促す非推奨の通知を追加しました。前述の OS バージョンのユーザーは、追加情報についてFAQをご覧ください。

注目すべき修正点

  • 233915 拡張機能ビューの拡張機能のコンテキストメニューにあるリンクをコピーアクションを使用して、拡張機能を他のユーザーと共有します。
  • 231542 EBUSY エラーでファイルを保存できない、またはファイルデータが消去されることが頻繁に発生する
  • 233304 `onDidChangeCheckboxState` が 1.95 で壊れている
  • 232263 プロセス間呼び出しがバッチ処理されるようにツリービューを最適化する
  • 156723 Wayland で実行しているときのドラッグアンドドロップサポートの修正

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-emmet-helperへの貢献

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

`vscode-extension-telemetry` への貢献

vscode-hexeditorへの貢献

vscode-json-languageserviceへの貢献

vscode-jupyterへの貢献者

vscode-mypyへの貢献

vscode-python-debuggerへの貢献者

vscode-python-tools-extension-template への貢献

  • @oliversen (Oliver Olsen)
    • 拡張機能パッケージから .dist-info ディレクトリを除外 PR #215
    • .vscodeignore 内の .pyc ファイルのグロブパターンを修正 PR #216
    • noxfile.py から重複コードを削除 PR #217

vscode-test-web への貢献

  • @Cecil0o0 (hj): VS Code のメインは npm に戻ったので、追いつくことができます PR #148

inno-updaterへの貢献

language-server-protocolへの貢献者