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

2023年1月 (バージョン 1.75)

更新 1.75.1: この更新は、これらの問題に対処しています。

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


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

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

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

整理整頓

前回のリリースノートで、チームは整理整頓の取り組みについて報告しましたが、ここでも同様に行いたいと思います。

2022年11月に発表した通り、12月はGitHubの課題とプルリクエストの整理整頓に費やしました(課題のクリーンアップガイドを参照)。すべてのリポジトリにおいて、オープンな課題とプルリクエストを合計3637件削減しました。当然のことながら、削減の大部分は、上位5つのリポジトリ(microsoft/vscode (2520)、microsoft/vscode-jupyter (374)、microsoft/vscode-remote-release (278)、microsoft/vscode-python (220)、microsoft/vscode-pull-request-github (160))で発生しました。

アクセシビリティ

差分ナビゲーションの改善

次の変更へ移動/前の変更へ移動 に、行が挿入、削除、または変更されたことを示す音声キューが追加されました。さらに、変更の行が選択されるため、スクリーンリーダーで読み上げることができます。

ターミナルアクセシビリティモード

ターミナル: アクセシブルバッファーにフォーカス (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) コマンドを使用すると、スクリーンリーダーがキーボードでターミナルバッファーを操作できます。

ターミナルアクセシビリティヘルプ

エディターの アクセシビリティヘルプの表示 コマンドと同様に、ターミナル: ターミナルアクセシビリティヘルプの表示 () コマンドは、スクリーンリーダーユーザーに重要な情報を提供します。

Terminal accessibility help is presented on top of the terminal

ワークスペース信頼エディターのショートカット

ワークスペース: ワークスペースの信頼を管理 から開くことができるワークスペース信頼エディターのキーボードアクセシビリティを向上させるために、Ctrl/Cmd+Enter を使用して現在のワークスペースの信頼をキーボードで切り替えたり、Ctrl/Cmd+Shift+Enter を使用して親フォルダーの信頼を切り替えたりできるようになりました。

Workspace Trust Editor showing the trust buttons with their keyboard shortcuts

設定エディターインジケーターでのキーボードナビゲーションの改善

"Modified Elsewhere" インジケーターや "Default value changed" インジケーターなど、複数のインジケーターを持つ設定の場合、左右の矢印キーでインジケーター間を移動できるようになりました。この変更により、ユーザーは Tab キーを1回押すだけでインジケーターからタブで移動できます。

プロファイル

プロファイル 機能が VS Code で一般提供されることを発表できることを嬉しく思います。プロファイルには、拡張機能、設定、キーボードショートカット、UI 状態、タスク、ユーザーコードスニペットを含めることができます。データサイエンス、ドキュメント作成、Python や Java などの複数のプログラミング言語など、さまざまな開発シナリオに合わせて VS Code をカスタマイズできます。「作業」や「デモ」など、ワークフローに基づいて異なる VS Code セットアップがある場合、それらを異なるプロファイルとして保存することもできます。異なるプロファイルを同時に適用して複数のワークスペース(フォルダー)を開くことができます。

次の画像は、作業設定に合わせてカスタマイズされた作業プロファイルで開かれたフォルダーを示しています。

Folder opened in Work profile

プロファイルをエクスポートおよびインポートして、同僚、友人、または学生と共有し、VS Code の使用を開始するのに役立てることもできます。

次のビデオは、GitHub Gist を使用してプロファイルをエクスポートし、誰かと共有する方法を示しています。プロファイルリンクを受け取ったユーザーは、Web 用 VS Code で共有プロファイルをプレビューし、ローカルの VS Code インスタンスにインポートできます。

Export and share profile

: プロファイルは現在、GitHub Codespaces のようなリモートシナリオでは機能しませんが、これを有効にする作業を進めています。進行状況は課題 #165247で追跡できます。

ワークベンチ

マルチビューのリサイズサポートの改善

ビューの角をドラッグすることで、複数のビューを同時にリサイズできるようになりました。

グリッドレイアウトの改善

エディターが最小化されている場合、グリッドはワークベンチ全体またはサイドバーをリサイズするときにその状態を保持するようになりました。以下の短いビデオでは、右側の最小化されたエディターの幅は、全体のエディター領域が拡張されても一定のままです。

レイアウトのカスタマイズコマンドからのデフォルトに戻す

カスタムの レイアウトのカスタマイズ コマンドをトリガーするか、カスタムタイトルバーのレイアウトコントロールを使用している場合、レイアウトコントロールの右上にある元に戻す矢印ボタンを使用して デフォルトに戻す ことができます。

Customize layout control showing the new Restore Defaults button

パネルからパネルの配置を管理

パネルの配置を、パネルの位置と同様に、パネルのコンテキストメニューから直接調整できるようになりました。

Panel context menu showing the panel alignment submenu

簡素化された「設定」メニュー

グローバル設定の設定メニューを簡素化し、オプションをより論理的な順序とグループに整理しました。

Global settings menu showing expanded Themes flyout

ツリー検索履歴

ツリービュー内の検索コントロールで、履歴ナビゲーションがサポートされるようになりました。上下の矢印キーを使用して、以前の検索の履歴を移動できます。

ツリー検索連続一致

ツリービューの検索コントロールで、既存の「あいまい」一致に加えて、連続一致がサポートされるようになりました。下のビデオでは、最初に「src」を検索すると「resource」などの一致があります。「あいまい」一致が「Fuzzy Match」トグルボタンで無効になっている場合、連続したテキスト「src」を持つテキストのみが強調表示されます。

ページごとのリストスクロール

新しい設定 workbench.list.scrollByPage を使用すると、スクロールバーを直接クリックしたときにリストをページごとにスクロールするかどうかを設定できます。

リストのタイプナビゲーションモード

新しい workbench.list.typeNavigationMode 設定を使用すると、リストのタイプナビゲーションモードを設定できます。デフォルト(設定値 automatic)では、入力時にリストとツリーでナビゲーションが行われます。特定の時間にのみナビゲーションを有効にしたい場合は、typeNavigationModetrigger に設定すると、list.triggerTypeNavigation コマンドが実行された後にのみリストがタイプナビゲーションモードになります。

list.triggerTypeNavigation コマンドにはデフォルトではキーバインドがありませんが、独自のキーバインドを追加できます。たとえば、/ キーを押した後にタイプナビゲーションモードに入りたい場合は、次のようなキーバインドを追加できます。

{
  "key": "/",
  "command": "list.toggleKeyboardNavigation",
  "when": "listFocus"
}

大きなファイルを開く際の新しい確認

非常に大きなファイルの偶発的な開きを防止するため、特にネットワーク転送による実際のコストが発生する可能性があるリモート環境では、ファイルを開く前に確認が表示されます。この制限は、新しい workbench.editorLargeFileConfirmation 設定で変更でき、ローカルファイルとリモートファイルを開く場合で異なるデフォルト値が設定されています。

Large file confirmation shown for a 2GB package.json file

ファイルウォッチャーが files.watcherExclude glob パターンをサポート

files.watcherExclude 設定は、ファイルウォッチャーの強力な除外ルールに glob パターンをサポートしています。しかし、glob パターンはファイル監視に使用されるライブラリによってネイティブにはサポートされていませんでした。このマイルストーンでは、特に Linux での効率的なリソース使用のために、除外に対する glob パターンのサポートに貢献しました。

Linux の場合、ファイル監視の問題が発生した場合は、このFAQ エントリを参照してください。

キーボードショートカットエディターの改善

キーバインディングを提供する拡張機能の表示

キーボードショートカットエディターで、ソース列にキーバインディングを提供する拡張機能が表示されるようになりました。拡張機能名を選択すると、拡張機能の詳細ページが開きます。

Source column shows extensions contributing keybindings

また、拡張機能のコンテキストメニューにある 拡張機能のキーボードショートカット アクションを使用して、拡張機能が提供するすべてのキーバインディングを検索することもできます。

Extension keyboard shortcuts action

when 句プロパティのコンテキストキーの候補を表示

キーボードショートカットエディターで、when プロパティのコンテキストキーの候補が表示されるようになりました。Ctrl+Space ショートカットを使用して候補をトリガーできます。

Context key suggestions for when clause property

コードでキーバインディングを検索

キーボードショートカットエディターで、コード付きのキーバインディングの検索がサポートされるようになりました。例えば、"Ctrl+K" は、最初のコードが Ctrl+K のすべてのキーバインディングも表示します。

シェル環境解決タイムアウトを設定

新しい設定 application.shellEnvironmentResolutionTimeout(macOS と Linux のみ)を使用すると、シェル環境の解決が必要な場合にタイムアウトを長くすることができます。デフォルトでは、VS Code は環境が解決されるまで最大10秒間待機しますが、より複雑なシェル設定の場合、それだけでは十分な時間ではない場合があります。

VS Code がシェル環境を解決する方法の詳細については、このFAQ エントリを参照してください。

新しい VSCODE_RESOLVING_ENVIRONMENT 環境変数

VS Codeがユーザーシェル環境を解決している場合、新しい環境変数VSCODE_RESOLVING_ENVIRONMENT1に設定されるようになりました。これは、シェル環境を解決するコンテキストで実行されているかどうかを知る必要があるユーザー スクリプト(たとえば、.bashrc内)にとって便利です。

更新後のリリースノートのオプトアウトが簡単に

リリースノートエディターから直接、更新ごとにリリースノートを読むことをオプトアウトできるようになりました。これにより、update.showReleaseNotes 設定が反映され、更新されます。

There's a checkbox inside the release notes editor that allows the user to opt out reading release notes after every update

エディター

候補選択モード

新しい設定 (editor.suggest.selectionMode) が追加され、入力中に候補を自動的に選択するか、トリガー文字によって選択するかを設定できるようになりました。

デフォルトでは、常に最適な候補が選択されるため、Enter または Tab を押すとそれが挿入されます。候補が選択されないようにしたい場合は、値を neverwhenQuickSuggestion、または whenTriggerCharacter に設定してください。これらの設定値を使用した場合でも、候補は表示されますが自動的には選択されず、矢印キーを使用して選択できます。

この設定は自動補完にのみ適用され、Ctrl+Space で明示的にトリガーしたときに表示される候補には適用されないことに注意してください。

コードアクションリストがスクロール可能に

一部の拡張機能は、長いコードアクションリストを生成します。すべてのコードアクションをレンダリングするスペースがない場合でも、リストをスクロールできるようになりました。

カラーデコレーターの制限

エディターに表示されるカラーデコレーターの数は500に制限されています。これは、多数の色を含むファイルを開いた際のパフォーマンス問題を回避するためです。この制限は、editor.colorDecoratorsLimit 設定で設定できるようになりました。

CSS decorators shown in the editor

エディターの検索一致へ移動

新しい一致へ移動... コマンドを使用すると、検索コントロールが開いているときに、カウントに基づいてファイル内の特定の一致にジャンプできます。これは、多数の一致があり、特定の一致にジャンプしたい場合に便利です。

Go To Match... command

インライン候補ツールバーの再設計

このマイルストーンでは、インライン候補ツールバーをよりコンパクトで使いやすいように再設計しました。代替候補をすばやく切り替えたり、候補を完全にまたは単語ごとに受け入れたりするためのボタンが特徴です。

以下のビデオでは、ユーザーはコメントプロンプトでトリガーされたGitHub Copilotが提供する両方の提案を確認し、次にconsole、続いてconsole.logの次の単語を段階的に受け入れます。

The toolbar features buttons to quickly cycle through alternative suggestions and to accept a suggestion fully or word by word.

設定 "editor.inlineSuggest.showToolbar": "always" を使用すると、インライン候補が利用可能なときに常にツールバーを表示できます。

また、候補を単語ごとに受け入れたり元に戻したりするためのデフォルトのキーバインディング(Ctrl+左矢印/右矢印)も追加しました。

ターミナル

新しいデフォルトのキーバインディング

高度なターミナル機能の発見性を向上させるため、以下のデフォルトキーバインディングが追加されました。

検出されたリンクを開くコマンド (⇧⌘G (Windows, Linux Ctrl+Shift+G)) は、ターミナルリンクを開くキーボードアクセシブルな方法です。このコマンドは、ターミナルのビューポートで利用可能なすべてのリンクを含むクイックピックを開きます。

Ctrl+Shift+O will open a Quick Pick with a categorized list of links found

⇧⌘G (Windows, Linux Ctrl+Shift+G) キーバインディングは、エディターでシンボルへ移動 と同様の操作ですが、ターミナル用であるため選択されました。

最近使用したディレクトリへ移動 - Ctrl/Cmd+G

最近使用したディレクトリへ移動 (⌘G (Windows, Linux Ctrl+G)) は、シェル統合によって取得された最近のディレクトリを含むクイックピックを開きます。ピン留めとあいまい一致をサポートしています。

Directories are presented in a Quick Pick, split up by the current and previous sessions.

このキーバインディングが選ばれたのは、Ctrl+G が比較的利用頻度の低いシェルキーバインディングだからです。

Ctrl+Gをシェルに送信 - Ctrl+Alt+G

Ctrl+G最近使用したディレクトリへ移動に割り当てられたため、Ctrl+Alt+GCtrl+Gを直接シェルに送信する新しい方法となりました。

最近のコマンドを実行 - Ctrl+Alt+R

最近のコマンドを実行 (⌃⌥R (Windows, Linux Ctrl+Alt+R)) は、ほとんどのシェルの逆インデックス検索 (Ctrl+R) をモデルにした、最近実行されたコマンドのクイックピックを開きますが、よりアクセスしやすく、より機能的なパッケージになっています。ピン留めとあいまい一致をサポートしています。

Commands previously run are split up by current and previous sessions and also pulled in from the shell's history file

キーバインディング ⌃⌥R (Windows, Linux Ctrl+Alt+R) は、Ctrl+R の代替動作として選ばれましたが、そのキーバインディングはデフォルトの動作を上書きするには重要すぎます。

アクセシビリティモードの上書き

逆インデックス検索はスクリーンリーダーにとってあまりアクセスしやすくないため、アクセシビリティモードがオンの場合、Ctrl+R最近のコマンドを実行をトリガーし、Ctrl+Alt+RCtrl+R をシェルに送信します。

今回のリリースでは、ターミナルでのリンク検出が大幅に改善されました。

  • 特定の状況下でスペースを含むリンクが検出されます。

    • 行全体がリンクの場合。
    • Python形式のスタックトレースリンク: File "<path>", line <line>
    • 一部のコンパイラエラー: <path>(<line>,<col>) : ...
    • 独立したスタイルのテキストセクションはすべて独立して検出されるため、パスに下線が引かれている場合、スペースがあっても検出されるはずです。
  • [] 文字を含むリンクも動作するようになり、このような難しいエッジケースでも検出をサポートします。

    Links that end in the ] character will be detected, even when the whole link is wrapped in [ and ]

  • vscode:// プロトコルリンクが検出されるようになりました。

  • Windows で /mnt/\\wsl$\\\wsl.localhost\ のリンクが検出されるようになりました。

  • OSC ハイパーリンクのサポートは v1.72 で追加されました。これらのリンクでよく使用される一般的な file:// プロトコルもサポートされるようになりました(例: ls --hyperlink)。

  • terminal.integrated.enableFileLinks 設定に "notRemote" オプションが追加され、ファイルの存在チェックがパフォーマンスの問題を引き起こす可能性のあるリモート環境でのみ条件付きで無効にできるようになりました。

ほとんどのリンク形式も、以下の行と列の形式を一貫してサポートしています。

  • <file>:<line>
  • <file>:<line>:<column>
  • <file> <line>
  • <file> <line>:<column>
  • <file>(<line>)
  • <file>(<line>,<column>)
  • <file>(<line>, <column>)
  • <file> (<line>)
  • <file> (<line>,<column>)
  • <file> (<line>, <column>)
  • 一重引用符または引用符なしでも機能します。
    • "<file>",<line>
    • "<file>",<line>:<column>
    • "<file>", line <line>
    • "<file>", line <line>, col <column>
    • "<file>", line <line>, column <column>
    • "<file>":line <line>
    • "<file>":line <line>, col <column>
    • "<file>":line <line>, column <column>
    • "<file>": line <line>
    • "<file>": line <line>, col <column>
    • "<file>": line <line>, column <column>
    • "<file>" on line <line>
    • "<file>" on line <line>, col <column>
    • "<file>" on line <line>, column <column>

ターミナルエディターのファイルドラッグアンドドロップサポート

ターミナルエディターで、Shiftキーを押しながらファイルをドラッグアンドドロップすると、エディターで開く代わりにターミナルにファイルを書き込むことができるようになりました。

Dragging a file into a terminal editor will show 'Hold Shift to drop into editor'

"安全でない"プロファイルの検出

Windows上でのCygwinシェルの検出は、最近セキュリティ脆弱性のため削除されました。今回のリリースでは、より安全な形でこれを復活させ、Cygwin、Cmder、MSYS2を含むより多くのシェルプロファイルを検出するようになりました。セキュリティ問題を軽減するために、これらのプロファイルのいずれかが使用される前に、デフォルトプロファイルの選択コマンドを介して設定する必要があります。

Select Default Profile is available via the terminal view dropdown or the Command Palette

The newly detected profiles appear in a "detected" section at the bottom of the Quick Pick

選択すると、settings.json ファイルに追加され、通常のプロファイルのように動作する前に警告が表示されます。

The notification explains the path is potentially unsafe as it could be modified by another user

コンピュータが複数のユーザー、例えば企業環境で使用されていない場合、この警告は安全に無視できます。

ターミナルビューでコマンドを切り替える

長い間、ターミナルをクリアコマンドをターミナルビューアクションに追加してほしいという要望がありましたが、UIの肥大化を常に懸念していました。新しい内部機能のおかげで、オーバーフローメニューに表示されるデフォルトで非表示の新しいアクションが追加されましたが、右クリックで表示を切り替えることができます。

Clear terminal, Run Active File, and Run Selected Text commands are now available in the terminal view's overflow menu

Right-click one of the view actions to toggle which ones are visible and which go into the overflow menu

WindowsでCtrl+Cで選択を解除

Windowsでは、選択範囲があるかどうかによって、選択範囲のコピーとシェルへのSIGINT送信にCtrl+Cが共有されています。誤って選択してしまった場合、Ctrl+CSIGINTを送信しないという煩わしさがよくありました。これを軽減するため、選択範囲をコピーするCtrl+Cは、選択範囲もクリアするようになりました。そのため、Ctrl+Cを2回押すと、SIGINTが1回または2回確実に送信されます。

ターミナルのタブストップサイズ設定を追加

新しい設定 terminal.integrated.tabStopWidth が追加され、ターミナルのタブストップ幅を設定できるようになりました。これは、プログラムがタブサイズを設定ファイルで構成する代わりに、\t 文字を出力する場合に便利です。

Powerlineの三角形と斜線カスタムグリフ

GPUアクセラレーション対応のターミナルでは、三角形と斜線のPowerline追加シンボルグリフ(U+E0B8-U+E0BF)にピクセルパーフェクトなカスタムグリフが使用されるようになりました。これらの文字は、シングル幅かダブル幅かがあいまいで、使用するフォントによって異なりますが、シングル幅としてレンダリングすることを選択しました。

以前

Triangles and diagonal line previously could display with bad anti-aliasing and odd borders

以後

Triangles and diagonal line glyphs are drawn pixel perfect

"選択したテキストをアクティブなターミナルで実行" で括弧付きペーストモードを使用

「選択したテキストをアクティブなターミナルで実行」コマンドは、サポートするシェルで「括弧付きペーストモード」を使用してテキストを実行するようになりました。これにより、複数行の選択が複数のコマンドではなく、単一の入力として扱われます。これにより、実際のスクリプトの実行がより直感的になり、エラーの発生が少なくなります。

以前

Previously, running two echo statements would be run one after the one with 2 separate prompts

以後

Running two echo statements will now run in a single prompt

Pwsh Preview フィードバックプロバイダーのクイックフィックス

PowerShell Preview は最近、コマンドが失敗したときに提案を出力できる新しいプラグイン可能なフィードバックプロバイダーシステムを実装しました。

Running 'gcc' in pwsh preview will present 3 suggestions, which VS Code will present as Quick Fixes

ターミナルは、[General] および [cmd-not-found] フィードバックプロバイダーからクイックフィックスを取得するようになりました。クイックフィックスダイアログは、電球アイコンをクリックするか、Ctrl/Cmd+. を使用して開くことができます。

ソース管理

新しいコマンド

Git 2.35で、git stashコマンドに新しい--stagedモードが導入されました。この新しいモードを使用すると、ステージングされた変更のみを簡単にスタッシュできます。この新しいモードをサポートするGitバージョンをお持ちの場合、新しいGit: ステージングされた変更をスタッシュコマンドを使用して活用できます。

VS CodeはすでにGit: タグを削除コマンドを使用してローカルタグを削除する機能をサポートしていました。今回のマイルストーンでは、新しいGit: リモートタグを削除コマンドを使用してリモートタグの削除を有効にしました。

親フォルダー内のGitリポジトリ

VS Codeは、Gitリポジトリのルートを決定するためにgit rev-parse --show-toplevelを使用します。ほとんどの場合、Gitリポジトリのルートはワークスペース内にありますが、Gitリポジトリのルートがワークスペースまたは開いているファイル(複数可)の親フォルダーにあるシナリオもあります。ワークスペースまたは開いているファイルの親フォルダー内のGitリポジトリを開くことは、上級ユーザーにとっては素晴らしい機能ですが、新規ユーザーにとっては混乱を招く可能性があります。この混乱が原因で、これらのGitリポジトリからの変更を破棄してデータ損失を引き起こすケースが見られました。

混乱を避け、データ損失のリスクを減らすため、このマイルストーン以降、VS Codeはソース管理ビューに通知と新しいウェルカムビューを表示し、ワークスペースや開いているファイルの親フォルダーからGitリポジトリを自動的に開くことはありません。

Notification that there is a Git repository in parent folders

テーマ: Dark+ V2MacOS Modern 製品アイコン

リポジトリを開くボタンをクリックすると、ワークスペースまたは開いているファイルの親フォルダーで検出されたすべてのGitリポジトリのリストを含むクイックピックが開きます。親フォルダーからGitリポジトリを開くという選択は記憶されます。

ユーザーは、git.openRepositoryInParentFolders 設定を使用して、親フォルダーからのGitリポジトリの扱い方を制御できます。以前の動作に戻したいユーザーは、git.openRepositoryInParentFolders 設定を always に設定できます。

コマンドの無効化

GitリポジトリのサイズやさまざまなGitフックの存在によって、一部のGit操作は完了までに時間がかかる場合があります。以前、以前のコマンドがまだ進行中にコマンドを開始すると、予期しない結果(たとえば、コミット操作が進行中にファイルの変更を破棄する)につながるケースが見られました。

これを防ぐため、以下の操作が進行中はほとんどのGitコマンドを無効にします: CheckoutCommitPushPull。これは、これらの操作が実行されている間、ほとんどのGitコマンドがコマンドパレットに表示されず、ソース管理ビューとステータスバーで無効になることを意味します。

ユーザーインターフェイスの改善

今回のマイルストーンでは、ソース管理のユーザーインターフェース要素をいくつか磨き上げました。

  • ソース管理ビューのコミットおよびブランチを公開アクションボタンのツールチップにブランチ名が含まれるようになりました。
  • チェックアウトのステータスバー項目で、チェックアウトされている参照のタイプ(ブランチ、タグ、コミット)に応じて異なるアイコンが使用されるようになりました。
  • チェックアウトステータスバー項目は、チェックアウト操作の進行中に回転する進行状況アイコンを表示するようになりました。

ノートブック

カーネルピッカーの改善

MRU (Most Recently Used) カーネルピッカーの改善を続けました。notebook.kernelPicker.typemru に設定することで有効にできます。使用されていないカーネルは、セカンダリピッカーの 別のカーネルを選択... に移動されます。最新の Jupyter および Python 拡張機能がインストールされている場合、このピッカーはすべてのカーネルをソース (例: Jupyter Kernel、Python Environment など) でグループ化します。

Notebook Kernel Picker

選択したセルを結合

複数の選択されたセルを1つのセルに結合する新しいコマンド 選択したセルを結合 (kb(notebook.cell.joinSelected)` が追加されました。

Join Selected Cells command

サポートされているMIMEタイプへの出力のフォールバックレンダリング

IPyWidgetsなどのJupyter Notebookのリッチ出力は、カーネルの存続期間中のみ表示されます。つまり、ノートブックを閉じて再度開くと、出力は表示されなくなります。しかし、これらのケースの多くでは、フォールバックメカニズムを使用して出力をレンダリングできます。たとえば、IPyWidgetは場合によっては(使用されるウィジェットによって異なりますが)、静止画像またはHTMLコンテンツとしてレンダリングできます。

その結果、matplotlibウィジェット(または同様のウィジェット)を含む既存のノートブックを開いたユーザーは、コードを再実行することなく出力を確認できるようになりました。

Notebook Renderer fallback

新しいドキュメント

VS Code で Jupyter Notebook を操作するのに役立つ2つの新しいトピックが追加されました。

デバッグ

JavaScriptデバッグ

Node.js の起動パフォーマンスの向上

Node.js のデバッグに使用される「ブレークポイント予測機能」が書き直され、大規模なプロジェクトでの速度が劇的に向上しました。たとえば、TypeScript リポジトリでのユニットテストのデバッグ時の起動時間オーバーヘッドは 62% 削減され、VS Code リポジトリでのビルドのデバッグと開始のオーバーヘッドは 80% 削減されました。

ブレークポイントがヒットしないなどの問題が発生した場合は、問題を提出してください。launch.json"enableTurboSourcemaps": false を設定することで、新しい動作を無効にできますが、このオプションは信頼性が高まるにつれて最終的に削除されます。

言語

JavaScript React の言語ラベルが JavaScript JSX に変更

JavaScript React 言語モードは、JSX 構文が React だけでなく使用されることを反映して JavaScript JSX に名称変更されました。TypeScript ReactTypeScript JSX に名称変更されました。

UIに表示される言語名のみが変更されたことに注意してください。互換性の理由から、内部言語ID(javascriptreactおよびtypescriptreact)は変更されていません。

新しいシェルスクリプト文法

VS Codeは、シェルスクリプトのシンタックスハイライトにbetter-shell-syntaxの新しい文法を使用するようになりました。

拡張機能

VS Marketplace 拡張機能の署名

2022年11月以降、Visual Studio Marketplace にアップロードされるすべての拡張機能は、VS Marketplace によってコード署名されます。ユーザーがVS Codeの拡張機能ビューから署名済み拡張機能をインストールすると、VS Codeは署名を検証し、拡張機能が実際にVS Marketplaceから提供され、拡張機能パッケージが変更されていないことを証明します。署名検証に失敗した場合、VS Codeは拡張機能をインストールしません。

VS Marketplace は、既存のすべての拡張機能(11月以降更新されていない拡張機能を含む)に署名するプロセスを進めています。このプロセスが数ヶ月で完了すると、VS Code は VS Marketplace から提供されるすべての拡張機能が VS Marketplace によって署名されていることを要求します。この要件により、VS Marketplace から提供されるすべてのパッケージの整合性が保証され、拡張機能エコシステム全体のセキュリティが向上します。

: 拡張機能の作成者は、マーケットプレイス署名をオプトインするために何もする必要はありません。マーケットプレイス署名に加えて、現在パブリッシャー署名に取り組んでいます。パブリッシャー署名の詳細については、ディスカッション #137 を参照してください。

CLIから拡張機能のバージョンを固定

CLI (code --install-extension {publisher}.{name}@{version}) から拡張機能の特定のバージョンをインストールすると、そのバージョンに固定されるようになりました。これは、自動更新が有効になっている場合でも、拡張機能が自動的に更新されないことを意味します。

固定された拡張機能バージョンを同期

設定同期は、固定された拡張機能バージョンを同期するようになりました。これは、あるマシンで特定のバージョンの拡張機能をインストールすると、同期している他のすべてのマシンでもそのバージョンに固定されることを意味します。

拡張機能への貢献

Python

アクティブ化されたターミナルからVS Codeを起動する際の環境の自動選択

ユーザーがcondaまたは仮想環境がすでにアクティブ化されたターミナル経由でVS Codeを起動すると、Python拡張機能はそれを検出し、環境自体を自動選択するか、その環境を選択されたものにするかどうかをユーザーに尋ねるようになりました(環境によります)。

環境作成時にrequirementsファイルを指定

Python: 環境を作成 コマンドを使用して仮想環境を作成する際に、Python 拡張機能はワークスペースフォルダー内の要件ファイルを見つけ、ユーザーがインストールする要件を複数選択できるようにするようになりました。

pyproject.toml からオプションの依存関係を選択

Python 拡張機能は、pyproject.toml ファイルの [project.optional-dependencies] 部分で提供されるオプションの依存関係を検出して読み込みます。ワークスペースに pyproject.toml と選択されたオプションの依存関係が含まれていることが検出された場合、pip editable install コマンドを使用します。

Pylanceによる自動インデント

Pythonファイルでeditor.formatOnType設定が有効になっている場合、Pylanceは入力中にコードを自動的にインデントするため、コードのロジックに集中し、フォーマットに気を取られずに済みます。

試すには、ユーザーの settings.json ファイルに以下を追加して、Python ファイルの formatOnType を有効にしてください。

 "[python]": {
        "editor.formatOnType": true,
    },

ライブプレビュー

外部ブラウザプレビューの設定

Live Preview 拡張機能では、外部ブラウザプレビューをデフォルトのブラウザ以外のブラウザで開くことができるようになりました。livePreview.customExternalBrowser 設定を使用して、外部プレビューを以下のブラウザで開くように設定できます。

  • Microsoft Edge
  • Google Chrome
  • Mozilla Firefox
  • お使いのデフォルトブラウザ

Live Preview Custom External Browser setting

サーバーのルート設定

ワークスペース内のサブフォルダーにサーバーのルートパスを設定できるようになりました。例えば、livePreview.serverRoot"src" に設定することで、Live Preview にワークスペース内の src フォルダーからファイルを配信するように指示できます。

ESLint

ESLint 拡張機能がバージョン 2.4.0 に更新されました。主な新機能は以下の通りです。

  • 新しい実験的なフラット設定ファイルのサポート。VS Code で設定 eslint.experimental.useFlatConfig を使用して、個別にサポートを有効にする必要があります。ESLint バージョン 8.21 以降が必要です。

  • ESLint のステータスインジケーターが VS Code の言語ステータスエリアに移動しました。その結果、eslint.alwaysShowStatus 設定は削除されました。代わりに VS Code のピン留め機能を使用してください。

    ESLint language status

    言語ステータス項目は、保存中にコード修正を計算する際の遅い検証時間と長い ESLint 実行時間について通知するようになりました。利用可能な時間バジェット (ミリ秒単位) は、2つの設定 eslint.timeBudget.onValidationeslint.timeBudget.onFixes で制御できます。

  • 長い問題のスクイグルは、新しい設定 eslint.problems.shortenToSingleLine を使用して単一行に短縮できます。

GitHub プルリクエストと課題

GitHub プルリクエストと課題 拡張機能は、プルリクエストと課題の作業、作成、管理を可能にするもので、さらなる進展がありました。主なハイライトは以下の通りです。

  • 変更の提案と承認のサポート。
  • コメント内のGitHubハンドルがリンク化されるようになりました。
  • PR作成時にラベルを追加できるようになりました。
  • 実験的な設定 githubPullRequests.experimental.quickDiff は、チェックアウトされたPRの変更された行について、エディターのガターにクイック差分ビューを表示します。

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

GitHub Copilot

GitHub Copilot 拡張機能は、AI を活用したコード補完ツールで、コードをより速く、よりスマートに記述するのに役立ちます。VS Code で Copilot 拡張機能を使用してコードを生成したり、生成されたコードから学習したりできます。

GitHub Copilot は、インライン提案 UI を通じて VS Code エディターに統合され、さまざまな提案を確認し、生成されたコードのすべてまたは一部を簡単に受け入れることができます。

GitHub Copilotは、ライセンス管理、組織全体のポリシー制御、プライバシー保護などの機能を備え、ビジネス向けに一般提供されるようになりました。GitHub Copilot for Businessの発表で詳細をご確認いただけます。

利用を開始するには、GitHub Copilot ウェブサイトで無料トライアルにサインアップしてください。

また、VS Code ドキュメントに新しいVS Code の GitHub Copilot トピックを追加しました。これは、Copilot を使い始めるのに役立ちます。

リモート開発

リモート開発拡張機能を使用すると、コンテナー、リモートマシン、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。今回のリリースのハイライトは以下の通りです。

  • 複数の devcontainers.json ファイルに対する Dev Container のサポート。
  • Docker 認証情報の転送。
  • X11 & Wayland フォワーディング

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

リモートトンネル

スリープ抑制

リモートトンネルは、Windows、macOS、およびsystemdベースのLinuxシステムで、コンピューターがスリープ状態になるのを防ぐことができるようになりました。これは、デスクトップを離れてリモートで作業する場合に、トンネルがアクセス可能であることを確認するのに便利です。この機能を使用するには、以下の手順を実行します。

  • VS Code UI からリモートトンネルアクセスをオンにする際に、remote.tunnels.access.preventSleep 設定を true に更新します。
  • CLI で code tunnel を使用する際に、--no-sleep フラグを渡します。

信頼性の向上

リモートトンネルにおける接続関連のいくつかの問題が修正され、信頼性が向上しました。

引き続き作業

「引き続き作業」機能は、ローカルウィンドウのGitリポジトリで作業を開始し、GitHub Codespaceのようなリモートウィンドウで作業を継続することをサポートします。リモートにまだ公開されていないブランチにいる場合、別の開発環境で作業を継続することを選択すると、現在のブランチを公開するように自動的にプロンプトが表示され、どこからでも完全なブランチコンテキストにアクセスできるようになります。

さらに、リモートウィンドウのGitリポジトリにいる場合、新しいローカルクローンで作業を継続コマンドを使用して、VS Codeデスクトップで新しいローカルGitクローンで作業を継続できるようになりました。

最後に、ローカル、リモート、または Web ウィンドウでの作業を続行するためのすべてのオプションが、リモートインジケーターに便利に表示されるようになりました。これらのオプションは、コマンドパレットでも利用できます。

Continue Working On actions now available in the remote indicator

プレビュー機能

Dark+ V2 と Light+ V2 実験的テーマ

Dark+ V2 と Light+ V2 という2つの新しいカラーテーマが利用可能になりました。これらのテーマは、既存の Dark+ と Light+ テーマの進化形であり、よりアクセスしやすく、VS Code をこれまで以上に美しく見せるように設計されています。これらのテーマはまだ実験的とマークされており、早期のフィードバックを求めています。

Dark+ V2 and Light+ V2 experimental themes

新しいテーマは、カラーテーマピッカー(設定:カラーテーマ ⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T))でLight+ V2 (実験的) および Dark+ V2 (実験的) として表示されます。

TypeScript 5.0のサポート

この更新には、今後のTypeScript 5.0リリースへのサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細については、TypeScript 5.0イテレーションプランを参照してください。エディターツールの主なハイライトは以下の通りです。

  • 新しい switchcase の補完により、switch ステートメントの両セクションをより迅速に入力できるようになります。
  • github.dev および vscode.dev でプロジェクト全体の IntelliSense を有効にする作業。

TypeScript 5.0 の夜間ビルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールします。

コマンドパレットの「よく使う」セクション

このマイルストーンでは、コマンドパレットに新しい「よく使う」セクションが追加されました。このセクションの目的は、新規ユーザーにコマンドパレットの目的とできることをよりよく理解してもらうことです。

commonly used section in the Command Palette

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

このセクションは、「最近使用した」セクションの下に表示されるため、慣れてきた動作を妨げません。また、コマンドをより多く実行し、VS Code に慣れるにつれて、このセクションは消えるか(「よく使う」コマンドが「最近使用した」に移動するため)、または表示領域の下に隠れます。

commonly used section with recently used commands

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

今のところ、この新しい体験は設定 workbench.commandPalette.experimental.suggestCommands の背後にありますが、近い将来、これをデフォルトの動作にする予定です。ご意見をお聞かせください!

拡張機能作成

コメントスレッドの状態

CommentThreadstate API が完成しました。この API は、コメントが解決済みとしてレンダリングされるか、未解決としてレンダリングされるかを制御し、コメントビューでのフィルタリングに影響を与える可能性があります。この API の使用方法の詳細については、issue #127473 を参照してください。

設定を無視して同期

設定を登録する際に ignoreSync プロパティを使用することで、設定同期から設定をデフォルトで非表示にできるようになりました。これは、マシン間で同期することを意図しない設定に役立ちます。

テレメトリー

新しい TelemetryLogger API が完成しました。この API は、拡張機能の作成者にとってテレメトリーの使用をより簡単に、エンドユーザーにとってより安全にすることを目的としています。この API は、組み込みの秘密情報クリーニング、テレメトリー出力チャネル、エラーハンドラー、自動テレメトリーレベル管理などの機能を可能にします。これにより、当社の要件に従うことが保証された、より統一されたテレメトリーエクスペリエンスが実現されるはずです。

提案されたAPI

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

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

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

ノートブックレンダラーを別の MIME タイプにフォールバックさせる

コンテンツをレンダリングする際、ノートブックレンダラーがアイテムを適切にレンダリングできないことに気づく場合があります。たとえば、レンダラーがカーネルが特定の状態にあることを要求する場合があります。

以前はこのような場合、レンダラーにはエラーメッセージを表示するしか選択肢がありませんでした。今回は、レンダラーが特別な名前のエラーをスローできるようにする新しい提案されたAPIを追加しました。これにより、VS Codeはサイレントにノートブック出力アイテムに保存されている他のデータをレンダリングするようにフォールバックします。たとえば、インタラクティブなチャートレンダラーは、このエラーをスローして、VS Codeが現在の出力アイテムに保存されている画像データをレンダリングするようにフォールバックさせることができます。

このフォールバックをトリガーするには、renderOutputItemvscode.fallbackToNextRenderer という名前のエラーをスローします。

throw new class extends Error {
    override name = 'vscode.fallbackToNextRenderer';
}();

この特殊なエラーは、特定の状況でレンダリングが失敗すると予想される場合にのみ使用されます。レンダラーが予期しないエラーに遭遇した場合は、エラーメッセージを表示し続ける必要があります。

クイック差分

エディターの追加、変更、削除された行に表示されるガター装飾であるクイック差分は、現在SCMプロバイダーのみが使用できます。提案されたクイック差分APIにより、クイック差分をSCMプロバイダー以外でも使用できるようになります。以下の例は、GitHubプルリクエスト拡張機能からのもので、クイック差分APIを使用してPRで変更された行のクイック差分を表示しています。

vscode.window.registerQuickDiffProvider(
  { scheme: 'file' },
  {
    provideOriginalResource: (uri: vscode.Uri) => {
      const changeNode = this.reviewModel.localFileChanges.find(
        changeNode => changeNode.changeModel.filePath.toString() === uri.toString()
      );
      if (changeNode) {
        return changeNode.changeModel.parentFilePath;
      }
    }
  },
  'GitHub Pull Request',
  this.repository.rootUri
);

完全な提案はquickDiffProvider.d.tsにあります。

継続的なテスト実行

継続的なテスト実行により、テスト拡張機能は変更が発生したときにテストを監視および再実行できることを示すことができます。このAPIをサポートするには、テスト実行プロファイルでサポートを示すだけです...

const profile = controller.createRunProfile('Run', TestRunProfileKind.Run, runHandler);
+profile.supportsContinuousRun = true;

そして、runHandler でそれをチェックします。

const runHandler = (request: TestRunRequest, token: CancellationToken) => {
+   if (request.continuous) {
+       return watchForFileChangesThenRunTests(request, token);
+   }
}

完全な提案はtestContinuousRun.d.tsにあります。

エンジニアリング

拡張機能ホスト用のユーティリティプロセス

プロセスサンドボックス化に必要な拡張機能ホスト用のユーティリティプロセス使用が、デフォルトで有効になりました。まだ設定 (extensions.experimental.useUtilityProcess) がありますが、これはまもなく削除されます。

コマンドラインによるパフォーマンステスト

コマンドラインから一連のパフォーマンステストを実行するための以下のノードモジュールを導入しました。

vscode-bisect - このモジュールは、パフォーマンス低下を迅速に測定するのに役立ちます。このツールの操作方法については、npx vscode-bisect --help を実行してください。

vscode-perf - このモジュールは、VS Code のパフォーマンスを測定するのに役立ちます。npx vscode-perf --help は、このツールの操作方法を説明しています。

GB18030 認定

VS Code は GB18030 認定を取得しました。これは、中国政府内の認定機関が VS Code が中国語文字の全範囲を正しく表示できることを確認したことを意味します。テストはすべての組み込み使用シナリオをカバーしました。VS Code が認定されたことにより、Visual Studio Family のコア製品 (Visual Studio および Visual Studio for Mac を含む) は GB18030 の認定を受けました。

ESMへの移行

私たちはコードベースをESMに移行する旅に出ました。VS Codeプロジェクトはネイティブモジュール(ESM)より以前に存在しており、これまで非同期モジュールシステム(AMD)を使用してきました。AMDは私たちにうまく機能してきましたが、移行する時期が来ました。コードベースをESMに移行し始め、順調に進捗しており、今後数ヶ月でこの作業を完了したいと考えています。

macOS 10.11 および 10.12 のサポート終了警告

VS Codeデスクトップは、今後数マイルストーンでElectron 22に更新されます。Electron 22の更新に伴い、VS CodeデスクトップはOS X El CapitanおよびmacOS Sierraでは動作しなくなります。このマイルストーンでは、これらの影響を受けるプラットフォームのユーザー向けに非推奨通知を追加し、移行に備えてもらいました。これらのOSバージョンをご利用のユーザーは、詳細についてFAQをご覧ください。

システムおよびアプリケーション言語変数の使用状況の改善

以前のリリースでは、ウィンドウコントロールオーバーレイ (WCO) などの一部のコンポーネントを正しく配置できるように、アプリケーション言語を Electron に渡し始めました。一方、言語レコメンダーはシステム言語に依存していましたが、app.getLocale() がシステム言語の代わりにアプリケーション言語を取得し始めたため、言語レコメンダーに使用するシステム言語を取得するために新しい app.getPreferredSystemLanguages() Electron API を使用しました。その結果、新しい API が toLocaleString() が解析できない値を返したため、拡張機能ビューの拡張機能がレンダリングされないという回帰が発生しました。

回復リリースに向けて推進した緊急対策は、app.getLocale() に戻し、一時的に言語推奨を中断することでしたが、コードベースの多くの領域でもシステム言語変数ではなくアプリケーション言語変数を使用すべきだったことが判明しました。

このリリースでは、システム言語の多くの使用箇所がアプリケーション言語に置き換えられています。これにより、日付はシステム言語ではなく、アプリケーション言語により一貫した形式でローカライズされるはずです。

注目すべき修正点

  • 99878 macOSでenvironmentVariableCollectionによるPATH環境変数への先頭追加が機能しない
  • 153786 差分エディターのいずれかの側を開くコマンドを用意する
  • 165123 未保存の2つのファイルで差分エディターを開けるようにする
  • 167004 出力: 出力チャンネルを表示 出力チャンネルを表示するコマンド
  • 167528 拡張機能の出力チャネルのログレベルがウィンドウの再読み込み後も保持される

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-hexeditorへの貢献

vscode-json-languageserviceへの貢献

vscode-languageserver-nodeへの貢献者

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

  • @eamodio (エリック・アモディオ): TypeScript (リリースされた4.2) と Octokit (修正された型を取得するため) を更新し、いくつかのマイナーな修正 PR #2525
  • @sravan1946 (sravan): readme から利用不可のバッジを削除 PR #4393
  • @Thomas1664
    • コメントレイアウトを修正し、削除アイコンにゴミ箱を使用 PR #4285
    • ステータスバッジを着色 PR #4286
    • PRビューのUI修正 PR #4368
    • PRビューサイドバーで「自分を割り当てる」を表示するための正しい権限を使用 PR #4369
    • PR ドラフトステータスチェック入力のUIを修正 PR #4370

debug-adapter-protocolへの貢献者

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