🚀 VS Code でで入手しましょう!

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

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

ダウンロード: Windows: x64 Arm64 | Mac: Universal 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

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

「別の場所で変更されました」インジケーターや「デフォルト値が変更されました」インジケーターなど、複数のインジケーターを持つ設定の場合、左右の矢印キーを使用してインジケーター間を移動できるようになりました。この変更により、ユーザーは Tab キーを 1 回押すだけでインジケーターからタブアウトできます。

プロファイル

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

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

Folder opened in Work profile

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

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

Export and share profile

: プロファイルは現在、GitHub Codespaces などのリモートシナリオでは機能しませんが、これを有効にする作業を進めています。進捗状況は、issue #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" などの一致が見つかります。「あいまい」一致があいまい一致トグルボタンで無効になっている場合、連続したテキスト "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+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:// プロトコルリンクが検出されるようになりました。

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

  • 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 回押すと、確実に 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: ステージングされたものを一時退避コマンドを使用して活用できます。

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 コマンドを無効にしています: CheckoutCommitPush、および Pull。つまり、これらの操作が実行されている間、ほとんどの Git コマンドはコマンドパレットに表示されず、ソース管理ビューとステータスバーで無効になります。

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

このマイルストーンでは、ソース管理ユーザーインターフェース要素の一部を改良しました。

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

ノートブック

カーネルピッカーの改善

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

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

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

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

Notebook Renderer fallback

新しいドキュメント

VS Code で Jupyter Notebooks を操作するのに役立つ 2 つの新しいトピックがあります。

デバッグ

JavaScript デバッグ

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

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

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

言語

JavaScript React 言語ラベルが JavaScript JSX に

JSX 構文は React だけでなく、より多くのものによって使用されることを反映するために、JavaScript React 言語モードの名前が JavaScript JSX に変更されました。TypeScript ReactTypeScript JSX に名前が変更されました。

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

新しい 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 署名に加えて、現在、発行元の署名に取り組んでいます。発行元の署名に関する詳細は、discussion #137 を参照してください。

CLI から拡張機能のバージョンをピン留め

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

ピン留めされた拡張機能バージョンの同期

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

拡張機能への貢献

Python

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

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

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

Python: 環境の作成 コマンドを使用して仮想環境を作成する場合、Python 拡張機能はワークスペースフォルダー内の requirements ファイルを検索し、ユーザーがインストールする requirements を複数選択できるようにします。

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

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

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 に更新されました。主な新機能は次のとおりです。

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

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

    ESLint language status

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

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

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能は、プルリクエストと issue の作業、作成、管理を可能にするもので、さらに進歩がありました。ハイライトは次のとおりです。

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

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

GitHub Copilot

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

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

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

開始するには、GitHub Copilot ウェブサイト で無料トライアルにサインアップできます。

Copilot の使用を開始するのに役立つ新しいトピック VS Code の GitHub Copilot を VS Code ドキュメントに追加しました。

リモート開発

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

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

新しい拡張機能の機能とバグ修正については、Remote Development リリースノート を参照してください。

Remote Tunnels

スリープ抑制

Remote Tunnels は、Windows、macOS、および systemd ベースの Linux システムでコンピューターがスリープ状態になるのを防ぐことができるようになりました。これは、リモートで作業するためにデスクトップを離れ、トンネルにアクセス可能な状態を維持したい場合に役立ちます。この機能を使用するには

  • VS Code UI から Remote Tunnel Access をオンにするときに、設定 remote.tunnels.access.preventSleeptrue に更新します。
  • CLI で code tunnel を使用する場合は、--no-sleep フラグを渡します。

信頼性の向上

Remote Tunnels の接続関連のいくつかの問題が修正され、信頼性が向上するはずです。

Continue Working On

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

さらに、リモートウィンドウの Git リポジトリにいる場合、Continue Working in New Local Clone コマンドを使用して、VS Code Desktop 上の新しいローカル Git クローンで作業を続行できるようになりました。

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

Continue Working On actions now available in the remote indicator

プレビュー機能

Dark+ V2 および Light+ V2 試験的テーマ

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

Dark+ V2 and Light+ V2 experimental themes

新しいテーマは、カラーテーマピッカー (Preferences: Color Theme ⌘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 設定の背後に配置しましたが、近い将来、これをデフォルトの動作にする予定です。ご意見をお聞かせください。

拡張機能の作成

コメントスレッドの状態

CommentThread state 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 を使用する拡張機能を公開することはできません。次のリリースで破壊的な変更が発生する可能性があり、既存の拡張機能を破壊することは決して望ましくありません。

ノートブックレンダラーに別の mimetype へのフォールバックを許可する

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

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

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

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

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

クイック diff

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

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 environmentVariableCollection を使用して PATH 環境変数を先頭に追加すると、macOS で動作しない
  • 153786 diff エディターの両側を開くコマンドを用意する
  • 165123 タイトルなしの両側で diff エディターを開けるようにする
  • 167004 出力: 出力チャネルを表示 出力チャネルを表示するコマンド
  • 167528 拡張機能の出力チャネルのログレベルがウィンドウのリロード後も永続化される

ありがとうございました

最後になりましたが、VS Code の貢献者の皆様に心から感謝申し上げます

Issue トラッキング

Issue トラッキングへの貢献

プルリクエスト

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