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)) コマンドを使用すると、スクリーンリーダーのユーザーはコンテンツを文字ごと、行ごとに検査できます。前回は、エディターホバーとチャットパネルの応答にアクセシブルビューを追加しました。

通知、インラインチャットの応答、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) コマンドを使用してください。

ワークベンチ

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

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

エディター

markdown.editor.pasteUrlAsFormattedLink設定に、smartという新しいオプションが追加されました。smart貼り付け機能は、自動Markdownリンクフォーマットを望まないテキストに貼り付ける際に検出できます。smart貼り付けで無視される状況には、Markdownリンク内への貼り付け、別のMarkdownリンクの上への貼り付け、コードブロック内への貼り付けなどがあります。

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

非同期トークン化の展開

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

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

差分エディター

今回のイテレーションでは、新しい差分エディターの開発を継続し、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を開いたときに、組み込み拡張機能を最新バージョンに更新するための「再読み込みが必要」通知が表示されなくなることを意味します。

リモート開発

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

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

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

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。

拡張機能への貢献

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検出

新しいテストアーキテクチャの展開の一環として、Test Explorerパネルがエラー耐性のあるpytest検出をサポートするようになりました。検出中にpytestによって処理可能なエラー(たとえば、不明なインポートからのエラー)がスローされた場合でも、エラーのあるファイル以外のすべてのテストが引き続き検出されます。この機能は、まだ実験段階にある新しいテストの書き換えでのみ利用できます。この書き換えは現在、Insidersの100%とStableユーザーの25%でアクティブですが、まもなくすべてのユーザーに適用されます。それまでは、pythonTestAdapter設定で有効または無効にすることができます。

引数付きファイル実行用のデバッガー設定

新しいDebugpy拡張機能は、引数付きPythonファイルlaunch.json設定を提供するようになりました。これは、Pythonファイルを実行するたびにコードやデバッガー設定を変更することなく、異なる入力値を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拡張機能の開発コンテナー

Python拡張機能に、Microsoft公式のNode.jsイメージを使用した開発コンテナーが追加されました。このカスタム開発コンテナーを使用すると、ユーザーは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サーバーに接続できるようになりました。

未コミットの変更で続行

ノートブックのツールバーにある続行ボタンを選択することで、基になるコードスペースに切り替えることができ、ワークスペースの未コミットの変更はコードスペースに持ち込まれます。

GitHubプルリクエストとイシュー

プルリクエストとイシューの作業、作成、管理を可能にするGitHubプルリクエストとイシュー拡張機能は、さらに進展しました。今回のイテレーションでは、作成ビューの更新に焦点を当て、よりクリーンで使いやすいものにしました。

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

  • ビューは、常にデフォルトブランチを使用する代わりに、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認証

https Node.jsモジュールを使用する拡張機能は、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: ホームキーを押したときに一番上までスクロールする PR #448
    • Fix: タブグループを切り替えるときに選択カウントが更新される。 PR #449

vscode-js-debugへの貢献者

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

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

inno-updaterへの貢献

language-server-protocolへの貢献者

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