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 の Issue と Pull Request の整理整頓を行いました(Issue クリーンアップガイドを参照)。すべてのリポジトリにおいて、オープンな Issue と Pull Request を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 セットアップがある場合、それらを異なるプロファイルとして保存することもできます。異なるプロファイルを同時に適用して複数のワークスペース(フォルダー)を開くことができます。

次の画像は、仕事のセットアップ用にカスタマイズされた Work プロファイルで開かれたフォルダーを示しています。

Folder opened in Work profile

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

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

Export and share profile

注意: プロファイルは現在、GitHub Codespaces のようなリモートシナリオでは動作しませんが、これを有効にするために取り組んでいます。進捗状況はIssue #165247 で追跡できます。

Workbench

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

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

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

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

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

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

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" のような一致があります。「あいまい」一致が あいまい一致 トグルボタンで無効になっている場合、連続したテキスト "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 列にキーバインディングを提供する拡張機能を表示するようになりました。拡張機能名を選択して、拡張機能の詳細ページを開くことができます。

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... コマンドを使用すると、検索コントロールが開いているときに、カウントに基づいてファイル内の特定の照合にジャンプできます。これは、照合が多数あり、特定の照合にジャンプしたい場合に便利です。

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+Arrow Left/Arrow Right) も追加しました。

ターミナル

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

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

検出されたリンクを開く コマンド (⇧⌘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+G を使用するのが、Ctrl+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" オプションが追加され、ファイル存在チェックがパフォーマンスの問題を引き起こす可能性があるリモートでのみ条件付きで無効にできるようになりました。

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

  • <ファイル>:<行>
  • <ファイル>:<行>:<列>
  • <ファイル> <行>
  • <ファイル> <行>:<列>
  • <ファイル>(<行>)
  • <ファイル>(<行>,<列>)
  • <ファイル>(<行>, <列>)
  • <ファイル> (<行>)
  • <ファイル> (<行>,<列>)
  • <ファイル> (<行>, <列>)
  • これらの形式では、一重引用符または引用符なしも機能します
    • "<ファイル>",<行>
    • "<ファイル>",<行>:<列>
    • "<ファイル>", line <行>
    • "<ファイル>", line <行>, col <列>
    • "<ファイル>", line <行>, column <列>
    • "<ファイル>":line <行>
    • "<ファイル>":line <行>, col <列>
    • "<ファイル>":line <行>, column <列>
    • "<ファイル>": line <行>
    • "<ファイル>": line <行>, col <列>
    • "<ファイル>": line <行>, column <列>
    • "<ファイル>" on line <行>
    • "<ファイル>" on line <行>, col <列>
    • "<ファイル>" on line <行>, 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では、Ctrl+Cは、選択があるかどうかに応じて、選択のコピーとシェルへのSIGINTの送信で共有されます。一般的な煩わしさは、誤って選択をしてしまった場合、Ctrl+CSIGINTを送信しない可能性があることでした。これを軽減するために、選択をコピーするCtrl+Cは、選択もクリアするようになりました。そのため、Ctrl+Cを2回押すと、1回または2回確実にSIGINTが送信されます。

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

ターミナルのタブストップ幅を設定する新しい設定 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: Stash Staged コマンドを使用して利用できます。

VS Code には、すでに Git: Delete Tag コマンドを使用したローカルタグの削除のサポートがありました。このマイルストーンでは、新しい Git: Delete Remote Tag コマンドを使用したリモートタグの削除を有効にしました。

親フォルダー内の 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 カーネル、Python 環境など)でグループ化します。

Notebook Kernel Picker

選択したセルを結合

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

Join Selected Cells command

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

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

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

Notebook Renderer fallback

新しいドキュメント

VS Code で Jupyter Notebooks を操作するのに役立つ新しいトピックが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 (javascriptreacttypescriptreact) は変更されていません。

新しい shellscript 文法

VS Code は、shellscript のシンタックスハイライトに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 から提供されるすべてのパッケージの整合性を保証し、拡張機能エコシステム全体のセキュリティを向上させます。

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

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

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

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

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

拡張機能への貢献

Python

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

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

環境作成時の要件ファイルの選択

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 を使用すると、長い問題の波線(squiggles)を1行に短縮できます。

GitHub Pull Requests and Issues

プルリクエストとイシューの作業、作成、管理を可能にするGitHub Pull Requests and Issues拡張機能はさらに進歩しました。ハイライトは以下の通りです。

  • 変更の提案と受け入れのサポート。
  • コメント内の 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 の使用を開始するのに役立ちます。

リモート開発

Remote Development 拡張機能を使用すると、コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。このリリースのハイライトは次のとおりです。

  • 複数の devcontainers.json ファイルの Dev Container サポート。
  • Docker 認証情報転送。
  • X11 & Wayland 転送

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

リモートトンネル

スリープ抑制

リモートトンネルは、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 (Experimental) および Dark+ V2 (Experimental) として表示されます。

TypeScript 5.0 のサポート

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

  • 新しい switch および case 補完は、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 プロバイダー以外でも使用できるようになります。以下の例は、クイック差分 API を使用して PR で変更された行のクイック差分を表示する GitHub Pull Request 拡張機能からのものです。

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) はまだありますが、まもなく削除されます。

コマンドラインからのパフォーマンステスト

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

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

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

GB18030 認証

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

ESM への移行

私たちはコードベースを ESM に移行する旅に乗り出しました。VS Code プロジェクトはネイティブモジュール (ESM) より前に存在し、当面の間、非同期モジュールシステム (AMD) を使用してきました。AMD は私たちに良いサービスを提供してくれましたが、次の段階に進む時が来ました。コードベースを ESM に移行し始め、順調に進捗しており、今後数か月でこの作業を完了することを期待しています。

macOS 10.11 および 10.12 の EOL 警告

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 PATH 環境変数をenvironmentVariableCollectionで先頭に追加してもmacOSで動作しない
  • 153786 差分エディターのいずれかの側を開くコマンドがある
  • 165123 2つの無題の差分エディターを開けるようにする
  • 167004 出力: 出力チャンネルを表示 出力チャンネルを表示するコマンド
  • 167528 拡張機能の出力チャンネルのログレベルがウィンドウの再読み込み後も保持される

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-hexeditorへの貢献

vscode-json-languageserviceへの貢献

vscode-languageserver-nodeへの貢献者

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

  • @eamodio (Eric Amodio): 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へのコントリビューション