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

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

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

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Code の 2023 年 1 月リリースへようこそ。このバージョンには多くのアップデートが含まれており、気に入っていただけることを願っています。主なハイライトは次のとおりです。

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

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

整理整頓

以前のリリースノートでは、チームは私たちの整理整頓の取り組みについて報告しましたが、ここでも同じことをしたかったのです。

2022年11月に発表した通り、12月はGitHubのIssueとプルリクエストの整理に費やしました(Issue cleanup guideをご覧ください)。すべてのリポジトリで、未解決のIssueとプルリクエストを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 のようなリモートシナリオでは機能しませんが、現在この機能を有効にする作業を進めています。進行状況は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 グロブパターンをサポート

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

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

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

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

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

Source column shows extensions contributing keybindings

拡張機能のコンテキストメニューにあるExtension Keyboard Shortcutsアクションを使って、拡張機能によって提供されるキーバインドを検索することもできます。

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

サジェスト選択モード

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

ターミナル

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

ターミナルの高度な機能をより見つけやすくするために、以下のデフォルトキーバインドが追加されました。

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

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

⇧⌘O (Windows, Linux Ctrl+Shift+O) のキーバインドは、エディターでシンボルに移動 と同様のアクションですが、ターミナル向けに選択されました。

最近のディレクトリに移動 - 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\のリンクが検出されるようになりました。

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

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

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

  • <ファイル>:<行>
  • <ファイル>:<行>:<列>
  • <ファイル> <行>
  • <ファイル> <行>:<列>
  • <ファイル>(<行>)
  • <ファイル>(<行>,<列>)
  • <ファイル>(<行>, <列>)
  • <ファイル> (<行>)
  • <ファイル> (<行>,<列>)
  • <ファイル> (<行>, <列>)
  • 一重引用符または引用符なしでも機能します。
    • "<ファイル>", <行>
    • "<ファイル>", <行>:<列>
    • "<ファイル>", 行 <行>
    • "<ファイル>", 行 <行>, 列 <列>
    • "<ファイル>", 行 <行>, 列 <列>
    • "<ファイル>":行 <行>
    • "<ファイル>":行 <行>, 列 <列>
    • "<ファイル>":行 <行>, 列 <列>
    • "<ファイル>": 行 <行>
    • "<ファイル>": 行 <行>, 列 <列>
    • "<ファイル>": 行 <行>, 列 <列>
    • "<ファイル>" on line <line>
    • "<ファイル>" on line <line>, col <column>
    • "<ファイル>" 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回押すと、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: タグの削除コマンドを使ってローカルタグを削除する機能をサポートしていました。今回のマイルストーンでは、新しいGit: リモートタグの削除コマンドを使ってリモートタグの削除を可能にしました。

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

VS Codeはgit rev-parse --show-toplevelを使用してGitリポジトリのルートを決定します。ほとんどの場合、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に設定することで有効にできます。使用されていないカーネルは、セカンダリピッカーの別のカーネルを選択...に移動されます。このピッカーは、最新のJupyterPython拡張機能がインストールされている場合、すべてのカーネルをソース(例:Jupyter Kernel、Python Environmentなど)ごとにグループ化します。

Notebook Kernel Picker

選択したセルを結合

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

Join Selected Cells command

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

Jupyter Notebooks の IPyWidgets などのリッチ出力は、カーネルの存続期間中にのみ表示されます。これは、ノートブックを閉じて再度開くと、出力が表示されなくなることを意味します。しかし、これらのケースの多くでは、フォールバックメカニズムを使用して出力をレンダリングできます。たとえば、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)は変更されていません。

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

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 から提供されるすべてのパッケージの整合性が保証され、拡張機能エコシステム全体のセキュリティが向上します。

: 拡張機能の作成者は、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の編集可能なインストールコマンドを使用します。

Pylanceによる自動インデント

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

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

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

ライブプレビュー

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

ライブプレビュー拡張機能では、外部ブラウザプレビューをデフォルトブラウザ以外のブラウザで開くことができるようになりました。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 の実行に時間がかかっている場合を通知するようになりました。利用可能な時間予算 (ミリ秒) は、eslint.timeBudget.onValidationeslint.timeBudget.onFixes の 2 つの設定で制御できます。

  • 新しい設定eslint.problems.shortenToSingleLineを使用して、長い問題の波線を一行に短縮できます。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の進捗がありました。この拡張機能を使用すると、プルリクエストや Issue の作成、管理、作業を行うことができます。主なハイライトは次のとおりです。

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

その他のハイライトについては、拡張機能の0.58.0 リリース用の変更履歴をご覧ください。

GitHub Copilot

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

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ファイルに対する開発コンテナーのサポート。
  • 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 (Experimental)およびDark+ V2 (Experimental)としてリストされています。

TypeScript 5.0 サポート

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

  • 新しいswitchcaseの補完は、switch文の両方のセクションをより迅速に入力するのに役立ちます。
  • github.devvscode.devでプロジェクト全体のIntelliSenseを有効にする作業。

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

コマンドパレットの「よく使用される」セクション

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

commonly used section in the Command Palette

テーマ: パンダテーマvscode.devでプレビュー)

このセクションは、「最近使用された」セクションの下に表示されるため、筋肉記憶を壊すことはありません。また、VS Codeに慣れてコマンドをより多く実行するにつれて、このセクションは消える(「よく使用される」コマンドが「最近使用された」に移動するため)か、折りたたまれて見えなくなります。

commonly used section with recently used commands

テーマ: パンダテーマvscode.devでプレビュー)

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

拡張機能作成

コメントスレッドの状態

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

同期する設定を無視する

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

テレメトリー

新しい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)はまだ残っています。

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

コマンドラインから一連のパフォーマンステストを実行するために、以下の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およびVisual Studio for Macを含む)のコアは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 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 (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へのコントリビューション

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