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

2024年1月 (バージョン 1.86)

更新 1.86.2: この更新プログラムでは、これらの問題が解決されています。

更新 1.86.1: この更新プログラムでは、これらの問題が解決されています。

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

Visual Studio Code 2024年1月リリースへようこそ。このバージョンには多くの更新があり、皆様に気に入っていただけることを願っています。主なハイライトは次のとおりです。

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

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

アクセシビリティ

アラート

スクリーンリーダーおよび点字ユーザーは、デバッグブレークポイントにヒットしたとき、現在の行にエラーがある場合など、より多くの設定可能なアラートを利用できるようになりました。これらはaccessibility.alertで始まる設定、またはヘルプ: アラートを一覧表示コマンドを使用して探索および設定できます。

"Hey Code" 音声コマンドを使用する

新しいaccessibility.voice.keywordActivation設定により、VS Code で「Hey Code」音声コマンドをリッスンして Copilot Chat との音声セッションを開始できます。音声認識はローカルマシンで処理され、サーバーには送信されません。

利用可能なオプション:

  • chatInView: チャットビューから音声チャットを開始
  • quickChat: クイックチャットコントロールからクイック音声チャットを開始
  • inlineChat: エディターのインラインチャットから音声チャットを開始
  • chatInContext: フォーカスがエディターにある場合はインラインチャットから音声を開始、それ以外の場合はチャットビューから音声チャットを開始

次の例は、inlineChatオプションが構成された「Hey Code」を示しています

ステータスバーの小さなマイクアイコンは、VS Code が「Hey Code」を認識するためにマイクを使用しているときに表示されます。

音声チャットセッションが完了すると、VS Code は再び「Hey Code」をリッスンして再開します。

この新機能を使用するには、以下の拡張機能が必要です

注: 音声認識はローカルマシンで実行され、サーバーには送信されません。

ワークベンチ

補助ウィンドウの復元

このリリースでは、メインウィンドウに関連付けられたすべての開いているフローティングウィンドウが、アプリケーションの再起動時に復元されます。これには、開いているエディター、および補助ウィンドウのサイズと位置が含まれます。

ツリービューでの Sticky Scroll

エディターでの Sticky Scroll の成功を基に、この機能をすべてのツリービューに拡張し、ユーザーがプロジェクトツリーをより簡単にナビゲートできるようにしました。ツリービューの Sticky Scroll は、workbench.tree.enableStickyScroll設定で有効または無効にできます。

Sticky Scroll がスペースを取りすぎないように、ビューの高さの最大40%に制限されています。さらに、ユーザーはworkbench.tree.stickyScrollMaxItemCount(デフォルトでは7に設定)を構成することで、スティッキー要素の最大数をカスタマイズできます。表示できる数よりも多くのスティッキー要素がある場合、ツリービューがこの機能をサポートしていれば、Sticky Scroll は最後のスティッキー要素をまとめて統合します。

ツリーのナビゲーション体験を向上させるために、スティッキー要素を選択すると、ツリー内のその要素に直接ジャンプできます。また、親要素のシェブロンを押すと、すべての子要素を非表示にできます。さらに、Sticky Scroll が有効になっている場合、チェックボックスやアクション項目へのアクセスが容易になります。

ウィンドウごとのズームレベルの設定

新しい設定window.zoomPerWindow (デフォルトで有効) により、ズームコマンド (拡大縮小ズームのリセット) をアクティブなウィンドウのみに適用し、開いているすべてのウィンドウには適用しないように構成できます。以前は、これらのコマンドを使用すると、開いているすべてのウィンドウに適用されるだけでなく、window.zoomLevel設定も更新されました。

これらのコマンドの使用は、たとえばプレゼンテーションを行う際など、よりアドホックなジェスチャーであると考えており、そのため、それらが呼び出されたウィンドウにのみ適用されるべきです。

この例からわかるように、アクティブなウィンドウのズームレベルのみが変更され、他のウィンドウは変更されません

ウィンドウのカスタムズームレベルがwindow.zoomLevel設定値と一致しない場合、ステータスバーにズームレベルインジケーターが表示されます。ステータスバーのインジケーターを選択すると、ズームレベルの変更、ズームレベルのリセット、または関連設定への迅速な移動のためのコントロールが見つかります。

Zoom indicator and controls in the Status Bar.

カスタムズームレベルのウィンドウは、再起動後もワークスペースの変更後もそのズームレベルを保持します。

注: 以前のズームレベルの動作に戻すには、window.zoomPerWindowfalseに構成してください。

より強力で柔軟な自動保存オプション

VS Code は長らく自動保存オプションを提供してきました。このリリースでは、この機能をさらに強力にしました。

リソースまたは言語ごとの自動保存の設定

すべての自動保存設定をフォルダーまたは言語ごとに構成できるようになり、特定の言語またはフォルダーに対してのみ自動保存を選択的に有効にできます。

以下の例では、設定は次のように構成されています

{
  "[markdown]": {
    "files.autoSave": "afterDelay"
  }
}

ご覧のとおり、編集中の Markdown ファイルはすぐに保存されますが、TypeScript ファイルは未保存のままです。

エラー時の自動保存を無効にする

新しいfiles.autoSaveWhenNoErrors設定により、自動保存が通常エディターを保存する際にファイル内にエラーマーカーがある場合、自動保存を無効にできます。

これは、ファイル変更を監視する外部ツールがあり、それらのツールがエラーを含む変更されたファイルに対して動作するのを避けたい場合に役立ちます。

ワークスペースファイルのみの自動保存

最後に、自動保存をワークスペース内のファイルのみに制限する新しい設定files.autoSaveWorkspaceFilesOnlyが追加されました。

拡張機能ごとの通知無効化を許可

拡張機能からの通知を無効にするための、よりきめ細かな制御を提供します。通知トーストから、拡張機能の通知を無効にできます

Turn off notifications for an extension.

通知センターには、通知をトリガーしたすべての拡張機能の通知有効化を管理するための一元的な場所があります

Manage notifications for extensions.

この新機能は、すべての通知をグローバルに無効にする既存の「おやすみモード」を補完します。グローバルスイッチと同様に、エラー通知は常に表示され、無効にすることはできません。

左右の差分エディターのスワップを許可

2つのファイルを比較する際 (例えばファイルエクスプローラーから)、差分エディターの左右を入れ替える新しいアクションが表示されます。

注: 編集可能な2つのファイルを比較すると、どちらの側でも変更を行うことができます。

コマンドラインから標準入力 (stdin) を読み取る際に--waitを強制しない

ターミナルを使用する際、プロセスの出力を直接 VS Code に渡してエディターとして開くことができます。例えば、

  • Linux または macOS でps aux | grep code | code -
  • Windows でecho Hello World | code -

これまでは、これは--waitフラグも意味していました。つまり、エディターウィンドウを閉じるか、VS Code を完全に終了するまでターミナルプロンプトに戻れないことを意味していました。このマイルストーンでは、標準入力からの読み取り時に--waitを強制しなくなったため、すぐにターミナルプロンプトに戻ることができます。

注: 以前の動作に戻すには、コマンドラインの呼び出しに--waitを追加するだけです。

ネイティブタイトルバーでのカスタムタイトルバーのサポート

window.customTitleBarVisibility設定を導入しました。これにより、ネイティブタイトルバーが使用されている場合でもカスタムタイトルバーを表示できます。これは、ネイティブタブを好む macOS ユーザーにとって特に便利です。この新しい設定により、ネイティブタイトルバーのユーザーは、次のようなカスタムタイトルバーの機能にアクセスできるようになりました。

  • コマンドセンター: カスタムタイトルバーからコマンドセンターに直接簡単にアクセスできます。
  • レイアウトコントロール: ワークスペースのレイアウトをより柔軟にカスタマイズできます。
  • アクティビティバーのカスタマイズ: アクティビティバーのアクションを上部に移動できます。
  • エディターアクションのカスタマイズ: エディターアクションをカスタムタイトルバーに再配置できます。

さらに、フルスクリーンモードで整理されたビューを好むユーザー向けに、window.customTitleBarVisibility: "windowed"オプションを使用すると、フルスクリーンモード時にカスタムタイトルバーを非表示にできます。この機能により、より集中力が高まり、邪魔の少ないコーディング環境が確保され、フルスクリーンモードでない場合でもカスタムタイトルバーの機能を使用するオプションが提供されます。

The 'Window: Custom Title Bar Visibility' setting in the Settings editor.

システムカラーテーマを強制する新しい設定

新しい設定window.systemColorThemeを使用すると、macOS のメニューやダイアログなどの VS Code のネイティブ要素に適用されるシステムカラーテーマを明示的にオーバーライドできます。この設定は以下の値をサポートしています

  • default: カラーテーマはオペレーティングシステムのものと一致します (デフォルトオプション)。
  • auto: VS Code のテーマに応じて、lightまたはdarkを選択します
  • light: lightシステムテーマを選択します
  • dark: darkシステムテーマを選択します

以下は、macOS のコンテキストメニューにこれがどのように適用されるかの例です。上部がlight、下部がdarkで表示されています

Showing both 'light' and 'dark' system theme applied to a context menu.

無題のワークスペースを承認なしで閉じられるようにする

新しい設定window.confirmSaveUntitledWorkspaceにより、無題のワークスペースがあるウィンドウを閉じる際に確認ダイアログを表示しないように設定できます。また、ダイアログに表示を無効にするチェックボックスも追加されました。window.confirmSaveUntitledWorkspace設定は、現在の動作を維持するためにデフォルトで有効になっています。

Untitled workspace confirmation dialog showing checkbox to always discard changes.

注: 無題のワークスペースについては、ドキュメントで詳しく知ることができます。

出力パネルでワードラップを切り替える

出力パネルが表示: ワードラップの切り替えコマンドを使用してワードラップの切り替えをサポートするようになりました。これは、出力パネルで長いテキスト行を表示するのに役立ちます。

新しいウィンドウで出力パネルを開く

出力パネルのパネルタイトルメニューに、出力パネルを別のウィンドウで表示するための新しいウィンドウで出力を開くアクションが追加されました。

CLI から拡張機能を更新

--update-extensions引数を使用して、コマンドラインから拡張機能を更新できるようになりました。これにより、インストールされているすべての拡張機能が最新バージョンに更新されます。

Quick Pick のホバーでカスタムホバーを使用するように変更

Quick Pick のいくつかのホバーを、ネイティブレンダリングの代わりにカスタムホバーを使用するように変更しました。これにより、よりリッチなレンダリングと製品全体での一貫性が向上します。

Quick Pick hover rendered with custom hover instead of native.

差分エディターでの複数ファイルレビュー

このリリースから、マルチ差分エディターがすべてのユーザーに対して有効になりました。マルチ差分エディターを使用すると、複数のファイルの変更を1つのスクロール可能なビューで確認できます

現在、マルチ差分エディターは、ローカルの変更、ステージングされた変更、入出力の変更、スタッシュ、およびプルリクエストからの変更をレビューするために使用できます。これは、マルチファイル差分アイコンで識別できる、さまざまな新しい変更を表示アクションを選択することで開くことができます。

ソース管理ビューから差分エディターを開くと、ファイルが変更またはステージングされるとビューが動的に更新されます。

マルチ差分エディターはまだ開発中であるため、今後のリリースでさらなる改善とバグ修正が期待されます。

GitHub Pull Requests 拡張機能の複数ファイル差分

GitHub Pull Requests and Issues拡張機能がインストールされている場合、プルリクエストを開いたときにマルチファイル差分エディターを自動的に開くように"githubPullRequests.focusedMode": "multiDiff"を設定できます。

github.dev の設定が済んでいる場合、GitHub のプルリクエスト上で.を押すと、github.dev がマルチファイル差分エディターで開かれ、変更をレビューできます。

エディター

テキスト/HTML コンテンツを貼り付け

形式を選択して貼り付け... コマンドで、クリップボードのtext/htmlコンテンツを貼り付けられるようになりました。

Using 'Paste As' to paste HTML content.

たとえば、ウェブページからコンテンツをコピーした場合、これをプレーンテキストとして貼り付ける代わりに、コンテンツの HTML を貼り付けるのに使用できます。

ソース管理

コミット入力のカスタマイズ

このマイルストーンでは、コミット入力フィールドの初期の高さを制御するために使用できる新しい設定scm.inputMinLineCountを追加しました。コミット入力フィールドの最大サイズを制御する設定は、同様の設定の命名規則に一致するようにscm.inputMaxLinesからscm.inputMaxLineCountに名前が変更されました。

ユーザーは、言語固有のエディター設定を使用して、コミット入力フィールドをさらにカスタマイズできるようになりました。言語固有のエディター設定は、エディターのルールを定義したり、ワードラップを無効にしたりするために使用できます。

"[scminput]": {
    "editor.rulers": [
      50,
      72
    ],
    "editor.wordWrap": "off"
  }

ソース管理リポジトリビューの改善

多数のリポジトリを持つワークスペースをより適切に管理するために、リポジトリのコンテキストメニューに新しいコマンドその他のリポジトリを閉じるを追加しました。また、リポジトリを閉じるその他のリポジトリを閉じるの両コマンドに複数選択のサポートを追加したため、ユーザーは複数のリポジトリを一度に閉じたり、いくつかのリポジトリを除いてすべてのリポジトリを閉じたりできます。

ソース管理リポジトリビューは、拡張機能によって提供されるアクションで混雑する可能性があります。これを解消するため、アクションを右クリックして非表示を選択することで、提供されたアクションを非表示にする機能を追加しました。非表示のアクションは...メニューに移動します。チェックアウト同期を除くすべてのアクションを非表示にできます。

受信/送信変更の改善

ソース管理ビューの受信/送信変更セクションの磨き上げを続けています。このマイルストーンでは、現在のブランチに追跡リモートブランチがある場合にのみ受信変更ノードが表示されるように変更しました。

受信変更ノードにフェッチプルアクションを、送信変更ノードにプッシュアクションを追加しました。

各個別のコミットと、マルチファイル差分エディターを活用したすべての受信/送信変更を表示するアクションを追加しました。

ユーザーは新しい設定scm.showChangesSummaryを使用して、すべての変更エントリを非表示にできるようになりました。

タグのマージ機能

タグをマージする機能を追加することで、長年の機能リクエストに対応しました。コマンドパレットに新しいコマンドGit: マージ...が追加され、これはGit: ブランチをマージ...コマンドを置き換えます。Git: マージ...コマンドを呼び出すと、ブランチとタグの両方をリストするクイックピックコントロールが表示されます。

スタッシュ表示コマンド

新しいコマンドGit: スタッシュを表示...を追加しました。これにより、ユーザーはリポジトリの任意のスタッシュをマルチファイル差分エディターで表示できます。Git スタッシュを表示している場合、エディターのタイトルメニューにはスタッシュを適用/ポップまたはドロップするアクションが含まれます。

SSH キーを使用したコミット署名

このマイルストーンでは、パスフレーズ付き SSH キーを使用してコミットに署名する機能を追加しました。SSH キーでコミットに署名する際、VS Code は画面上部にクイックピックコントロールを表示してパスフレーズを要求します。VS Code はパスフレーズをキャッシュせず、コミットに署名するたびにパスフレーズを要求します。

ノートブック

フローティングウィンドウのサポート

ノートブックエディターがフローティングウィンドウで開けるようになりました。ノートブックタブをメインウィンドウの外にドラッグして新しいウィンドウで開くか、表示: エディターを新しいウィンドウに移動コマンドを使用できます。

組み込みの変数ビュー

拡張機能が提供する場合、ノートブックカーネルからの変数を表示するために使用できる実験的な変数ビューを、実行およびデバッグビューに追加しました。この機能はこの設定で有効にできます

"notebook.experimental.variablesView": true

ノートブックの Sticky Scroll

ノートブックエディターの Sticky Scroll 機能は、ワークベンチの他の部分とのスタイルを合わせるために大幅に磨き上げられ、各 Markdown 要素に折りたたみコントロールが追加されました。

ターミナル

選択範囲の下に背景を表示

GPU アクセラレーションが有効な場合、デフォルト以外の背景色のセルは、通常の選択色「の下」にレンダリングされるようになりました。

Cell background colors in the terminal are now retained, even when selected.

マウスホイールでターミナルをズーム

この設定を有効にすると、Ctrlキーを押しながらマウスホイールでターミナルを拡大縮小できるようになりました。

"terminal.integrated.mouseWheelZoom": true

複数行貼り付け警告の改善

以前のバージョンでは、terminal.integrated.enableMultiLinePasteWarningtrue (デフォルト) またはfalseのいずれかを受け入れていました。trueがアクティブな場合、ブラケットペーストモードが有効になっている場合、または行が\n文字で終わる場合を除き、常に警告を表示していました。この設定は、以下のオプションを持つ文字列を受け入れるようになりました

  • auto: 以前の true の動作
  • always: 常に警告を表示
  • never: 警告を表示しない

さらに、ダイアログに新しいボタンが追加され、文字列を単一行として貼り付けることができるようになりました。これにより、すべての\rおよび\n文字が削除されます。

ファイルプロトコル URI (file://) は、他のほとんどのリンクと同様に、末尾に行番号と列番号の拡張をサポートするようになりました。新しい#<line>形式もサポートされています。

ターミナル音声コマンド

新しいターミナル: ターミナル音声を開始およびターミナル: ターミナル音声を停止コマンドにより、ターミナルで音声テキスト変換セッションを有効にできます。

この新機能を使用するには、VS Code Speech 拡張機能をインストールしてください。

タスク

パス区切り変数へのショートハンド

新しい${/}変数は、既存の${pathSeparator}変数のショートハンドとして使用できます。

デバッグ

トリガーされたブレークポイント

別のブレークポイントにヒットすると自動的に有効になるブレークポイントを設定できるようになりました。たとえば、特定の前提条件の後でのみ発生するコードの失敗ケースを診断する際に役立ちます。トリガーされたブレークポイントはすべての言語で機能し、条件付きブレークポイントもトリガーとして使用できます。

トリガーされたブレークポイントは、グリフマージンを右クリックし、トリガーされたブレークポイントを追加...を選択し、このブレークポイントを有効にする他のブレークポイントを選択することで設定できます。

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

セッション終了時に読み取り専用ファイルを閉じる

デバッガーにアタッチされている場合、ディスク上に存在しない内部または仮想のソースファイルが読み取り専用で開かれることがあります。新しい設定debug.closeReadonlyTabsOnEndがあり、セッション終了時にデバッグセッションから開かれた読み取り専用ファイルを VS Code が自動的に閉じるようにします。

テスト

テストを実行するその他の方法

テストデコレーションをクリックしながらAltキーを押し続けると、利用可能な場合、そのテストがデバッグモードで実行されるようになりました。

エクスプローラービューにコンテキストメニューアクションが追加され、ファイルまたはフォルダー内で宣言されたすべてのテストを実行するために使用できます。

拡張機能作者向けのTestRunProfile.isDefault/onDidChangeDefault API が最終化されました

以前は、TestRunProfile.isDefaultはテスト実行プロファイルの初期デフォルト状態のみを制御し、それ以降変更または読み取られることはありませんでした。

このリリースでは、ユーザーが選択したプロファイルを変更すると、TestRunProfile.isDefaultプロパティに反映され、対応するTestRunProfile.onDidChangeDefaultイベントが発行されます。同様に、拡張機能がisDefaultを変更すると、UI の選択されたプロファイルが更新されます。

言語

コピーしたリンクを Markdown リンクに変換したいですか?テキストが選択された状態で Markdown ファイルに URL を貼り付けると、VS Code が自動的に Markdown リンクを挿入するようになりました

この機能はmarkdown.editor.pasteUrlAsFormattedLink.enabled設定によって制御されます。この動作をカスタマイズするために変更できます

  • smartWithSelection — デフォルト。これは、テキストが選択されており、コードブロックなどの特殊な要素内にない場合にこの機能を有効にします。
  • smart — smartWithSelectionと同じですが、選択を必要としません。
  • always — 常に URL を Markdown リンクとして貼り付けます。
  • never — Markdown リンクとしての貼り付けを無効にします。

値を貼り付けた後でも、貼り付けコントロールを使用して別の方法でコンテンツを貼り付けるようにいつでも切り替えることができます。

Markdown のオーディオ/ビデオ スニペットの設定

新しいmarkdown.editor.filePaste.audioSnippetmarkdown.editor.filePaste.videoSnippet設定を使用すると、ドラッグ&ドロップまたは貼り付け時にオーディオファイルとビデオファイルを Markdown に挿入する方法をカスタマイズできます。スニペットでは以下の変数を使用できます

  • ${src} — オーディオ/ビデオファイルの解決されたパス。
  • ${title} — オーディオ/ビデオに使用されるタイトル。この変数にはスニペットプレースホルダーが自動的に作成されます。

新しい Less 文法

以前の Less 文法はアーカイブされ、VS Code は Less の構文ハイライトにBetter-Lessの文法を使用するようになりました。

新しい Go 文法

Go の構文ハイライト文法が、以前の文法よりも活発にメンテナンスされているGo Syntaxを使用するように変更されました。

リモート開発

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

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

  • ユーザーデータフォルダーにdevcontainer.jsonを作成します。
  • Dockerfile を使用する際に、devcontainer.jsonでビルドオプションを指定します。

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

拡張機能への貢献

GitHub Copilot

editor.inlineSuggest.fontFamily設定を使用することで、インラインサジェストのフォントファミリーを変更できるようになりました。

保存前のインラインチャットの確認

私たちは AI の責任ある使用、特にソースコードに関してこれを重視しています。そのため、Copilot によって生成されたコードを保存する前にユーザーに確認を求める新しい設定を追加しました。この設定inlineChat.acceptedOrDiscardBeforeSaveはデフォルトで有効になっています。

Inline chat save consent message. テーマ: GitHub Light Default (vscode.devでプレビュー)

この設定が有効な場合、ファイルの保存は、ユーザーが保留中のインラインチャットセッションを承諾または破棄するまで待機します。これは自動保存が有効な場合にも適用され、インラインチャットが終了するまで一時的に無効になります。

話すためのホールドモード

少し前に、VS Code に音声サポートを追加しました。VS Code Speech 拡張機能をインストールすると、チャット入力フィールドに音声テキスト変換サポートが追加されます。

インラインチャットに「話すためのホールド」を追加しました。これは次のように機能します。

  • Cmd+I または Ctrl+I を押してインラインチャットをトリガーします。
  • キーを押し続けると、音声録音が自動的に開始されることに注意してください。
  • キーを離して録音を停止し、リクエストを Copilot に送信します。

テーマ: GitHub Light Default (vscode.devでプレビュー)

この新しいモードには、デフォルトで有効になっている設定も付属していますが、inlineChat.holdToSpeechで無効にできます。

プレビュー: インラインチャット クイックボイス

「話すためのホールド」に加えて、この機能のより軽量な代替 UI を実験しています。Cmd+K または Ctrl+K を押してからIを押し続けることでクイックボイスをアクティブにします。Iを押し続けている間、より軽量な録音 UI が表示されます。キーを離すと、リクエストが送信されます。

Quick Voice showing only a microphone indicator and the text of the recorded voice message.

インラインチャット ライブモード

前回のリリースには、live3という新しい実験的なインラインチャットモードがありました。これは、よりスムーズなストリーミング体験と、より理解しやすい差分ビューを提供します。これは今回正式版となり、以前のliveモードを置き換えました。デフォルトは依然としてlivePreviewですが、ユーザーにはliveを試すことをお勧めします。また、どのモードが最適かを学ぶための実験も実施しています。

AI 修正の電球アイコン (きらめき)

Copilot を呼び出すには、エディターの電球アイコンも使用できます。選択を行うか、カーソルを新しい行に移動し、電球を選択してから、Copilot で変更またはCopilot で生成を選択します。

他にコードアクションがない場合、電球はきらめきとして表示され、直接インラインチャットが開きます。

Inline chat opened from the sparkle.

#file コンテキスト変数

チャット入力で#と入力することで既に使用できるいくつかのコンテキスト変数があり、チャットプロンプトのコンテキストとしてワークスペース内の指定されたファイルを含めることができるように#fileを追加しました。入力のサジェストコントロールから#fileを選択し、表示されるクイックピックからファイルを選択します。

可能な場合、ファイルの全コンテンツが含まれます。コンテキストウィンドウに収まらないほど大きい場合は、実装なしで関数とその説明を含むファイルの概要が含まれます。概要も大きすぎる場合、そのファイルはプロンプトの一部になりません。

File context example in the Copilot Chat View.

チャットのデフォルトコンテキスト

以前は、デフォルトでアクティブなコードエディターから2種類のコンテキストをチャットリクエストに含めていました

  1. テキスト選択がある場合、その選択が含まれます
  2. 選択がない場合、アクティブなエディターの表示領域内のコード範囲が含まれます

2番目のタイプは、一般的な質問をしたい場合でも、LLM がコンテキストとして含まれたエディター内のコードに関する質問として解釈するため、混乱を招く可能性があることがわかりました。デフォルトではビューポート内のコードを含めず、選択されたコードのみを含める実験を行っています。

もちろん、エディターで見えるコードについて質問したい場合が多いので、新しいコンテキスト変数#editorを追加しました。

Editor context example in the Copilot Chat View.

「すべてのワークスペースチャットをクリア」コマンドを追加

+ボタンを使用して新しいチャットを開始するたびに、以前のチャットはワークスペースチャット履歴に保存され、チャットビューのヘッダーにある時計アイコンを使用してアクセスできます。利便性を考慮して、過去のチャット履歴をすべてクリアするすべてのワークスペースチャットをクリアコマンドを追加しました。

コミットメッセージの言語

Git コミットメッセージを生成するコードは、特定の言語でコミットメッセージを生成するためにgithub.copilot.chat.localeOverride設定を使用するようになりました。

プライベートリポジトリに対する追加権限の要求

プライベートリポジトリの追加のワークスペース検索機能を有効にするには、追加の権限が必要です。これらの権限がまだないことを検出した場合、起動時にそれらを要求します。一度許可されると、セッションは将来のために安全に保存されます。

Modal window asking for additional authentication for a private repository.

Python

Python Debugger 拡張機能がデフォルトでインストールされるように

The Python Debugger 拡張機能が、Python 拡張機能とともにデフォルトでインストールされるようになりました。

Python Debugger 拡張機能は、互換性の問題を防止するためにデバッグ機能を主要な Python 拡張機能から分離することを目的としています。これにより、Python 拡張機能が古い Python バージョン (例えば Python 3.7) のサポートを終了しても、Python 拡張機能をダウングレードすることなく、これらのバージョンでプロジェクトのデバッグを続行できます。また、プラットフォーム固有のビルドを提供することで、特定のオペレーティングシステムに関連するコンポーネントのみを受け取ることが保証され、ダウンロード時間と不要なオーバーヘッドが削減されます。

この新しい拡張機能は、主要な Python 拡張機能で利用可能なすべての機能を複製し、さらに多くの機能を提供します。

新しい Python Debugger 拡張機能を使用していることを確認するには、launch.json構成ファイルで"type": "python""type": "debugpy"に置き換えてください。将来的には、Python 拡張機能はデバッグサポートを提供しなくなり、すべてのデバッグ機能を Python Debugger 拡張機能に移行します。

Python インタープリタークイックピックでの環境作成オプション

Python インタープリターのクイックピックから Python 環境をより便利に作成できるようになりました。Python: インタープリターを選択コマンドを実行し、環境を作成オプションを選択して、プロジェクト用の新しい仮想環境を作成します。

Create Environment option in the Python interpreter quick pick. テーマ: Catppuccin Mocha (vscode.devでプレビュー)

ワークスペース conda 環境の表示を改善

Python インタープリターのクイックピックに、ワークスペース内の conda 環境の名前が表示されるようになり、識別しやすくなりました。

Workspace conda environment names displayed in the Python interpreter Quick Pick.

多段階 pytest クラスのサポート

多段階 pytest クラスを使用する場合、テストエクスプローラーにトップレベルのクラスが表示されるようになりました。以前は、下位レベルのクラスのみが表示されていました。

Multi-level pytest classes displayed in the Test Explorer. テーマ: Catppuccin Mocha (vscode.devでプレビュー)

Jupyter

拡張機能作者向け Jupyter Kernel 実行 API が最終化されました

Jupyter 拡張機能の Jupyter カーネルに対してコードを実行するための API が最終化されました。拡張機能はこの API を使用してカーネルに対してコードを実行できます。

API の使用例は、Jupyter Kernel Execution Sample で確認できます。

npm パッケージ@vscode/jupyter-extensionには、すべての TypeScript 型定義が含まれています。

拡張機能が Jupyter カーネルにアクセスしようとすると、ユーザーはカーネルへのアクセスを許可または取り消すようプロンプトが表示されます。Jupyter カーネルへのアクセスは、拡張機能ごとにユーザーによって付与されます。つまり、ユーザーは拡張機能Aにアクセスを許可し、拡張機能Bへのアクセスを取り消すことができます。

ユーザーは、Jupyter: Jupyter カーネルへのアクセスを管理コマンドを通じて、拡張機能ごとに Jupyter カーネルへのアクセスを管理 (許可/取り消し) できます。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能では、プルリクエストや Issue の作業、作成、管理ができるようになり、さらに進展がありました。新機能には以下が含まれます。

  • 現在チェックアウトされている PR の競合を解決します。
  • Issue クエリ用のgroupByプロパティ。
  • チェックアウトされた PR 内のパーマリンクをクリックすると、エディターでファイルが開きます。
  • コメントのリアクションにホバーすると、誰がリアクションしたかを表示します。
  • "githubPullRequests.focusedMode": "multiDiff"を設定すると、チェックアウト時に PR 内のすべてのファイルがマルチ差分エディターで開かれます。

その他のハイライトについては、拡張機能の0.80.0 リリースの変更履歴を確認してください。

プレビュー機能

TypeScript 5.4 ベータサポート

TypeScript 5.4 のベータリリースをサポートするようになりました。このリリースの詳細については、TypeScript 5.4 ベータブログ投稿およびイテレーション計画を確認してください。主なハイライトは次のとおりです。

  • AI 駆動型リファクタリングの初期作業。
  • ライブラリおよび型作者が誤った型推論を停止するのに役立つ新しいNoInfer intrinsic
  • 型の絞り込みと型チェックの改善。

TypeScript 5.4 ベータを使い始めるには、TypeScript Nightly 拡張機能をインストールするだけです。フィードバックを共有し、TypeScript 5.4 でバグに遭遇した場合はお知らせください。

クイック検索の改善

バージョン 1.82 では、ピッカーから検索できるクイックアクセス テキスト検索 ("クイック検索")を導入しました。🔎

クイック検索には以下の機能があります

  • アクティブなピックでのエディタープレビュー。閲覧中にエディターのコンテキストで結果を確認できます。
  • クイック検索から検索ビューへのナビゲーションが容易に。入力の横のボタンまたは結果を選択して、検索ビューに結果を転送できます。

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

提案されたAPI

すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新の@vscode/dtsを使用し、npx @vscode/dts devを実行します。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
  3. これで提案に対してプログラミングできます。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

テストカバレッジ API

このマイルストーンで、テストカバレッジの API とエディター内エクスペリエンスが機能的に完成しました。VS Code 1.87 リリースでの最終化が予測される前に、拡張機能の作者にそれらを試してフィードバックを提供するよう推奨します。

API はここに含めるには長すぎますが、かなり分かりやすいものと考えており、issue #123713でのご提案をお待ちしております。

チャットエージェント API

拡張機能の作者が独自のチャットエージェントを VS Code のチャットビューに提供できるようにする API の開発に取り組んできました。API にいくつかの変更を加えました。以下を含みます:

  • チャットエージェントに渡される履歴コンテキストは、特定のメッセージによってどのチャットエージェントとコマンドが呼び出されたか、履歴メッセージ内の変数の値、および結果が何であったかを適切に表すようになりました。
  • ChatAgentTaskは削除され、同じシナリオをカバーするためにレスポンスストリームの途中でChatProgressMessageを使用できるようになりました。
  • すべての「slashCommand」関連の用語は「subCommand」に名前が変更されました。

この API を試してみたい場合は、サンプルチャットエージェント拡張機能から始め、API の更新についてはissue #199908を購読してください。

コードアクションハイライト API

メソッドの抽出やファイルへの移動などのリファクタリングの場合、アクションがどのコードに適用されるかが常に明確であるとは限りません。これは、ユーザーの現在の選択範囲をインテリジェントに拡張しようとする TypeScript のような言語で特に当てはまります。

この API により、コードアクションは適用される可能性のある1つまたは複数の範囲 (Range[]) を提供できます。ユーザーがコードアクションリストにホバーしたり矢印で移動したりすると、その範囲が強調表示されます。

  • リファクタリングの場合、この範囲は、リファクタリングの影響を受ける現在のファイル内のコードになります。
  • クイックフィックスの場合、関連する診断をハイライトできます。これは、editor.codeActionWidget.includeNearbyQuickFixesから呼び出されるクイックフィックスですでに行われています。

Issue Reporter API

提案された API への小さな追加により、IssueUriRequestHandlerIssueDataProviderの両方を一緒に使用できるようになりました。

また、vscode.commands.openIssueReporterコマンドにも改善が加えられ、追加の拡張機能データを提供したり、GitHub Issue の送信先 URL を変更したりできるようになりました。

API およびopenIssueReporterコマンドの更新または変更については、issue #197863を購読してください。

コメントリアクションリアクター API

CommentReactionインターフェースに新しいreactorsプロパティが追加され、拡張機能が誰がコメントにリアクションしたかを示すことができるようになりました。これらのreactorsは現在、コメントリアクションのホバーに表示されます。

この API の進捗状況を追跡するには、issue #201131を参照してください。

最終化された API

新しいworkspace.saveおよびworkspace.saveAs API

新しい最終化された API workspace.saveworkspace.saveAsにより、拡張機能はエディターの保存フローをトリガーできるようになりました。これは、そのリソースに保存するか、ユーザーにリソースの提供を求めるか、どちらかです。

保存のためのすべてのメソッドは、結果のUriを返します。操作がキャンセルされた場合はundefinedを返します。無題のファイルは、パスが既に関連付けられている場合を除き、常にユーザーに保存先を尋ねます。

FileSystemProvider API の読み取り専用メッセージ

registerFileSystemProviderFileSystemProviderを登録する際、optionsを設定してファイルシステム全体を読み取り専用としてマークできます。今回、isReadonlyオプションがMarkdownStringに設定されている場合、ユーザーがファイルシステム内のファイルを編集しようとすると、そのメッセージがエディターに表示されるようになりました。

Example of readonly message showing in the editor.

エンジニアリング

整理整頓

12月初旬に、年次の整理整頓を行いました。これにより、リポジトリ全体で1891件の Issue が純減しました。以下のチャートは、年次の整理整頓の必要性と影響をよく示しています。

Chart of issue counts over the last years

Markdown Language Service 0.4 リリース

Markdown Language Service パッケージは、VS Code の組み込み Markdown サポートを強化しています。新しい 0.4 リリースには、過去半年間で私たちが行った多くの改善がバンドルされており、他のツールやエディターも恩恵を受けることができます。主なハイライトは次のとおりです。

  • Markdown 内の HTML フラグメントに対するドキュメントリンク、参照、および名前変更を有効にします。
  • 正規表現における壊滅的なバックトラックの可能性を修正。
  • 補完時に余分なエンコーディングを追加しないようにします。
  • ワークスペースシンボル検索にファジーマッチングを使用します。
  • リンク検出/検証に関するいくつかのケースを修正。

ILocalizedStringの作成をより簡単にする新しいlocalize2関数

VS Code のコアコードベースでは、ローカライズされた文字列と英語の文字列の両方を並べてレンダリングするために、ILocalizedStringという型を使用しています。言語パックを使用している場合、コマンドパレットを開くとこれを見たことがあるかもしれません。

以前は、これらの式を次のように記述する必要がありました

const str = { value: localize('id', 'Hello World'), original: 'Hello World' };

これは次のように表現できるようになりました

const str = localize2('id', 'Hello World');

これにより、ローカリゼーションパイプラインがこれらのlocalize2の出現を認識します。

Electron 27 への更新

このマイルストーンでは、Electron 27 への更新を安定版リリースユーザーに展開しています。この更新には Chromium 118.0.5993.159 と Node.js 18.17.1 が含まれています。Insiders ビルドでセルフホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。

Linux の最小要件の更新

このマイルストーンでは、デスクトップクライアントをビルドするためのツールチェインを更新しました。このリリース以降、VS Code デスクトップは glibc 2.28 以降および glibcxx 3.4.25 以降 (Debian 10、RHEL 8、Ubuntu 20.04 など) に基づく Linux ディストリビューションとのみ互換性があります。

Linux ディストリビューションをアップグレードできない場合、推奨される代替案は当社のWeb クライアントを使用することです。デスクトップ版を使用したい場合は、VS Code リリース 1.85 をダウンロードできます。お使いのプラットフォームに応じて、そのバージョンに留まるために更新を無効にしてください。推奨されるのは、ポータブルモードでインストールを設定することです。

注目すべき修正点

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

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

vscode-hexeditorへの貢献

vscode-languageserver-nodeへの貢献者

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

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

language-server-protocolへの貢献者

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

node-jsonc-parserへの貢献