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.comUpdates にアクセスしてください。

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

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

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

ワークベンチ

補助ウィンドウの復元

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

ツリービューのスティッキースクロール

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

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

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

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

デフォルトで有効になっている新しい設定 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 全体を閉じるまで、ターミナルプロンプトに戻ることができませんでした。このマイルストーンでは、stdin から読み取る際に --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 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 がマルチファイル差分エディターで開き、変更を確認できます。

エディター

text/html コンテンツの貼り付け

形式を指定して貼り付け... コマンドで、クリップボードの 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"
  }

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

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

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

受信/送信の変更の改善

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

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

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

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

タグをマージする機能

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

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

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

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

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

ノートブック

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

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

組み込み変数ビュー

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

"notebook.experimental.variablesView": true

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

ノートブックエディターのスティッキースクロール機能は、ワークベンチの残りの部分とスタイルを合わせるために大幅な改良を受け、各 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: 警告を一切表示しない

さらに、ダイアログには文字列を 1 行として貼り付けるための新しいボタンがあり、すべての \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 — デフォルト。コードブロックなどの特殊な要素内にない場合に、テキストを選択していると、この機能が有効になります。
  • smartsmartWithSelection と同じですが、選択は必要ありません。
  • always — 常に URL を Markdown リンクとして貼り付けます。
  • never — Markdown リンクとしての貼り付けを無効にします。

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

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

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

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

新しい Less 文法

以前の Less 文書構造はアーカイブされ、VS Code は Less 構文の強調表示に Better-Less の文書構造を使用するようになりました。

新しい Go 文法

Go 構文の強調表示文書構造が、以前の文書構造よりもアクティブにメンテナンスされている Go Syntax を使用するように変更されました。

リモート開発

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

ハイライト:

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

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

拡張機能への貢献

GitHub Copilot

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

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

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

インラインチャットの保存同意メッセージ。 テーマ: 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拡張機能がデフォルトでインストールされるようになりました

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

Pythonインタープリタークイックピックの「環境を作成」オプション。 テーマ: Catppuccin Mocha (プレビュー: vscode.dev)

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

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

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

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

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

テストエクスプローラーに表示される多階層pytestクラス。 テーマ: Catppuccin Mocha (プレビュー: vscode.dev)

Jupyter

拡張機能作成者向けのJupyterカーネル実行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内のすべてのファイルを含むマルチdiffエディターが開きます。

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

プレビュー機能

TypeScript 5.4 ベータ版のサポート

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

  • AI駆動のリファクタリングに関する初期作業。
  • ライブラリと型の作成者が不正な型推論を停止するのに役立つ新しいNoInfer組み込み
  • 型絞り込みと型チェックの改善。

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.saveおよびworkspace.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の貢献者の皆様に心から感謝申し上げます。

Issue tracking

Issue trackingへの貢献

プルリクエスト

vscodeへの貢献

vscode-flake8への貢献

vscode-hexeditorへの貢献

vscode-languageserver-nodeへの貢献

vscode-pull-request-github への貢献

vscode-vsce への貢献

language-server-protocol への貢献

monaco-editor への貢献

node-jsonc-parser への貢献