に参加して、VS Code の AI 支援開発について学びましょう。

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

アップデート 1.86.2: このアップデートでは、これらの問題に対処しています。

アップデート 1.86.1: このアップデートでは、これらの問題に対処しています。

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

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

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

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

アクセシビリティ

通知

スクリーンリーダーおよび点字ユーザーは、デバッグブレークポイントがヒットした場合、現在の行にエラーがある場合など、より設定可能なアラートを利用できるようになりました。これらはaccessibility.alertで始まる設定を介して、またはHelp: List Alertsコマンドで調査および設定できます。

「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」をリッスンして再開します。

この新しい機能を使用するには、次の拡張機能が必要です。

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

Workbench

補助ウィンドウを復元

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

ツリービューの Sticky Scroll

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

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

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

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

デフォルトで有効になっている新しい設定window.zoomPerWindowを使用すると、ズームコマンド (Zoom InZoom OutZoom Reset) をアクティブなウィンドウのみに適用し、開いているすべてのウィンドウには適用しないように設定できます。以前は、これらのコマンドを使用すると、開いているすべてのウィンドウに適用されるだけでなく、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つの編集可能なファイルを比較すると、どちらの側でも変更を行うことができます。

コマンドラインから標準入力から読み取る場合に--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.

注: 無題のワークスペースの詳細については、ドキュメントをご覧ください。

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

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

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

出力パネルのパネルタイトルメニューにOpen Output in New Windowアクションが追加され、出力パネルを別のウィンドウで表示できるようになりました。

CLIからの拡張機能の更新

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

クイックピックのホバーでカスタムホバーを使用する

クイックピック内のいくつかのホバーをネイティブレンダリングではなくカスタムホバーを使用するように変更しました。これにより、より豊かなレンダリングと製品全体での一貫性が可能になります。

Quick Pick hover rendered with custom hover instead of native.

差分エディターで複数のファイルを確認

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

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

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

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

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

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

github.devのセットアップが完了している場合、GitHub でプルリクエストに対して.を押すと、github.devがマルチファイル差分エディターで開かれ、変更を確認できます。

Editor

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

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

Using 'Paste As' to paste HTML content.

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

ソース管理

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

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

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

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

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

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

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

受信/送信変更の改善

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

Incoming changesノードにFetchPullアクションを、Outgoing changesノードにPushアクションを追加しました。

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

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

タグのマージ機能

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

スタッシュを表示コマンド

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

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

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

ノートブック

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

ノートブックエディターがフローティングウィンドウで開けるようになりました。ノートブックタブをメインウィンドウからドラッグして新しいウィンドウで開くか、View: Move Editor into New Windowコマンドを使用できます。

組み込みの変数ビュー

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

"notebook.experimental.variablesView": true

ノートブックの Sticky Scroll

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

ターミナル

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

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>形式もサポートされています。

ターミナル音声コマンド

新しいTerminal: Start Terminal VoiceおよびTerminal: Stop Terminal Voiceコマンドにより、ターミナルで音声からテキストへのセッションが可能になります。

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

タスク

パス区切り文字変数の省略形

新しい変数${/}は、既存の${pathSeparator}変数の省略形として使用できます。

デバッグ

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

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

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

テーマ: 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 — デフォルト。テキストが選択されており、コードブロックなどの特殊な要素内にいない場合にこの機能を有効にします。
  • smartsmartWithSelectionと同じですが、選択を必要としません。
  • 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 用 Linux サブシステム (WSL) をフル機能の開発環境として使用できます。

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

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

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

拡張機能への貢献

GitHub Copilot

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

保存前にインラインチャットを確認する

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

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

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

ホールドトゥスピークモード

少し前に、VS Code に音声サポートを追加しました。Chat 入力フィールドに音声入力サポートを追加する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 を呼び出すには、エディターの電球インジケーターも使用できます。選択を行うか、カーソルを新しい行に移動し、電球を選択してから、Modify with CopilotまたはGenerate with 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.

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

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

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

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

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

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

Modal window asking for additional authentication for a private repository.

Python

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

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: Select Interpreterコマンドを実行し、Create Environmentオプションを選択して、プロジェクト用の新しい仮想環境を作成します。

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 Execution API が完成

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

API の使用例は、Jupyter Kernel Execution Sampleにあります。

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

拡張機能が Jupyter カーネルへのアクセスを試みると、ユーザーはカーネルへのアクセスを許可または取り消すよう求められます。Jupyter カーネルへのアクセスは、ユーザーが拡張機能ごとに許可します。これは、ユーザーが拡張機能Aにアクセスを許可し、拡張機能Bへのアクセスを取り消すことができることを意味します。

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

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues拡張機能の開発がさらに進み、プルリクエストとイシューの作業、作成、管理ができるようになりました。新機能は次のとおりです。

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

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

プレビュー機能

TypeScript 5.4 ベータ版のサポート

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

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 はここに含めるには長すぎますが、非常にわかりやすいと考えており、イシュー #123713での提案に対する皆様のご意見を歓迎します。

チャットエージェント API

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

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

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

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

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

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

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

課題レポーター API

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

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

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

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

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

この API の進捗状況を追跡するには、イシュー #201131をご覧ください。

完成したAPI

新しいworkspace.saveworkspace.saveAs API

新しく完成した API であるworkspace.saveworkspace.saveAsにより、拡張機能はエディターの保存フローをトリガーできるようになりました。これは、リソースへの保存、またはユーザーにリソースを提供するよう求めることによって行われます。

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

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

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

Example of readonly message showing in the editor.

エンジニアリング

整理整頓

12月上旬に、年次大掃除を行いました。リポジトリ全体で1891件のイシューを純減させました。次のグラフは、年次大掃除の必要性と影響をよく示しています。

Chart of issue counts over the last years

Markdown 言語サービス 0.4 リリース

Markdown 言語サービス パッケージは、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 が含まれています。インサイダービルドで自己ホストし、早期にフィードバックを提供してくださったすべての方々に感謝いたします。

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への貢献

© . This site is unofficial and not affiliated with Microsoft.