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

2023年7月 (バージョン 1.81)

更新 1.81.1: この更新には、これらの問題への対応が含まれています。

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


Visual Studio Code 2023年7月版へようこそ。このバージョンには多くの更新が含まれており、皆様に気に入っていただけることを願っています。主なハイライトは以下の通りです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

アクセシビリティ

アクセシブルビューの改善

アクセシブルビューを開く (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) コマンドを使用すると、スクリーンリーダーのユーザーはコンテンツを1文字ずつ、1行ずつ確認できます。前回のリフレッシュでは、エディターのホバーとチャットパネルの応答に対してアクセシブルビューを追加しました。

現在、通知、インラインチャットの応答、Jupyterノートブックの出力、およびワークベンチのホバーに対してもアクセシブルビューが利用できます。

アクセシブルビューを提供する要素にフォーカスが当たると、ARIAラベルにヒントが表示されます。このヒントは、accessibility.verbosity 設定により機能ごとに無効にできます。

チャットパネルと通知リストの要素間を簡単に移動できるように、アクセシブルビューで次を表示 (⌥] (Windows、Linux Alt+])) および アクセシブルビューで前を表示 (⌥[ (Windows、Linux Alt+[)) コマンドが用意されています。

ブレッドクラムのシンボル情報

ブレッドクラムをフォーカスして選択 (breadcrumbs.focusAndSelect) コマンドを使用した後、ブレッドクラムナビゲーションにスクリーンリーダー用のシンボル情報が含まれるようになりました。

入力コントロールと結果ナビゲーションの一貫性

入力コントロール (例: 検索またはフィルター入力) とその結果の間を移動する際の操作が、拡張機能ビュー、キーボードショートカットエディター、コメント、問題、デバッグコンソールパネルで、(⌘↓ (Windows、Linux Ctrl+Down)) および (⌘↑ (Windows、Linux Ctrl+Up)) を使用して一貫性を持つようになりました。

アクセシブルな差分ビューアー

差分エディターで、差分レビューペインアクセシブルな差分ビューアーに名称変更されました。アクセシブルな差分ビューアーは、差分エディターのアクセシビリティ上の欠点に対処するもので、F7 または差分エディターのその他のアクションメニューからアクセシブルな差分ビューアーを開くコマンドで開くことができます。この名称変更とともに、いくつかのバグを修正し、アクセシビリティヘルプダイアログの起動や、ビューアーから変更されたエディターへのジャンプなどの新機能も追加しました。

プロファイル

部分プロファイルのサポート

構成 (設定、キーボードショートカット、スニペット、タスク、拡張機能) の一部のみをカスタマイズするプロファイルを作成できるようになりました。たとえば、キーボードショートカットを除くすべての構成を含むプロファイルを作成でき、このプロファイルがアクティブな場合、VS Codeはデフォルトプロファイルのキーボードショートカットを適用します。

下の新しいプロファイルの作成スクリーンショットでは、キーボードショートカットがチェックされておらず、デフォルトプロファイルを使用中というメッセージが表示されています。そのVS Codeセッション中にアクティブなキーボードショートカットは、新しいプロファイルには適用されません。

Create New Profile dropdown with keyboard shortcuts unchecked

コピー元ドロップダウンメニューを使用して、プロファイルテンプレートまたは既存のプロファイルからコピーする際にも、部分プロファイルを作成できます。

Create a profile by copying from a Project Template or existing profile

プロファイルの編集UIでプロファイルを編集することにより、既存のプロファイルをデフォルトプロファイルの構成を使用するように設定することもできます。

Edit Profile dropdown with Keyboard Shortcuts unchecked

部分プロファイルをエクスポートする際、プロファイルでカスタマイズされた構成のみをエクスポートするか、またはデフォルトプロファイルの構成も含めてエクスポートするかを選択できます。

Profile view with Keyboard Shortcuts unchecked and Export button visible

設定をすべてのプロファイルに適用する

設定エディターで設定をすべてのプロファイルに適用オプションを選択することにより、設定をすべてのプロファイルに適用できるようになりました。

Apply Setting to all Profiles context menu item in the Settings editor

これにより、設定値がすべてのプロファイルに適用されます。この設定に対するどのプロファイルからの更新も、すべてのプロファイルに適用されます。設定をすべてのプロファイルに適用オプションのチェックを外すことで、この同期を元に戻すことができます。

拡張機能をすべてのプロファイルに適用する

拡張機能ビューで拡張機能をすべてのプロファイルに適用オプションを選択することにより、拡張機能をすべてのプロファイルに含めることができるようになりました。

Apply Extension to all Profiles context menu item in the Extensions view

これにより、この拡張機能がすべてのプロファイルで利用可能になります。拡張機能をすべてのプロファイルに適用オプションのチェックを外すことで、これを元に戻すことができます。

非デフォルトプロファイルでの設定JSONファイルコマンドIDの調整

基本設定: ユーザー設定を開く (JSON) (workbench.action.openSettingsJson) コマンドは、ユーザーが非デフォルトプロファイルを使用している場合、プロファイル固有の設定JSONファイルを開くようになりました。アプリケーションスコープの設定を表示するには、代わりに基本設定: アプリケーション設定を開く (JSON) (workbench.action.openApplicationSettingsJson) コマンドを使用してください。

Workbench

今後の更新のリリースノート

月ごとの安定版アップデートのインストール準備が整うと、アクティビティバー下部の**管理**メニュー (歯車ボタン) から**更新リリースノートを表示**コマンドを使用してリリースノートをプレビューできるようになりました。

Editor

markdown.editor.pasteUrlAsFormattedLink 設定に新しいオプション smart が追加されました。smart 貼り付け機能は、自動的なMarkdownリンクの書式設定を望まない可能性のあるテキストに貼り付ける際に検出できます。smart 貼り付けによって無視される状況には、Markdownリンク内への貼り付け、別のMarkdownリンクの上への貼り付け、およびコードブロック内への貼り付けが含まれます。

デフォルトでは、pasteUrlAsFormattedLink 機能は現在オフ (never) ですが、設定を smart または always (常にフォーマットされたURLリンクを作成) に変更できます。

非同期トークン化の展開

1.76版のアップデートで、レンダラープロセスのパフォーマンスを向上させるため、Webワーカーでのエディタードキュメントの非同期トークン化を実装しました。それ以来、稀な競合状態によって引き起こされるいくつかのバグを修正し、今回のリリースからこの機能をStableユーザーに展開し始めます。

待てない場合は、editor.experimental.asyncTokenizationtrue に設定することで、すぐに非同期トークン化を利用できます。

Diff editor

今回のイテレーションでは、新しい差分エディターの開発を継続し、Stableユーザーへの段階的な展開を計画しています。"diffEditor.experimental.useVersion2": true を設定することで、すぐに試すことができます。新しい差分エディターには、以下に説明するいくつかの新機能とバグ修正が含まれています。

未変更領域の折りたたみ

新しい差分エディターで未変更領域を非表示にするには、diffEditor.experimental.collapseUnchangedRegions を使用します。この機能は、多くの未変更行を含む大きな差分をレビューする際に役立ちます。

非表示行ブロックの境界線は、ドラッグまたはクリックすることで、下または上からテキストを表示できます。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

差分領域の配置

新しい差分エディターは、差分領域内のテキストを整列させるようになりました。これにより、インデントが変更されたり、行が挿入されたりした差分をレビューするのがはるかに容易になります。

以前 (差分領域の配置と空白差分が無効の場合)

A side by side diff without diff region alignment

以後 (差分領域の配置が有効の場合)

A side by side diff with diff region alignment

新しい差分アルゴリズムがデフォルトで有効になりました

新しい差分アルゴリズムの展開が完了し、VS Codeでデフォルトになりました。過去のリリースノートでアルゴリズムの改善点の一部を読むことができます。

差分のノイズ削減

今回の更新では、新しい差分アルゴリズムにヒューリスティックを追加し、無関係な単語が一致する可能性を減らしました。

以前の差分エディターはこうでした (this が両側で一致しているが、この一致は役に立たない点に注目)

Before using the new diff algorithm

ヒューリスティックな改善後の表示はこうです (無関係な一致が減っている点に注目)

After using the new diff algorithm heuristics

サイドの切り替え

新しい差分エディターのサイドバイサイドビューを使用している場合、一方からもう一方へジャンプできる新しいコマンド差分エディター: サイドを切り替えるが追加されました。サイドを切り替えると、アクティブなエディターのカーソル位置と現在の選択範囲がもう一方のサイドにマップされます。

さらに

新しい差分エディターで何が変更されたかの詳細については、1.80版のリリースノートをご覧ください!

ターミナル

インラインターミナルタブでのカスタムホバー

単一のターミナルがある場合に表示されるパネルのインラインターミナルタブが、より一貫性のある外観と埋め込みリンクのサポートのためにカスタムホバーを使用するようになりました。

Hovering the inline terminal tab will show information about the terminal

ソース管理

コミュニティのフィードバックに基づき、バージョン 2.31rev-parse Gitコマンドに追加された --path-format オプションを使用することで、パスにシンボリックリンクを持つGitリポジリのサポートが追加されました。今回のリリース以降、このようなリポジトリを開いた場合、すべてのソース管理機能(例: ソース管理ビュー、リポジリ検出、追加/変更/削除された行のエディター装飾など)が期待通りに動作するはずです。

デバッグ

JavaScriptデバッガー

Fast Node (Version) Managerのサポート

JavaScriptデバッガーが、そのランタイムバージョンでFast Node Manager (fnm) をサポートするようになりました。fnmのユーザーは、launch.jsonruntimeVersion プロパティを設定してNode.jsのバージョンを選択できます。

ノートブック

閉じたノートブックの豊富なコンテンツ検索

以前のリリースで、開いているノートブックの豊富なコンテンツワークスペース検索を導入しました。現在、閉じたノートブックに対しても豊富なコンテンツの結果を表示するプレビューサポートが利用可能です。

検索ビューでテキストを検索すると、ノートブックからの結果プレビューは、ノートブックエディターを開いたときに文字列がどのように表示されるかと一致するはずです。これは、ノートブックが閉じている場合にのみ入力結果を表示することに注意してください。これを試すには、設定で search.experimental.closedNotebookRichContentResults を有効にします。

大規模なストリーミング出力のパフォーマンス改善

実行中にストリームされる大規模なセル出力のパフォーマンス改善を行いました。これによりレンダリングアクティビティの量が減少しますが、現在これはスクロール可能なセル出力にのみ適用されます。

ノートブックのスティッキースクロール

今回のリリースでは、ノートブックエディター向け「スティッキースクロール」の最初のイテレーションが提供されます。ノートブックエディターの上部に表示されるスティッキースクロールは、現在表示されているセルまたはセル出力のMarkdownヘッダーを示します。スティッキースクロールの「行」を選択するとそのセルにフォーカスが当たり、ノートブック内を素早く移動できます。この機能は、notebook.stickyScroll.enabled 設定または表示: ノートブックのスティッキースクロールを切り替えるコマンドで有効にできます。

Web 用 VS Code

常に組み込み拡張機能の最新バージョンをロードする

vscode.devは常に組み込み拡張機能の最新バージョンをロードするようになりました。これにより、vscode.devを開いたときに、組み込み拡張機能を最新バージョンに更新するための「再読み込みが必要です」という通知が表示されなくなります。

リモート開発

Remote Development 拡張機能を使用すると、Dev Container、SSH経由のリモートマシンまたはリモートトンネル、あるいはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

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

  • VS Codeからリモートトンネルをサービスとしてインストールします。
  • @devcontainers/cliのインストールを簡素化しました。
  • Dev Container Featureの依存関係をロックファイルに記録します。

Remote Development のリリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。

拡張機能への貢献

GitHub Copilot

クイックチャットUXの改善

今回のイテレーションでクイックチャットの体験が刷新されました。

以前と同様に、⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) でこのビューを切り替えることができます。具体的な改善点には以下が含まれます。

  • 会話型チャット: クイックチャットの体験では、最後の質問と回答にフォーカスを合わせつつ、会話全体が表示されるようになりました。
  • スラッシュコマンドの補完: / を入力すると、スラッシュコマンドの補完が利用できるようになりました。

さらに、チャットのどの部分を表示するかを制御する実験的な設定 chat.experimental.defaultMode があります。これには3つのオプションがあります。

  • chatView - アクティビティバーにチャットアイコンを表示して、チャットビューでチャットを起動します (デフォルト)。
  • quickQuestion - タイトルバーにチャットアイコンを表示して、クイックチャットを起動します。
  • both - 両方のチャットアイコンが表示され、どちらのチャットUIでも開くことができます。

この設定とクイックチャットの体験全般についてご意見をお聞かせください。フィードバックを添えて問題をオープンすることをためらわないでください。

スラッシュコマンドの改善

パネル、インライン、クイックチャットのスラッシュコマンドに以下のユーザビリティ改善を行いました。

  1. スラッシュコマンドがブロックとしてレンダリングされるようになり、1回のバックスペースで削除できるようになりました。
  2. /clear/help などのサジェストリストからのスラッシュコマンドを受け入れると、そのコマンドが実行されるようになり、補完を受け入れた後にチャットリクエストを明示的に送信する必要がなくなりました。
  3. /createWorkspace パネルチャットスラッシュコマンドは、最初の質問で使用された後、チャット入力に再入力されるため、ワークスペースに関する追加の質問を簡単にできます。

以下の録画は、これら3つの改善をすべて示しています。

反復的な修正

/fix コマンドを使用している間、github.copilot.editor.iterativeFixing 設定で反復的な修正を有効にできます。反復的な修正が有効になっている場合、最初の修正後も選択範囲に診断エラーが残っていると、修正が2回目に実行されます。この設定はデフォルトで有効になっています。

ノートブック生成の改善

ノートブックを生成する際、生成されたコードの品質を向上させ、言語拡張機能によって検出された診断エラーを修正するための追加手順が実行されます。これはデフォルトで無効になっていますが、以下の設定で有効にできます。

"github.copilot.notebook": {
  "iterativeFixing": true,
  "iterativeImproving": true
}

インラインチャット

インラインチャットを使用中に、inlineChat.showDiff 設定を使用して差分ビューを有効/無効にできるようになりました。インラインチャットを右クリックすると、この設定を変更するためのコンテキストメニューが表示されます。

ターミナルコンテキスト

Copilot Chatは、アクティブなターミナルのバッファーと選択を認識するようになりました。

Python

エラー許容型のpytest検出

新しいテストアーキテクチャの展開の一環として、テストエクスプローラーパネルはエラー許容型のpytest検出をサポートするようになりました。検出中にpytestによって処理可能なエラー(例: 未知のインポートからのエラー)がスローされた場合でも、エラーのあるファイル以外のすべてのテストは引き続き検出されます。この機能は、まだ実験段階である新しいテストリライトでのみ利用可能です。このリライトは現在、Insidersユーザーの100%とStableユーザーの25%でアクティブになっていますが、まもなく普遍的に採用される予定です。それまでの間、pythonTestAdapter 設定でオプトインまたはオプトアウトできます。

引数付きファイルを実行するためのデバッガー構成

新しいDebugpy拡張機能は、引数付きPythonファイルlaunch.json構成を提供するようになりました。これは、Pythonファイルを実行するたびにコードやデバッガー構成を変更することなく、異なる入力値を提供したい場合に便利です。

この構成を使用するには、Debugpy拡張機能がインストールされていることを確認してください。⇧⌘D (Windows、Linux Ctrl+Shift+D) を押して実行とデバッグビューを開き、launch.jsonファイルを作成するか、歯車アイコンを選択してlaunch.jsonファイルにアクセスします。Debugpyを選択し、利用可能な構成からPython: 引数付きファイルを選択します。

コマンドライン引数を必要とするPythonファイルをデバッグする際 (F5)、Pythonファイルに渡したい引数を入力するためのプロンプトが表示されるようになりました。

引数を入力した後、Enterを押すとデバッガーが起動し、コードをステップ実行できます。

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

Python拡張機能API用のnpmパッケージ

Python拡張機能は、他の拡張機能作成者がPython拡張機能APIにアクセスし、変更を追跡しやすくするためのnpmパッケージを提供するようになりました。ユーザーのマシンで利用可能なPython環境を操作するには、@vscode/python-extension npmモジュールを確認してください。

Python拡張機能用のDev Container

Microsoft公式のNode.jsイメージを含む、Python拡張機能用のDev Containerが利用できるようになりました。このカスタムDev Containerを使用すると、ユーザーはPython拡張機能のリポジトリGitHub Codespaceで開くことができ、インストール不要でPython拡張機能の開発とテストにすぐに取り掛かることができます。Pythonバージョン3.7、3.8、3.9、3.10、3.11がプレインストールされているため、ユーザーはpyenvを使用してPythonバージョンを簡単に切り替えることができます。

Jupyter

Codespace上のJupyterサーバーに接続

github.devでJupyterノートブックを操作する際、カーネルピッカーを通じてGitHub Codespaceインスタンスで実行されているJupyterサーバーに接続できるようになりました。

未コミットの変更を伴う「Continue On」

ノートブックツールバーのContinue Onボタンを選択することで、基となるCodespaceに切り替えることができ、ワークスペース内の未コミットの変更はCodespaceに引き継がれます。

GitHubプルリクエストとIssue

GitHub Pull Requests and Issues拡張機能の開発がさらに進みました。これにより、プルリクエストやIssueの操作、作成、管理が可能になります。今回のイテレーションでは、作成ビューをよりクリーンで使いやすくすることに重点を置きました。

作成ビューの改善点には以下が含まれます。

  • このビューは、常にデフォルトブランチを使用するのではなく、PRに最適なベースブランチを検出するよう試みます。
  • 作成ビューから、レビュー担当者、担当者、ラベル、マイルストーンをPRに追加できます。
  • デフォルトでは、最後に選択した「作成オプション」(例: ドラフトまたは自動マージ)が記憶されます。
  • ビューのパフォーマンスが大幅に向上しました。
  • ブランチを公開する前に差分を表示できます。
  • ブランチが公開されると、コミットも表示できるようになります(未公開のブランチについては近日公開予定です)。

GitHub Pull Request and Issues extension Create view

拡張機能の0.70.0リリース版の変更ログを確認して、その他のハイライトについて学んでください。

GitHub認証

サインアウト時のGitHub OAuthトークンの取り消し

以前は、VS CodeでGitHubアカウントからサインアウトしても、OAuthトークンはシークレットストレージから削除されるだけでした。トークンは依然として有効であり、GitHubのAPIにリクエストを行うことができました。トークン管理のセキュリティを向上させるため、サインアウト後にトークンが無効になるように、バックエンドでトークンを削除するようになりました。

拡張機能作成

IOpenSettingsActionOptionsにrevealSettingとfocusSearchが追加されました

拡張機能は、IOpenSettingsActionOptions引数を受け入れるworkbench.action.openSettingsJsonのようなコマンドに、revealSettingオブジェクトとfocusSearchブール値を渡すことができるようになりました。

例えば、以下のコマンドは

vscode.commands.executeCommand('workbench.action.openSettingsJson', {
  revealSetting: { key: 'editor.renderWhitespace' }
});

ユーザー設定のJSONファイルを開き、editor.renderWhitespace設定が存在すればそれを表示します。

新しいTestController.invalidateTestResultsメソッド

テスト拡張機能は、新しいメソッドTestController.invalidateTestResultsを呼び出すことで、1つまたは複数のテストの結果がもはや適用されない可能性があることをユーザーに通知できます。たとえば、拡張機能は次のようなことを行うことができます

onFileChange(uri => {
  // invalidate tests in a file when a file changes:
  testController.invalidateTestResults(getTestsInFile(uri));
});
onConfigurationChange(() => {
  // invalidate results for all tests:
  testController.invalidateTestResults();
});

ネットワークプロキシ用のKerberos認証

Node.jsのhttpsモジュールを使用する拡張機能は、Kerberos認証を必要とするネットワークプロキシを使用できるようになりました。ローカルマシンにKerberosが設定されている必要がありますが、拡張機能はこの機能を使用するために何もする必要はありません。

自動的に選択されたサービスプリンシパル名が機能しない場合、ユーザーはhttp.proxyKerberosServicePrincipal設定を使用してそれを指定できます。

Kerberos Service Principal setting

QuickPickItemのアイコンが確定しました

QuickPickItem内のアイコン用APIが確定しました。これで、iconPathプロパティを使用してQuickPickItemにアイコンを表示できます。

A quick pick with GitHub avatars as the item icons

エンジニアリング

名前マングリングでVS Codeを縮小

最近のエンジニアリング努力により、VS Codeが出荷するJavaScriptのサイズが20%削減されました。名前マングリングによるVS Codeの縮小化というブログ記事では、VS CodeのエンジニアであるMatt BiernerJohannes Riekenが、コードサイズを最適化するために識別子名マングリングをどのように研究し、TypeScriptを使用した効果的な解決策を考案したかについて学ぶことができます。

ptyホストのさらなる改善

先月のptyホストの改善に引き続き、以下の改善が行われました。

  • パフォーマンス
    • ptyホストは必要なときにのみ起動するようになったため、ターミナルを開かないユーザーは50〜100MB程度の容量を節約できます。
    • ターミナル再接続のさらなる並列化により、ターミナルの初期化時間を短縮しました。
    • ターミナル出力メッセージがバッファリングされるようになり、ptyホストとターミナルをホストするウィンドウ間のトラフィックを削減します。
  • 診断
    • トレースログレベルでは、各プロセス間の遅延統計がログに記録されます。
    • ウィンドウIDは、ターミナル出力チャネルのすべてのログに記録されます。
    • PtyホストRPCログは、例外の結果として失敗した応答をログに記録するようになりました。

注目すべき修正点

  • 133542 誤ったターミナルに再接続された
  • 168021 JavaScriptデバッガーでのオブジェクト補完の改善
  • 184894 ターミナルのスクロールバーをドラッグできない

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-extension-samplesへの貢献

vscode-hexeditorへの貢献

  • @lorsanta
    • fix: Homeキーを押したときに一番上までスクロール PR #448
    • Fix: タブグループ切り替え時に選択数が更新される。 PR #449

vscode-js-debugへの貢献者

vscode-pull-request-githubへの貢献者

vscode-vsceへのコントリビューション

inno-updaterへの貢献

language-server-protocolへの貢献者

monaco-editorへのコントリビューション