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

2020年5月 (バージョン 1.46)

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

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


Visual Studio Code の 2020 年 5 月リリースへようこそ。

これらのリリースノートをオンラインで読むには、Updates (code.visualstudio.com) にアクセスしてください。

アクセシビリティ

このマイルストーンでは、コミュニティから役立つフィードバックを再びいただき、多くのアクセシビリティに関する issueを特定して対処することができました。

  • ステータスバーがキーボードナビゲーションをサポートするようになりました。次のパートにフォーカス (F6) でステータスバーにフォーカスがある場合、矢印キーナビゲーションでステータスバーエントリ間を移動します。
  • キーボードを使用して選択を開始および終了しやすくするために、4 つの新しいコマンドがあります。
    • 選択範囲のアンカーを設定 (⌘K ⌘B (Windows, Linux Ctrl+K Ctrl+B))
    • アンカーからカーソルまで選択 (⌘K ⌘K (Windows, Linux Ctrl+K Ctrl+K))
    • 選択範囲のアンカーをキャンセル (Escape)
    • 選択範囲のアンカーへ移動
  • アクティビティバーのエントリに tab ロールが設定され、適切な aria-expanded 状態が設定されるようになりました。
  • エディターの Aria ラベルで、pinnedpreviewreadonly などのエディターの状態が適切に伝わるようになりました。

ワークベンチ

柔軟なレイアウト

いくつかのイテレーションにわたって、レイアウトをより柔軟にするための進捗状況をお知らせしてきました。今回のリリースでは、一連の機能が一般利用できるようになりました。以下は、これらの機能の概要です。

サイドバーとパネル間でビューを移動する

サイドバーのビューをパネルに配置したり、その逆を行ったりすることを好むかもしれません。これを行うには、ビューのヘッダー、またはグループ全体のアイコンまたはタイトルをドラッグして、現在の配置場所から目的の場所に移動できるようになりました。キーボードからは、ビュー: ビューの移動 (workbench.action.moveView) および ビュー: フォーカスされたビューの移動 (workbench.action.moveFocusedView) コマンドを使用できます。

以下は、検索をパネルに、問題をサイドバーにドラッグするデモンストレーションです。

Moving Views Between Side Bar and Panel

検索をパネルに、問題をアクティビティバーにドラッグ

テーマ: GitHub Light

以前は、検索ビューをサイドバーからパネルに移動するための設定がありましたが、ドラッグアンドドロップが代わりに使用できるようになったため、その設定は廃止されました。

ビューのグループ化

異なる拡張機能からのいくつかのビューをグループ化したり、組み込みビューのデフォルトグループが自分に合わないと感じる場合もあるでしょう。ビューを既存のグループに移動したり、選択したビューの新しいグループを作成したりできます。これは、以前と同様にサイドバーとパネル全体で機能します。以下に、いくつかの例を示します。

Moving Timeline from Explorer to Source Control

エクスプローラーからソース管理へのタイムラインビューのドラッグ

Side By Side Debug Console and Watch View

実行サイドバーからパネルのデバッグコンソールの隣にウォッチビューをドラッグ

Custom History Group

サイドバーとパネルにタイムラインと GitLens を使用したカスタム履歴グループの作成

テーマ: GitHub Light

ビューの場所のリセット

ビューとビューのグループは、コンテキストメニューからデフォルトの場所にリセットできます。ビューがデフォルトの場所から移動された場合、それを元の場所に戻すためのエントリ 場所をリセット が表示されます。すべてのビューとグループをデフォルトの場所に戻すためのコマンド ビュー: フォーカスされたビューの場所をリセット (workbench.action.resetFocusedViewLocation) および ビュー: ビューの場所をリセット (workbench.action.resetViewLocations) もあります。

ビューまたはビューコンテナを貢献する拡張機能の作成者向け

ビューがワークベンチ内を移動すると、デフォルトの場所にない場合は、アイコンまたは追加のコンテキストで異なる方法で表示する必要がある場合があります。ビューを貢献するときに、作成者は icon プロパティと contextualTitle を提供できるようになりました。提供されていない場合、これらは貢献先のビューコンテナのアイコンとタイトルにデフォルト設定されます。

最後に、拡張機能の作成者は、ツリービュー拡張機能ガイドで概説されているように、activitybar とは対照的に、ビューコンテナを panel に直接貢献できるようになりました。

タブのピン留め

コンテキストメニューから、または新しいコマンド workbench.action.pinEditor (⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter)) を使用してタブをピン留めできるようになりました。

Pin Tabs

テーマ: GitHub Light

ピン留めされたタブには、重要なファイルを示すのに役立つ多くの便利な機能があります。

  • ピン留めされたタブは、常にピン留めされていないタブの前に表示されます。
  • 多数のタブを開いている場合でも、ビューからスクロールアウトしません。
  • その他を閉じるなどのコマンドを使用しても閉じません。
  • 開いているエディターの数が設定された制限を超えても閉じません。

タブをドラッグアンドドロップして、ピン留め状態を変更することもできます。

ピン留めされたタブは、スペースを節約するためにアイコンのサイズに視覚的に縮小されます(または、アイコンが無効になっている場合はファイル名の最初の文字が表示されます)。ピン留めされたタブでダーティインジケーターを表示する場合は、workbench.editor.highlightModifiedTabs: true を設定できます。

注: ピン留めされたタブの他の表示方法についてまだ検討中です。ご意見がありましたら、セカンダリタブバーの表示または ピン留めされたタブのコンテキストをさらに表示する 設定に関する既存の issue でアイデアを共有してください。

検索エディター

検索エディターの作成方法を構成するためのいくつかの新しいオプションがあります。

  • search.searchEditor.defaultNumberOfContextLines - 検索エディターがデフォルトで表示するコンテキスト行数を構成します。
  • search.searchEditor.reusePriorSearchConfiguration - 新しい検索エディターを作成するときに、最後にアクティブだった検索エディターの構成を再利用します。
  • キーバインディング引数で検索エディターの構成変数を渡すためのサポート (パラメーターの詳細)。

スクロールを強制せずにエクスプローラーの自動表示にフォーカス

explorer.autoReveal 設定に新しいオプション focusNoScroll があります。このオプションを使用すると、エクスプローラーはファイルを開くときに自動的にファイルを選択しますが、エクスプローラービューでファイルを表示するためにスクロールしません。

リストとツリーのスムーズスクロール

workbench.list.smoothScrolling 設定を有効にすると、スムーズスクロールのないハードウェア(たとえば、Windows のディスクリートマウスホイール)でリストとツリーのスクロールがはるかにスムーズになります。

Smooth scrolling

サッシュサイズの構成

workbench.sash.size 設定を使用して、ビュー/エディター間のドラッグ領域のフィードバック領域サイズをピクセル単位で構成できるようになりました。マウスを使用してビューのサイズを変更するのが難しいと感じる場合は、より大きな値を設定してください。

スクリーンキャストモードのフォントサイズ

新しい screencastMode.fontSize 設定を使用すると、スクリーンキャストモードで使用されるフォントサイズをピクセル単位で構成できます。

VS Code は、ワークスペース内の GitHub リモートへの URL リンクを直接開くことを許可するようになりました。さらに、GitHub でサインインしている場合は、GitHub プロファイルの下のページへのすべてのリンクが信頼されます。

エディター

閉じたファイルに対するファイル間のアンドゥ

ファイルが途中で閉じられた場合でも、ファイル間でアンドゥを実行できるようになりました。編集されたファイルが再度開かれ、名前の変更記号などのファイル間の操作は、影響を受けるすべてのファイルでアンドゥされます。

異常な行末記号

VS Code は現在、CR(キャリッジリターン)、LF(ラインフィード)、および CRLF を行末記号として認識しています。一部のプログラミング言語では、行末記号の定義が異なります。これは言語によって異なり、たとえば LS(行区切り記号)と PS(段落区切り記号)は C# および JavaScript では行末記号ですが、HTML、PHP、Java では行末記号ではありません。これらの行末記号の違いは、VS Code が言語サーバーと通信するときに問題を引き起こす可能性があります。これは、さまざまな概念が (行;文字) 座標を使用して VS Code と言語サーバー間で通信されるためです。行末記号の定義が異なる場合、ファイル内の行と場所のマッピングが異なる可能性があります。

ファイルを開くと、VS Code は開いたファイルに LS または PS が存在するかどうかを確認し、これらの文字を削除する許可を求めるプロンプトを表示します。これらの異常な行末記号は実際にはまれであり、コピーアンドペーストを介して誤ってソースコードに挿入される可能性が最も高いです。

統合ターミナル

先月の統合ターミナルのリンクプレビューが、古い実装に置き換わりました。新しいリンク実装により、次のことが可能になりました。

  • エディターのリンク検出を使用して、Web および file:// リンクの検出を改善しました。
  • エクスプローラーでフォルダーを開くか、新しい VS Code ウィンドウを開く、フォルダーリンクのサポート。
  • さまざまなリンクタイプに対するさまざまなリンクアクション。ワークスペースを検索する「単語」リンクにフォールバックします (terminal.integrated.wordSeparators 設定に基づく)。
  • エディターと同様のリンクの強調表示とホバーエクスペリエンス。

Terminal with various links

テーマ: Topaz (Dim)

タスク

最近のタスクパフォーマンスの改善に続いて、ビルドタスクの実行は、拡張機能にタスクを常に要求しなくなりました。フォルダーの tasks.json にデフォルトのビルドタスクが構成されている場合、ビルドタスクの実行は、デフォルトのビルドタスクを実行する前にすべての拡張機能からすべてのタスクを検索するのではなく、そのタスクの解決のみを試みます。

ソース管理

ターミナルで開く

ソース管理ビューのコンテキストメニューから、ターミナルでリポジトリを開くことができるようになりました。

Open in terminal from Source Control view

GitHub リモートの追加

Git: リモートの追加... コマンドを使用して、GitHub リポジトリをローカルリポジトリのリモートとして追加できるようになりました。

Use Add Remote Command

GitHub に公開するときに .gitignore を生成する

ワークスペースを GitHub に公開するときに .gitignore ファイルを生成できるようになりました。ワークスペースを GitHub に公開するときに、リポジトリに含めるファイルを選択するように求められ、含まれていないファイルは .gitignore ファイルに追加されます。

Select which files to include in the repository

入力フィールドのフォントファミリー

Scm: 入力フォントファミリー設定を使用して、ソース管理入力フィールドで使用されるフォントファミリーをカスタマイズできるようになりました。設定は次の値をサポートしています。

  • default - ワークベンチユーザーインターフェイスフォントファミリー。
  • editor - エディター: フォントファミリー設定で指定されたフォントファミリー。
  • font family name - 入力フィールドで使用されるフォントファミリーの名前 (例: Cascadia Code)。

進行中のリベースを中止する

Git: リベースを中止コマンドを使用して、進行中のリベース操作を中止できるようになりました。

デバッグ

自動デバッグ構成の改善

このマイルストーンでは、自動デバッグ構成のエクスペリエンスを改善しました。

  • 前回のマイルストーンでは、拡張機能の作成者が現在のプロジェクトを分析し、デバッグ構成を自動的に提供できるようにする機能を導入しました。これらのデバッグ構成は動的に作成されるため、launch.json 構成ファイルには表示されません。これは、すぐに使用できる場合は優れていますが、追加の引数を追加するなど、構成を変更する必要がある場合があります。編集するために開くために、自動デバッグ構成を launch.json に保存するオプションが追加されました。これを行うには、デバッグ: デバッグの選択と開始クイックピックの自動デバッグ構成の最後にあるギアボタンを使用します。

    Selecting Edit automatic debug configuration in launch

  • 実行とデバッグの開始ビューからすべての自動デバッグ構成を表示できるようになりました。

    Automatic debug configs in start view

  • デバッグドロップダウンで、以前に選択した自動デバッグ構成が記憶されるようになりました。

ステップインターゲット

多数のネストされた関数呼び出しを含むステートメントをデバッグすると、関心のない関数をステップスルーしなければならない場合があるため、苦痛になる可能性があります。このシナリオを改善するために、Debug Adapter Protocol は、関心のある関数に直接ステップインするための UI を表示する「ステップインターゲット」機能をサポートしています。

このマイルストーンでは、VS Code はこの機能の使用を開始しました。デバッグがステートメントで停止すると、コンテキストメニューに新しいアクション ステップインターゲット が表示されます。このアクションは、現在のスタックフレームで使用可能なすべてのターゲット (通常は関数) のリストを表示します。それらの 1 つを選択すると、そのターゲットにステップインします。

すべてのスタックフレームに独自のターゲットセットを含めることができることに注意してください。したがって、ステップインターゲットアクションの結果は、コールスタックビューで現在選択されているフレームによって異なります。

Step into targets in context menu

今のところ、Mock Debug 拡張機能のみが (偽の) ステップインターゲット サポートを備えていますが、Julia デバッガーなど、他のデバッグ拡張機能もすぐに続く予定です。

言語

TypeScript 3.9

VS Code に TypeScript 3.9.4 が含まれるようになりました。この主要な TS アップデートにより、いくつかの新しいツール機能、パフォーマンスの向上、および多数のバグ修正がもたらされます。TS 3.9 の詳細については、TypeScript ブログを参照してください。

CommonJS の自動インポート

VS Code が CommonJS スタイルの JavaScript モジュールで作業していることを検出した場合、自動インポートimport の代わりに require が使用されるようになりました。

Auto imports using 'require' in a JS file

リファクタリングで改行を保持

メソッドの抽出新しいファイルに移動などの JavaScript および TypeScript のリファクタリングで、リファクタリングされたソースコードの元のフォーマットを保持しようとするようになりました。これには、選択範囲に含まれる改行が含まれます。

The 'extract method' refactoring preserving newlines

不足しているすべてのインポートソースアクションを追加

VS Code は、JavaScript または TypeScript ファイルで不足しているすべてのインポートを追加するクイックフィックスを長年サポートしてきました。今回のイテレーションでは、ファイル内の任意の場所からこれをトリガーできる新しい 不足しているすべてのインポートを追加 ソースアクションを導入しました。

Adding imports using a source action

これにより、不足しているすべてのインポートを追加 のキーバインディングを設定することもできます。

{
  "key": "ctrl+shift+i",
  "command": "editor.action.sourceAction",
  "args": {
    "kind": "source.addMissingImports",
    "apply": "first"
  }
}

または、保存時に 不足しているすべてのインポートを追加 を有効にすることもできます。

"editor.codeActionsOnSave": [
    "source.addMissingImports"
]

JS/TS ワークスペース内のシンボルへ移動 に開いているすべてのプロジェクトを含める

デフォルトでは、JavaScript および TypeScript のワークスペースシンボル検索で、開いているすべての jsconfig および tsconfig プロジェクトが検索されるようになりました。以前は、フォーカスされたファイルが属するプロジェクトからの検索結果のみが含まれていました。

この動作は typescript.workspaceSymbols.scope 設定によって制御され、TS 3.9 以降が必要です。以前の動作に戻り、現在のプロジェクトのみを検索するには、"typescript.workspaceSymbols.scope": "currentProject" を設定します。

不足しているインポートのクイックフィックスを優先としてマークできるようになりました

JavaScript および TypeScript の 不足しているインポートの追加 クイックフィックスを、エラーの優先フィックスとしてマークできるようになりました。これにより、⌥⌘. (Windows, Linux Shift+Alt+.) を使用して、単一のキープレスで不足しているインポートを追加できます。

不足しているインポートの追加 が優先フィックスとしてマークされるのは、有効なインポートが 1 つしかない場合のみであることに注意してください。プロジェクトに複数の潜在的なインポートがある場合は、通常のアクションメニューを使用して、使用するインポートを選択する必要があります。また、JavaScript で 不足しているインポートの追加 クイックフィックスを有効にするには、型チェックを有効にする必要があります。

JSON オフラインモード

新しい設定 json.schemaDownload.enable を使用すると、JSON 拡張機能が http および https から JSON スキーマをフェッチすることを許可するかどうかを制御できます。

現在のエディターがダウンロードできないスキーマを使用しようとすると、ステータスバーに警告三角形が表示されます。検証、コード補完、ホバーなどのスキーマベースの機能は制限されます。

JSON warning triangle

ブラウザーのサポート

タブタイトルにデバッグ停止インジケーター

ブラウザーで拡張機能をデバッグする場合、デバッグされた拡張機能は、デバッガータブを非アクティブ化 (非表示) にする新しいブラウザータブに表示されます。デバッグ対象が何らかの理由で停止した場合 (たとえば、ブレークポイントにヒットした場合)、デバッガータブをアクティブ化することはできません (ブラウザーがこれを行うための API を提供していないため)。これにより、デバッグされた拡張機能が停止したことを発見することがほぼ不可能になります。

この問題を軽減するために、タブタイトルを更新して、赤い円のインジケーター 🔴 (ブレークポイントに似ています) を含めるようになりました。デバッガータブがアクティブ化されるとすぐに、赤い点が削除されます。

Debuggee stopped indicator in web view

統合ターミナルから VS Code を実行する

ブラウザーで実行されている VS Code で統合ターミナルを開くと、code と入力して、ブラウザーで動作するいくつかの便利なコマンドにアクセスできます。

Terminal Remote

今回のイテレーションでは、多くのオプションのサポートを拡張しました。

  • 特定の行でファイルを開くための --goto
  • 2 つのファイルを比較するための --diff
  • プログラムがファイルを閉じるのを待機するための --wait
  • フォルダーを現在のワークスペースに追加するための --add

GitHub Codespaces では、たとえば、ブラウザーベースの VS Code を Git のエディターとして使用できます。

VS Code Git Editor in Browser

テーマ: GitHub Light

ファイル/フォルダーのアップロード

VS Code では、ファイルをファイルエクスプローラーにドロップしてアップロードできます。今回のイテレーションでは、この機能を改善して、すべての子フォルダーとファイルを含むフォルダーをドロップしてアップロードできるようにしました。これは長時間実行される可能性がある操作であるため、ステータスバーに進行状況が表示され、必要に応じて操作をキャンセルできます。

Drag files into File Explorer

アカウント管理

以前のリリースでは、設定同期機能のプレビューとともに、新しいアカウント管理 UI のプレビューを導入しました。現在、この UI はデフォルトで表示されます。新しい提案された 認証プロバイダー API を使用する拡張機能は、ここにサインイン要求を表示でき、アカウントを表示して拡張機能のアクセスを管理できます。現在、この API を使用している拡張機能は限られています。API が安定したら、採用を増やすために取り組む予定です。

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用するのに十分な機能があります。開発中のため、早期のフィードバックをお待ちしています。

設定同期

過去数か月間、マシン間で VS Code のプリファレンスを同期することをサポートするために取り組んでおり、この機能は Insiders リリースでプレビューとして利用できます。

このマイルストーンでは、設定同期の管理と診断のサポートを強化しました。

同期済みマシンビュー

同期済みマシンビューを追加して、VS Code のプリファレンスを同期しているマシンのリストを表示するようにしました。デフォルト名は、使用している VS Code のタイプ (Insiders または Stable) とプラットフォームに基づいて提供されますが、ビューのマシンエントリで使用可能な編集アクションを使用して、いつでも名前を更新できます。

Synced Machines view

テーマ: カスタマイズされた GitHub Sharp

コマンドパレットから 設定同期: 同期済みデータの表示 コマンドを使用して、このビューを開くことができます。

同期済みデータビュー

同期済みデータビューに次の機能強化を追加しました。

  • データが同期されているマシンを確認できるようになりました。
  • ビューのデータエントリで使用可能な 復元 アクションを使用して、特定の状態に復元できます。
  • ビューヘッダーの その他のアクション (...) ボタンの下にある 同期済みデータのリセット アクションを使用して、クラウド上のデータをリセットできます。

Synced Data view

テーマ: カスタマイズされた GitHub Sharp

別のマシンからのデータと同期しようとしているかどうかを確認し、適切なアクションを実行できるようにすることで、同期をオンにするときの支援を強化しました。

  • ローカルを置換 - 現在のマシンのデータをクラウドからの同期済みデータで置換します。
  • マージ - 現在のマシンのデータをクラウドからの同期済みデータとマージします。
  • 同期済みデータの表示 - 同期済みデータビューを開いて、クラウドからの同期済みデータを表示します。

Replace or Merge pop-up

新しい JavaScript デバッガー

今月も、新しい JavaScript デバッガーの開発を継続しました。5 月中旬以降、Insiders のデフォルトのデバッガーになり、今回のリリースでは VS Code Stable に (デフォルトでは有効になっていませんが) 含まれています。debug.javascript.usePreview 設定を有効にすることで、既存の起動構成で使用を開始できます。

今月の進捗状況は、主に既存の機能の洗練と安定化に焦点が当てられました。

  • ブラウザーデバッグの複数タブサポート: ブラウザーまたは WebView の実行時に、複数のタブにアタッチできるようになりました。デフォルトでは、js-debug は urlFilter に一致するすべてのタブにアタッチします。ブラウザーにアタッチするときは、起動構成で "targetSelection": "pick" を設定して、以前のデバッガーのように単一のタブに接続できます。
  • タブの曖昧さ回避の改善: デバッグセッション名は、複数のタブをより正確に曖昧さ回避します。さらに、コールスタックビューのデバッグセッションのコンテキストメニューに タブにフォーカス アクションを追加しました。これを使用して、適切なページを見ていることを確認できます。
  • ゲッターを自動展開するオプション: Chrome の動作に合わせて、プロパティゲッターは、変数ビューまたはデバッグコンソールに表示されるときにデフォルトでは評価されません。debug.javascript.autoExpandGetters オプションを設定することで、この動作を構成できるようになりました。
  • webpack バンドルのタイプのパフォーマンス改善: 特定のタイプの webpack バンドル (eval ソースマップでビルドされたもの) は、js-debug での実行が遅くなっていました。それらはもうそうではありません。

TS 4.0 ナイトリービルドのサポート

VS Code 1.46 には、TypeScript 4.0 ナイトリービルドのプレビューサポートが含まれています。ナイトリービルドには、現在積極的に取り組んでいるいくつかの新しいツール機能 (たとえば、リファクタリングのためのより柔軟な選択) のサポートが含まれています。

今日 TypeScript 4.0 ナイトリービルドを試すには、TypeScript Nightly 拡張機能をインストールしてください。フィードバックを共有し、TypeScript 4.0 でバグが発生した場合はお知らせください。

拡張機能への貢献

Notebooks

クイックアウトライン

GitHub Issue Notebooksなどの Notebook 拡張機能は、クイックアウトラインをサポートするようになりました。kb('workbench.action.gotoSymbol') を押すか、エディターでシンボルへ移動 コマンドを使用して、現在の Notebook のすべての Markdown およびコードセルプレビューを表示します。

Notebook quick outline preview list

テーマ: GitHub Theme

エラーとシンボルのナビゲーション

F8すべての参照の検索 の動作を改善しました。すべてのコードナビゲーションジェスチャーは、Notebook の外部で行うのと同じくらい自然に感じるはずです。たとえば、問題ビューには、セルごとではなく、Notebook ごとにグループ化されたすべてのセルのすべてのエラーが表示されるようになりました。

Problems panel with errors grouped by notebook

テーマ: GitHub Theme

セルの結合/分割

セルをすばやく結合またはセルをより小さなフラグメントに分割するための 2 組のコマンドを導入しました。

Running Join and Split Notebook cells commands

テーマ: GitHub Dark Theme

保持された Notebook

ピン留めされた、またはダーティな Notebook エディターは、ワークスペースで永続化されるようになったため、Notebook がバックグラウンドに移動されたり、別のエディターグループに移動されたりしても、ユーザーは Notebook の作業状態を失うことはありません。

Persisted Notebook

テーマ: GitHub Dark Theme

統合されたアンドゥ/リドゥスタック

Notebook セルの操作または Notebook セルコンテンツの変更のユーザー操作が、同じアンドゥ/リドゥスタックで追跡されるようになりました。

Show tracking of Unified Undo/Redo stack

テーマ: GitHub Dark Theme

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の開発が継続されています。この拡張機能を使用すると、プルリクエストと issue の作業、作成、および管理を行うことができます。このリリースのいくつかのアップデートには、次のようなものがあります。

  • issue ホバーのラベルの改善。
  • issue とユーザーの提案は、コメントとプレーンテキストでのみトリガーされるようになりました。
  • 新しい issue エディターでは、担当者とラベルを設定できます。

すべての新機能とアップデートの詳細については、拡張機能の 0.17.0 リリース用の完全な変更ログを参照してください。

リモート開発

Remote Development extensions の開発が継続されています。これにより、コンテナー、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

1.46 の新機能は次のとおりです。

  • Dev Containers: GPG 転送のサポート。
  • Dev Containers: Docker ボリュームの検査のサポート。
  • Dev Containers: 新しい devcontainer.json コマンドプロパティ。

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

Hex Editor

バイナリエディターのサポートでカスタムエディター API が最終決定されたため、ネイティブの 16 進数編集エクスペリエンスを提供するためにHex Editor 拡張機能を開発しました。

Hex Editor

この拡張機能はまだ開発中であり、現在、ファイルのオープンと 16 進数としてのナビゲーションのみをサポートしています。ナビゲーションエクスペリエンスの開発を続け、その後編集のサポートに進みます。拡張機能を試してみて、vscode-hexeditor リポジトリに対してフィードバックを提供するか、issue を提出してください。

拡張機能の作成

ファイルパスのケーシング

VS Code が大文字と小文字を区別しないファイルシステムでパスと URI を処理する方法に関するいくつかのバグを修正しました。このリリースより前は、ケーシングが異なるパスは同じドキュメントを開きませんでしたが、分離された切断されたドキュメントを開いていました。その動作はしばしば混乱を引き起こし、時にはデータ損失を引き起こしました。

ただし、これらのバグを修正する際に、openTextDocument 関数の動作が変更されました。この関数は、渡された URI とは異なるケーシングの URI を持つドキュメントを返すことができるようになりました。つまり、拡張機能はリクエストされた URI ではなく、TextDocument#uri を信頼できる情報源として使用する必要があります。

以下のサンプルは、新しい動作を示しています。

// case-insensitive file system

const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);

const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);

assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());

新しいデバッグコンソールテーマの色

デバッグコンソールビューをスタイル設定するための新しい色があります。

  • debugConsole.infoForeground: デバッグコンソールの情報メッセージの前景色
  • debugConsole.warningForeground: デバッグコンソールの警告メッセージの前景色
  • debugConsole.errorForeground: デバッグコンソールのエラーメッセージの前景色
  • debugConsole.sourceForeground: デバッグコンソールのソースファイル名の前景色
  • debugConsoleInputIcon.foreground: デバッグコンソール入力マーカーアイコンの前景色

入力テーマの新しい色

入力に関する新しいカラーテーマオプションも追加されました。inputOption.activeForeground を使用して、アクティブな入力オプションの前景色を設定できます。これらは、検索ビューと検索ウィジェット(エディター、ターミナル、デバッグコンソール)に表示されます。

Input option foreground color

テーマ: GitHub Dark Theme

新しい codicon アイコン

以下の新しいアイコンを codicon ライブラリに追加しました。

  • server-process
  • server-environment
  • record
  • pass
  • stop-circle
  • play-circle

New available icons

テーマ: GitHub Dark Theme

プロバイダーはジェネリック型を使用します

vscode.d.ts の型定義が更新され、'provide' メソッドと 'resolve' メソッドを持つ 2 段階のプロバイダーがすべてジェネリックになりました。これは、'provide' 呼び出しの結果が 'resolve' 呼び出しに渡されることをより明確にするためです。

たとえば、DocumentLinkProvider の新しいジェネリック定義は次のとおりです。

export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;

  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}

すべてのプロバイダーにはデフォルトのジェネリック引数があるため、この変更によって既存の拡張機能でエラーが発生することはありません。以前に 'resolve' を実装する際にキャストまたは型チェックを使用していた場合は、代わりにジェネリックプロバイダーを使用するようにコードを更新することを検討してください。

class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {

  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }

  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}

Webview でのテーマ固有の CSS の記述

Webview の body 要素に、現在アクティブなテーマのフルネームを格納する新しいデータ属性 vscode-theme-name が追加されました。これにより、webview でテーマ固有の CSS を記述できます。

body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}

VS Code で利用可能なテーマの数を考えると、テーマ固有の CSS は例外的な場合にのみ記述する必要があることに注意してください。通常の webview では、代わりに .vscode-light および .vscode-dark クラス名と VS Code CSS 変数 を使用して、ユーザーが選択したテーマに適応する CSS を記述する必要があります。

カスタムバイナリエディター

カスタムバイナリエディターの API が完成しました。カスタムエディター API を使用すると、拡張機能は、VS Code のデフォルトのテキストエディターを置き換えるか、ユーザーが切り替えることができるカスタム webview ベースのエディターを作成できます。これは、画像や 3D モデルなどのアセットファイルを VS Code 内で直接プレビューしたり、特定のファイルタイプ向けに特化した編集インターフェースを構築したりするために使用できます。新しいバイナリーカスタムエディター API を使用すると、テキストベースではないファイル形式用の読み取り/書き込みエディターも構築できるようになりました。

A custom editor for binary files

カスタムエディター拡張機能ガイド では、API についてさらに詳しく説明しています。また、カスタムエディター拡張機能のサンプル もご確認ください。これには、テキストとバイナリーの両方のファイル形式のカスタムエディターの例が含まれています。

resolveCompletionItem の緩和

CompletionItemProvider#resolveCompletionItem 関数を使用すると、プロバイダーは補完をより多くのデータで遅延的に拡張できます。この「遅延」データはオプションであり、補完の挿入動作を変更してはなりません。拡張機能は additionalTextEdits を引き続き入力でき、補完が挿入されたに追加の編集が到着した場合でも、エディターはそれらを適用しようとします。これは追加の編集にのみ適用され、メインの編集(insertText)には適用されないことに注意してください。メインの編集は、一度提供されたら変更してはなりません。

onStartupFinished アクティベーションイベント

既存の * アクティベーションイベントと同様の、新しいアクティベーションイベントが追加されました。新しい onStartupFinished アクティベーションイベントは、拡張機能を VS Code の起動直後のある時点でアクティブ化したいが、起動の一部としてはアクティブ化したくない場合に使用する必要があります。

環境変数コレクション

ExtensionContext.EnvironmentVariableCollection API が安定版となり、拡張機能がターミナル環境に貢献できるようになりました。

const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

これらのコレクションは、拡張機能およびワークスペース固有であり、VS Code は複数の拡張機能間の競合をどのように処理するかを管理します。これらはウィンドウのリロードをまたいで永続化されるため、ウィンドウのロード直後に作成されたターミナルは、拡張機能ホストの起動をブロックするのではなく、最後に認識されたバージョンを使用します。これらの永続化されたコレクションは、コレクションを破棄するか、拡張機能がアンインストールされると削除されます。

コレクションが変更されると、ターミナルにインジケーターが表示されます。このインジケーターがアクティブな変更に対して表示されるか、「古い」ターミナルに対してのみ表示されるかは、terminal.integrated.environmentChangesIndicator 設定によって定義されます。この API は、組み込みの Git 拡張機能でも使用され、VS Code を認証プロバイダーとして機能させます。

Debug Adapter Protocol

新しい命令ブレークポイント

新しい「命令」ブレークポイントタイプが追加され、メモリアドレスの命令でブレークできるようになりました。メモリアドレスは、evaluatevariablesstackTrace、および gotoTargets リクエストからオプションで利用可能なシンボリック形式で指定されます。対応する機能 supportsInstructionBreakpoints は、デバッグアダプターが命令ブレークポイントをサポートしているかどうかを示します。

「ステップ実行の粒度」のサポート

新しいオプションの granularity 引数が、ステップ実行リクエスト nextstepInstepOutstepBack に追加されました。これは、リクエストが「ステートメント」、「行」、または「命令」のいずれをステップ実行するかを制御するためのものです。対応する機能 supportsSteppingGranularity は、デバッグアダプターがこの機能をサポートしているかどうかを示します。

提案された拡張機能 API

すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしています。提案された API を試すには、次の手順を実行する必要があります。

  • 提案された API は頻繁に変更されるため、Insiders ビルドを使用する必要があります。
  • 拡張機能の package.json ファイルに次の行を含める必要があります: "enableProposedApi": true
  • 最新バージョンの vscode.proposed.d.ts ファイルをプロジェクトのソースの場所にコピーします。

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

Git 拡張機能 API

組み込みの Git 拡張機能は、拡張機能が使用できる API を提供しています。既存の API は、Repositorylog 結果を取得する方法を公開していました。更新された API では、logpath で制約できるようになります。

export interface LogOptions {
  readonly maxEntries?: number;
  readonly path?: string;
}
export interface Repository {
  log(options?: LogOptions): Promise<Commit[]>;
}

BranchQuery に基づいて getBranches を取得する Git 拡張機能 API も追加されました。

export interface BranchQuery {
  readonly remote?: boolean;
  readonly contains?: string;
}
export interface Repository {
  getBranches(query: BranchQuery): Promise<Ref[]>;
}

アクセシビリティ情報

スクリーンリーダーをサポートするために、TreeItemStatusBarItem、および TimelineItem 要素に AccessibilityInformation を追加しました。AccessibilityInformation には labelrole が含まれています。label はスクリーンリーダーによって読み取られ、role は要素のアクセシビリティ特性を記述します。

エンジニアリング

Windows ARM64 Insiders

Windows for ARM 64-bit 用の新しい公式 Insider ビルドが、Insiders ダウンロードページ で入手できます。

これらのビルドは Microsoft Surface Pro X で動作しますので、ぜひ試してみて、感想をお聞かせください。

Windows ARM64

問題診断のための --crash-reporter-directory 引数

新しいコマンドライン引数 --crash-reporter-directory を使用すると、クラッシュレポートを保存したいローカルフォルダーを渡すことができます。これは拡張機能ホストでのクラッシュにも対応しており、VS Code がクラッシュしていて問題を報告したい場合にいつでも使用できます。

Preload スクリプト

特定の Electron API をウィンドウに公開するために、Electron preload スクリプトを VS Code に追加しました。これは、完全にサンドボックス化されたウィンドウへの最初のステップの 1 つです。進捗状況は issue #92164 に概説されています。

拡張機能のサンプルが ESLint を使用するようになりました

拡張機能のサンプル はすべて更新され、現在非推奨となっている TSLint の代わりに ESLint を lint に使用するようになりました。拡張機能でまだ TSLint を使用している場合は、TSLint から ESLint への移行ガイド と、新しく更新された拡張機能のサンプルを参照して、ESLint への移行方法を確認できます。

GitHub トリアージ拡張機能

GitHub での問題のトリアージを支援するために、chromium ベースのブラウザー用の拡張機能を作成しました。これは、担当者、ラベル、マイルストーン、およびトリアージ GitHub Actions をトリガーするために使用するさまざまな特別なコメントの単一のあいまい検索可能なメニューを提供します。コードを GitHub で オープンソース化しました。

Screenshot of Extension

ドキュメントと拡張機能

Build における Visual Studio Code

VS Code チームは Microsoft Build 2020 カンファレンスで発表を行い、VS Code セッションとオンライントークの概要をこの VS Code at Build ブログ記事で確認できます。

VS Code チームメンバーによるいくつかの講演

Azure 拡張機能

VS Code 内から直接 Azure アセットを操作およびデプロイするためのいくつかの新しい拡張機能があります。

  • Azure Static Web Apps - VS Code から直接 Azure Static Web Apps を作成および管理します。
  • Azure Databases - Azure でグローバルに分散されたマルチモデルデータベースを作成、参照、および更新します。

Azure Databases extension

新しいコマンド

キー コマンド コマンド ID
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) エディターをピン留め workbench.action.pinEditor
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) エディターのピン留めを解除 workbench.action.unpinEditor

注目すべき修正

  • 10144: Use system-ui as font on Linux
  • 63068: macOS dock icon is minuscule
  • 69163: Reveal Active File in Side Bar is throwing an exception
  • 95367: DAP "evaluate" request issued for invalid frameId
  • 95856: Go To Line should include "filename.extension:line number" format
  • 96713: Stopping a session from call stack actions view always goes to the active session
  • 96914: Typing is laggy when outline is visible
  • 96987: Orca does not read the line number in the breakpoint view
  • 97444: Copying a long value from debug watch results in pasting partial value
  • 97471: Debug hover is too narrow and horizontal scrolling useless
  • 97731: VS code freezes when typing and scrolling
  • 96643: Tasks (and TaskExecutions) are not === in the onDid(Start|End)Task callbacks

ありがとうございました

最後になりましたが、今月 VS Code に貢献してくださった以下の皆様に心から感謝申し上げます

Issue トラッキングへの貢献

vscode への貢献

language-server-protocol への貢献

vscode-generator-code への貢献

vscode-vsce への貢献

debug-adapter-protocol への貢献

vscode-js-debug への貢献

  • Vadym Okun (@cbmd): npm のみではなく、選択したパッケージマネージャーで実行できる機能を追加。 PR #459

localization への貢献

過去 1 年間、皆様からのフィードバックに真摯に耳を傾け、VS Code のローカライズ開発に貢献できる、より信頼性が高くインタラクティブなプラットフォームを提供する時期が来たと判断しました。これを踏まえ、Microsoft Community Localization Program をオープンソースのローカライズプロジェクト向けの代替プラットフォームで継続する目的で、4 月の第 1 週に Microsoft Localization Community Platform (MLCP) を正式に廃止しました。

新しいコミュニティプラットフォームに関する発表については、今後の数週間で Wiki ページにご注目ください。このプラットフォームの移行に関する回答については、FAQ ページもご覧ください。