2020年5月 (バージョン 1.46)
アップデート 1.46.1: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Intel | Linux: deb rpm tarball snap
Visual Studio Code 2020年5月リリースへようこそ。
- アクセシビリティの向上 - ステータスバーのナビゲーション、キーボードによるテキスト選択の簡素化。
- 柔軟なビューとパネルのレイアウト - サイドバーとパネルでビューを移動およびグループ化。
- ピン留めされたエディタータブ - よく使うファイルを便利に保つため、エディターをタイトルバーにピン留め。
- GitHubリモートの追加 - ローカルリポジトリにGitHubリモートを追加。
- 自動デバッガー構成 - 生成されたデバッグ構成の保存と変更。
- JavaScript CommonJS自動インポート - 自動インポートがCommonJSモジュールにrequireを使用するように変更。
- JS/TSリファクタリングで改行を維持 - リファクタリング操作中にフォーマットを維持。
- 設定同期プレビュー - 環境設定を管理するための新しい同期済みマシンおよびデータビュー。
- GitHub Issue Notebooks - GitHub issueクエリを実行し、結果をカスタムNotebookに表示。
- Windows ARM64サポート - 新しいVS Code Insiders ARM64ビルドが利用可能。
- Build 2020におけるVS Code - Tips&Tricks、リモート開発、VS Codeの歴史に関する講演。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
アクセシビリティ
今回のマイルストーンでも、コミュニティから役立つフィードバックをいただき、多くのアクセシビリティの問題を特定し、解決することができました。
- ステータスバーがキーボードナビゲーションをサポートするようになりました。次のパートにフォーカス(F6)でステータスバーにフォーカスがある場合、矢印キーでステータスバーのエントリ間を移動できます。
- キーボードを使って選択を開始および終了しやすくするために、4つの新しいコマンドが追加されました。- 選択アンカーを設定(⌘K ⌘B (Windows, Linux Ctrl+K Ctrl+B))
- アンカーからカーソルまで選択(⌘K ⌘K (Windows, Linux Ctrl+K Ctrl+K))
- 選択アンカーをキャンセル(Escape)
- 選択アンカーへ移動
 
- アクティビティバーのエントリがtabロールを持ち、適切なaria-expanded状態を設定するようになりました。
- エディターのAriaラベルが、pinned、preview、readonlyといったエディターの状態を適切に伝えるようになりました。
Workbench
柔軟なレイアウト
いくつかのイテレーションにわたり、レイアウトをより柔軟にするための進捗を発表してきました。このリリースでは、これらの機能が一般的に利用できるようになりました。以下にこれらの機能の概要を示します。
サイドバーとパネル間のビューの移動
サイドバーのビューをパネルに配置したい、あるいはその逆を希望する場合があります。これを行うために、ビューをヘッダーでドラッグするか、アイコンまたはタイトルでグループ全体をドラッグして、現在の場所から目的の場所に移動できるようになりました。キーボードからは、ビュー: ビューを移動(workbench.action.moveView)とビュー: フォーカスされたビューを移動(workbench.action.moveFocusedView)のコマンドを使用できます。
以下は、検索をパネルにドラッグし、問題をサイドバーにドラッグするデモンストレーションです。

検索をパネルに、問題をアクティビティバーにドラッグ
テーマ: GitHub Light
以前は、検索ビューをサイドバーからパネルに移動するための設定がありましたが、ドラッグアンドドロップで代替できるようになったため、その設定は廃止されました。
ビューのグループ化
異なる拡張機能から提供されるビューをグループ化したり、組み込みビューのデフォルトグループが自分には合わないと感じる場合もあるかもしれません。既存のグループにビューを移動したり、選択したビューの新しいグループを作成したりすることができます。これは、サイドバーとパネル間で以前と同様に機能します。以下にいくつかの例を示します。

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

実行サイドバーから監視ビューをドラッグして、パネルのデバッグコンソールの隣に配置

サイドバーとパネルにタイムラインとGitLensを使用したカスタム履歴グループを作成
テーマ: GitHub Light
ビューの位置をリセットする
ビューおよびビューのグループは、コンテキストメニューからデフォルトの位置にリセットできます。ビューがデフォルトの位置から移動されている場合、位置をリセットのエントリが表示され、元の場所に戻すことができます。すべてのビューとグループをデフォルトの位置に戻すためのコマンドとして、ビュー: フォーカスされているビューの位置をリセット(workbench.action.resetFocusedViewLocation)とビュー: ビューの位置をリセット(workbench.action.resetViewLocations)も利用できます。
ビューまたはビューコンテナを寄稿する拡張機能作成者向け
ビューがワークベンチ内で移動されると、デフォルトの位置にない場合、アイコンや追加のコンテキストで異なって表示する必要がある場合があります。ビューを寄稿する際、作成者はiconプロパティとcontextualTitleを提供できるようになりました。これらが提供されない場合、それらは寄稿先のビューコンテナのアイコンとタイトルにデフォルトで設定されます。
最後に、拡張機能作成者は、ツリービュー拡張機能ガイドで概説されているように、activitybarではなくpanelに直接ビューコンテナを寄稿できるようになりました。
タブをピン留めする
コンテキストメニューから、または新しいコマンドworkbench.action.pinEditor(⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter))を使用して、タブをピン留めできるようになりました。

テーマ: GitHub Light
ピン留めされたタブには、重要なファイルをマークするのに役立ついくつかの便利な機能があります。
- ピン留めされたタブは、常にピン留めされていないタブの前に表示されます。
- 多数のタブが開いていても、表示領域からスクロールアウトすることはありません。
- 「その他を閉じる」などのコマンドを使用しても閉じません。
- 開いているエディターの数に設定された制限を超えても閉じません。
タブをドラッグアンドドロップして、ピン留め状態を変更することもできます。
ピン留めされたタブは、スペースを節約するために視覚的にアイコンのサイズに縮小されます(アイコンが無効になっている場合はファイル名の最初の文字が表示されます)。ピン留めされたタブにダーティインジケーターを表示したい場合は、workbench.editor.highlightModifiedTabs: trueを設定できます。
注意: ピン留めされたタブの表示方法については、引き続き検討中です。ご意見がある場合は、セカンダリタブバーの表示またはピン留めされたタブにより多くのコンテキストを表示する設定に関する既存の問題にアイデアを共有してください。
検索エディター
検索エディターの作成方法を構成するための新しいオプションがいくつかあります。
- search.searchEditor.defaultNumberOfContextLines- 検索エディターがデフォルトで表示するコンテキスト行数を構成します。
- search.searchEditor.reusePriorSearchConfiguration- 新しい検索エディターを作成する際に、最後にアクティブだった検索エディターの構成を再利用します。
- キーバインディング引数に検索エディター構成変数を渡すサポート(パラメータの詳細)。
スクロールを強制せずにエクスプローラーを自動表示
explorer.autoReveal設定にfocusNoScrollという新しいオプションが追加されました。このオプションを使用すると、エクスプローラーはファイルを開くと自動的に選択しますが、エクスプローラービューで表示するためにスクロールすることはありません。
リストとツリーのスムーズスクロール
workbench.list.smoothScrolling設定を有効にすると、スムーズスクロール機能がないハードウェア(例: Windowsの離散型マウスホイール)でも、リストやツリーでのスクロールがはるかにスムーズになります。

サッシュサイズの構成
workbench.sash.size設定を使用して、ビュー/エディター間のドラッグ領域のフィードバックエリアサイズをピクセル単位で構成できるようになりました。マウスでビューのサイズを変更するのが難しいと感じる場合は、より大きな値を設定してください。
スクリーンキャストモードのフォントサイズ
新しいscreencastMode.fontSize設定により、スクリーンキャストモードで使用されるフォントサイズをピクセル単位で設定できます。
信頼できるリンク保護
VS Codeは、ワークスペース内のGitHubリモートへのURLリンクを直接開くことを許可するようになりました。さらに、GitHubでサインインしている場合、GitHubプロファイル下のページへのすべてのリンクが信頼されます。
Editor
閉じられたファイルに対するファイル横断アンドゥ
ファイルがその間に閉じられていたとしても、ファイル間でアンドゥできるようになりました。編集されたファイルは再度開かれ、シンボルの名前変更などのファイル横断操作は、影響を受けるすべてのファイルでアンドゥされます。
異常な行末記号
VS Codeは現在、CR (キャリッジリターン)、LF (ラインフィード)、およびCRLFを行末記号として認識しています。一部のプログラミング言語では、行末記号を構成するものに対して異なる定義があります。これは言語によって異なり、たとえば、LS (ラインセパレーター) とPS (段落セパレーター) はC#とJavaScriptでは行末記号ですが、HTML、PHP、Javaではそうではありません。VS Codeと言語サーバー間で様々な概念が(行;文字)座標を使用して通信されるため、これらの行末の違いは問題を引き起こす可能性があります。行末記号の定義が異なる場合、ファイル内の行と位置のマッピングが異なる結果となる可能性があります。
ファイルを開く際、VS Codeは開かれたファイルにLSまたはPSが存在するかどうかをチェックし、これらの文字を削除する許可を求めるプロンプトを表示するようになりました。これらの異常な行末記号は実際にはまれであり、コピーペーストによって誤ってソースコードに挿入される可能性が最も高いです。
統合ターミナル
改善されたリンクサポート
先月の統合ターミナルリンクプレビューが古い実装を置き換えました。新しいリンク実装により、以下の機能が有効になります。
- エディターのリンク検出を使用することによる、ウェブおよびfile://リンク検出の改善。
- フォルダーリンクのサポート。エクスプローラーでフォルダーを開くか、新しいVS Codeウィンドウを開くことができます。
- 異なるリンクタイプに対する異なるリンクアクション。ワークスペースを検索する「単語」リンクにフォールバックします(terminal.integrated.wordSeparators設定に基づく)。
- エディターと同様のリンク強調表示およびホバー体験。

テーマ: Topaz (Dim)
タスク
最近のタスクパフォーマンス改善に続き、ビルドタスクの実行は、拡張機能に常にタスクを要求しなくなりました。フォルダのtasks.jsonにデフォルトのビルドタスクが構成されている場合、ビルドタスクの実行は、デフォルトのビルドタスクを実行する前にすべての拡張機能からすべてのタスクを検索する代わりに、そのタスクのみを解決しようとします。
ソース管理
ターミナルで開く
ソース管理ビューのコンテキストメニューから、リポジトリをターミナルで開けるようになりました。

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

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

入力フィールドのフォントファミリー
Scm: 入力フォントファミリー設定を使用して、ソース管理入力フィールドで使用されるフォントファミリーをカスタマイズできるようになりました。この設定は以下の値をサポートします。
- default- ワークベンチユーザーインターフェイスのフォントファミリー。
- editor- エディター: フォントファミリー設定で指定されたフォントファミリー。
- font family name- 入力フィールドで使用するフォントファミリーの名前(例:- Cascadia Code)。
進行中のリベースを中止する
Git: リベースを中止コマンドを使用して、進行中のリベース操作を中止できるようになりました。
デバッグ
自動デバッグ構成の改善
今回のマイルストーンでは、自動デバッグ構成のユーザーエクスペリエンスを改善しました。
- 
前回のマイルストーンでは、拡張機能開発者が現在のプロジェクトを分析し、デバッグ構成を自動的に提供する機能が導入されました。これらのデバッグ構成は動的に作成されるため、 launch.json構成ファイルには表示されません。これはすぐに機能する限りは良いですが、たとえば追加の引数を追加するために構成を変更する必要がある場合があります。自動デバッグ構成をlaunch.jsonに保存して編集できるようにするオプションが追加されました。これを行うには、デバッグ: デバッグの選択と開始クイックピックで自動デバッグ構成の最後にあるギアボタンを使用します。 
- 
「実行とデバッグ」開始ビューからすべての自動デバッグ構成を表示できるようになりました。  
- 
デバッグのドロップダウンメニューで、以前に選択した自動デバッグ構成が記憶されるようになりました。 
ステップインターゲット
多くのネストされた関数呼び出しがあるステートメントにデバッグでステップインするのは、あまり関心のない関数をステップ実行しなければならない可能性があるため、苦痛な場合があります。このシナリオを改善するために、デバッグアダプタープロトコルは、「ステップインターゲット」機能をサポートしており、関心のある関数に直接ステップインするためのUIを表示します。
今回のマイルストーンで、VS Codeはこの機能を使用し始めました。ステートメントでデバッグが停止すると、コンテキストメニューに新しいアクション「ステップインターゲット」が表示されます。このアクションは、現在のスタックフレームで使用可能なすべてのターゲット(通常は関数)のリストを表示します。そのうちの1つを選択すると、そのターゲットにステップインします。
各スタックフレームは独自のターゲットセットを持つことができることに注意してください。したがって、「ステップインターゲット」アクションの結果は、CALL STACKビューで現在選択されているフレームに依存します。

今のところ、Mock Debug拡張機能のみが(偽の)ステップインターゲットサポートを持っていますが、すぐにJuliaデバッガーなどの他のデバッグ拡張機能もこれに続くでしょう。
言語
TypeScript 3.9
VS CodeにはTypeScript 3.9.4が含まれるようになりました。この主要なTSアップデートでは、新しいツール機能、パフォーマンスの向上、および多数のバグ修正が導入されています。TS 3.9の詳細については、TypeScriptブログを参照してください。
CommonJSの自動インポート
VS Codeは、CommonJSスタイルのJavaScriptモジュールで作業していることを検出すると、自動インポートでimportではなくrequireを使用するようになりました。

リファクタリングで改行を維持
JavaScriptとTypeScriptの「メソッドに抽出」や「新しいファイルに移動」などのリファクタリングは、リファクタリングされたソースコードの元の書式設定を維持しようとします。これには、選択範囲内の改行が含まれます。

不足しているインポートをすべて追加するソースアクション
VS Codeは、JavaScriptまたはTypeScriptファイル内の不足しているインポートをすべて追加するクイックフィックスを長らくサポートしてきました。今回のイテレーションでは、新しい「不足しているインポートをすべて追加」ソースアクションを導入し、ファイル内のどこからでもこれをトリガーできるようになりました。

これにより、「不足しているインポートをすべて追加」にキーバインディングを設定することもできます。
{
  "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回のキープレスで不足しているインポートを追加できます。
有効なインポートが1つしかない場合にのみ、「不足しているインポートの追加」が推奨される修正としてマークされることに注意してください。プロジェクト内に複数の潜在的なインポートがある場合は、通常通りコードアクションメニューを使用して、使用するインポートを選択する必要があります。また、JavaScriptで「不足しているインポートの追加」クイックフィックスを有効にするには、型チェックを有効にする必要があります。
JSONオフラインモード
新しい設定json.schemaDownload.enableにより、JSON拡張機能がhttpおよびhttpsからJSONスキーマを取得することを許可するかどうかを制御できます。
現在のエディターがダウンロードできないスキーマを使用したい場合、ステータスバーに警告三角形が表示されます。その場合、検証、コード補完、ホバーなどのスキーマベースの機能は制限されます。

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

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

このイテレーションでは、多くのオプションのサポートを拡張しました。
- --goto特定の行でファイルを開く
- --diff2つのファイルを比較する
- --waitファイルが閉じるのをプログラムが待機する
- --add現在のワークスペースにフォルダを追加する
GitHub Codespacesでは、たとえば、ブラウザベースのVS CodeをGitのエディタとして使用できるようになります。

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

アカウント管理
以前のリリースでは、設定同期機能のプレビューとともに、新しいアカウント管理UIのプレビューを導入しました。このUIはデフォルトで表示されるようになりました。新しい提案された認証プロバイダーAPIを使用する拡張機能は、ここにサインイン要求を表示でき、アカウントを表示して拡張機能へのアクセスを管理できます。現在、このAPIを使用している拡張機能は限られており、APIが安定したら採用を増やすように取り組んでいきます。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
設定の同期
この数ヶ月間、VS Codeの設定をマシン間で同期するサポートに取り組んできました。この機能は、Insidersリリースでプレビューとして利用できます。
今回のマイルストーンでは、設定同期の管理と診断のサポートを強化しました。
同期済みマシンビュー
VS Codeの設定を同期しているマシンのリストを表示する同期済みマシンビューを追加しました。使用しているVS Codeのタイプ(InsidersまたはStable)とプラットフォームに基づいてデフォルトの名前が提供されますが、ビューのマシンエントリで利用できる編集アクションを使用して名前をいつでも更新できます。

テーマ: GitHub Sharp (カスタマイズ付き)
コマンドパレットから設定同期: 同期データを表示コマンドを使用してこのビューを開くことができます。
同期済みデータビュー
同期済みデータビューに以下の機能強化を追加しました。
- データの同期元マシンを表示できるようになりました。
- ビューのデータエントリで利用できる復元アクションを使用して、特定の状態に復元できます。
- ビューヘッダーのその他のアクション(...)ボタンの下にある同期データをリセットアクションを使用して、クラウド上のデータをリセットできます。

テーマ: GitHub Sharp (カスタマイズ付き)
異なるマシンからのデータと同期しようとしているかどうかを確認し、適切なアクションを取れるようにすることで、同期を有効にする際のサポートを強化しました。
- ローカルを置き換える - 現在のマシンのデータをクラウドから同期されたデータで置き換えます。
- マージする - 現在のマシンのデータをクラウドから同期されたデータとマージします。
- 同期データを表示 - 同期データビューを開いて、クラウドから同期されたデータを表示します。

新しいJavaScriptデバッガー
今月も新しいJavaScriptデバッガーの開発を継続しました。5月中旬以降、これはInsidersのデフォルトデバッガーとなり、このリリースではVS Code Stableに同梱されています(ただし、デフォルトでは有効になっていません)。debug.javascript.usePreview設定を有効にすることで、既存の起動構成で使い始めることができます。
今月の進捗は主に既存機能の洗練と安定化に重点が置かれました。
- ブラウザデバッグのマルチタブサポート: ブラウザやウェブビューを実行する際、複数のタブにアタッチできるようになりました。デフォルトでは、js-debugはurlFilterに一致するすべてのタブにアタッチします。ブラウザにアタッチする際、起動構成で"targetSelection": "pick"を設定することで、以前のデバッガーと同様に単一のタブに接続できます。
- タブの曖昧さ解消の改善: デバッグセッション名が複数のタブをより正確に曖昧さ解消するようになりました。さらに、コールスタックビューのデバッグセッションのコンテキストメニューにタブにフォーカスアクションを追加しました。これを使用して、正しいページを見ていることを確認できます。
- ゲッターを自動展開するオプション: Chromeの動作に合わせて、VariablesビューまたはDebug Consoleに表示されるプロパティゲッターは、デフォルトでは評価されません。debug.javascript.autoExpandGettersオプションを設定することで、この動作を構成できるようになりました。
- webpackバンドルタイプのパフォーマンス改善: 特定のタイプのwebpackバンドル、特にevalソースマップでビルドされたものは、js-debugで遅く実行されていました。これらはもはやそうではありません。
TS 4.0 ナイトリービルドのサポート
VS Code 1.46には、TypeScript 4.0 ナイトリービルドのプレビューサポートが含まれています。ナイトリービルドには、リファクタリングのためのより柔軟な選択など、現在積極的に取り組んでいるいくつかの新しいツール機能のサポートが含まれています。
TypeScript Nightly拡張機能をインストールすることで、今日からTypeScript 4.0 ナイトリービルドを試すことができます。フィードバックを共有し、TypeScript 4.0でバグが発生した場合はお知らせください。
拡張機能への貢献
ノートブック
クイックアウトライン
GitHub Issue NotebooksのようなNotebook拡張機能が、クイックアウトラインをサポートするようになりました。kb('workbench.action.gotoSymbol')を押すか、「エディターでシンボルに移動」コマンドを使用して、現在のNotebookのすべてのMarkdownおよびコードセルをプレビューできます。

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

テーマ: GitHub Theme
セルの結合/分割
セルをすばやく結合したり、小さな断片に分割したりするための2つのコマンドセットを導入しました。

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

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

テーマ: GitHub Dark Theme
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能の開発が続いており、これによりプルリクエストやイシューの作業、作成、管理が可能になります。今回のリリースでのいくつかの更新には以下が含まれます。
- イシューホバーのラベルを改善。
- イシューとユーザーの提案はコメントとプレーンテキスト内でのみトリガーされるようになりました。
- 新しいイシューエディターで担当者とラベルを設定できるようになりました。
すべての新機能と更新の詳細については、拡張機能の0.17.0の変更ログ全体をご覧ください。
リモート開発
リモート開発拡張機能の作業が続けられています。これにより、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
1.46の新機能には以下が含まれます。
- Dev Containers: GPG転送のサポート。
- Dev Containers: Dockerボリュームの検査をサポート。
- Dev Containers: 新しいdevcontainer.jsonコマンドプロパティ。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートをご覧ください。
Hexエディター
バイナリエディターのサポートを伴うカスタムエディターAPIが完成したことで、ネイティブの16進編集体験を提供するために16進エディター拡張機能を開発しました。

この拡張機能はまだ開発中であり、現在、ファイルを16進数として開いてナビゲートすることのみをサポートしています。ナビゲーション体験の改善を続け、その後編集のサポートに進む予定です。拡張機能を試してフィードバックを提供したり、vscode-hexeditorリポジトリに対して問題を提出したりできます。
拡張機能作成
ファイルパスの大文字と小文字
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を介して、アクティブな入力オプションのフォアグラウンドカラーを設定できます。これらは、検索ビューと検索ウィジェット(エディター、ターミナル、デバッグコンソール)に表示されます。

テーマ: GitHub Dark Theme
新しいcodiconアイコン
codiconライブラリに以下の新しいアイコンが追加されました。
- server-process
- server-environment
- record
- pass
- stop-circle
- play-circle

テーマ: GitHub Dark Theme
プロバイダーはジェネリック型を使用する
vscode.d.tsの型定義が、すべての2段階プロバイダー(個別の「提供」と「解決」メソッドを持つもの)をジェネリックにしました。これは、「提供」呼び出しの結果が「解決」呼び出しに渡されることをより明確にすることを目的としています。
たとえば、以下はDocumentLinkProviderの新しいジェネリック定義です。
export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;
  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}
すべてのプロバイダはデフォルトのジェネリック引数を持っているため、この変更が既存の拡張機能でエラーを引き起こすことはありません。以前に「解決」を実装する際にキャストや型チェックを使用していた場合は、代わりにジェネリックプロバイダを使用するようにコードを更新することを検討してください。
class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {
  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }
  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}
ウェブビューでのテーマ固有CSSの記述
ウェブビューのbody要素に、現在アクティブなテーマのフルネームを格納するvscode-theme-nameという新しいデータ属性が追加されました。これにより、ウェブビューでテーマ固有のCSSを記述できるようになります。
body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}
VS Codeで利用可能なテーマの数を考えると、テーマ固有のCSSは例外的な場合にのみ記述すべきであることを覚えておいてください。通常のウェブビューは、代わりに.vscode-lightと.vscode-darkのクラス名に加えて、VS Code CSS変数を使用して、ユーザーが選択するテーマに適応するCSSを記述する必要があります。
カスタムバイナリエディター
カスタムバイナリエディター用のAPIを完成させました。カスタムエディターAPIは、拡張機能がVS Codeのデフォルトのテキストエディターを置き換えるか、ユーザーが切り替えられるカスタムのウェブビューベースのエディターを作成することを可能にします。これは、画像や3DモデルなどのアセットファイルをVS Code内で直接プレビューしたり、特定のファイルタイプ向けに特化した編集インターフェースを構築したりするのに使用できます。新しいバイナリカスタムエディターAPIを使用すると、テキストベースではないファイル形式の読み書きエディターも構築できるようになりました。

カスタムエディター拡張機能ガイドでは、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
新しい命令ブレークポイント
新しい「命令」ブレークポイントタイプが追加され、メモリアドレスの命令でブレークできるようになりました。メモリアドレスは、evaluate、variables、stackTrace、およびgotoTargetsリクエストからオプションで利用できるシンボリック形式で指定されます。対応する機能supportsInstructionBreakpointsは、デバッグアダプターが命令ブレークポイントをサポートしているかどうかを示します。
「ステップ粒度」のサポート
ステップ要求next、stepIn、stepOut、stepBackに、要求が「ステートメント」、「行」、または「命令」をステップするかを制御する新しいオプションのgranularity引数が追加されました。対応する機能supportsSteppingGranularityは、デバッグアダプターがこの機能をサポートしているかどうかを示します。
提案された拡張API
各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能のpackage.jsonファイルに次の行が必要です:"enableProposedApi": true。
- 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。
提案APIを使用する拡張機能は公開できないことに注意してください。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊したくありません。
Git拡張機能API
組み込みのGit拡張機能は、拡張機能が使用するためのAPIを提供しています。既存のAPIは、Repositoryのlog結果を取得する方法を公開していました。更新されたAPIでは、logをpathで制約できるようになります。
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[]>;
}
AccessibilityInformation
スクリーンリーダーをサポートするために、TreeItem、StatusBarItem、およびTimelineItem要素にAccessibilityInformationを追加しました。AccessibilityInformationにはlabelとroleが含まれます。labelはスクリーンリーダーによって読み上げられ、roleは要素のアクセシビリティ特性を記述します。
エンジニアリング
Windows ARM64 Insiders
ARM 64ビット版Windows向けに新しい公式Insidersビルドが、Insidersダウンロードページで利用可能です。
これらのビルドはMicrosoft Surface Pro Xで動作しますので、ぜひお試しいただき、ご意見をお聞かせください。

問題診断のための--crash-reporter-directory引数
新しいコマンドライン引数--crash-reporter-directoryを使用すると、クラッシュレポートを保存したいローカルフォルダを渡すことができます。これは拡張機能ホストでのクラッシュでも機能し、VS Codeがクラッシュして問題を報告したい場合にいつでも使用できます。
プリロードスクリプト
特定のElectron APIをウィンドウに公開するために、VS CodeにElectronのpreloadスクリプトを追加しました。これは、完全にサンドボックス化されたウィンドウに向けた最初のステップの1つです。進捗はissue #92164で概説されています。
拡張機能のサンプルがESLintを使用するように
私たちの拡張機能サンプルはすべて、非推奨となったTSLintの代わりにESLintをリンティングに使用するように更新されました。もしあなたの拡張機能がまだTSLintを使用している場合は、TSLintからESLintへの移行ガイドと、新しく更新された拡張機能サンプルを参考に、ESLintへの移行方法をご確認ください。
GitHub Triage Extension
私たちは、Chromiumベースのブラウザ向けに、アサイニー、ラベル、マイルストーン、およびトリアージGitHub Actionsをトリガーするために使用する様々な特別なコメントの単一のファジーフィルター可能なメニューを提供することで、GitHubでのイシュートリアージを支援する拡張機能を作成しました。コードはGitHubでオープンソース化されています。

ドキュメントと拡張機能
BuildでのVisual Studio Code
VS CodeチームはMicrosoft Build 2020カンファレンスで発表し、VS Codeセッションとオンライン講演の概要は、このBuildでのVS Codeブログ投稿で確認できます。
VS Codeチームメンバーによるいくつかの講演
- VS Codeのヒントとテクニック - VS Codeで生産性を向上させる20のヒントとテクニック。
- すべてのVisual Studio Codeユーザーが知っておくべきGitHubについて - VS CodeのPRとイシューのGitHub統合について学びましょう。
- Visual Studio Codeによるリモート開発 - Visual Studio Codeが開発者がどこからでもリモートで作業できるようにする方法を学びましょう。
- Visual Studio Codeの歴史 - VS Codeがどのように始まり、今日まで進化してきたかについて学びましょう。
Azure拡張機能
VS Code内から直接Azureアセットを操作およびデプロイするためのいくつかの新しい拡張機能があります。
- Azure静的Webアプリ - VS Codeから直接Azure静的Webアプリを作成および管理します。
- Azureデータベース - Azureでグローバルに分散されたマルチモデルデータベースを作成、参照、更新します。

新しいコマンド
| キー | コマンド | コマンドID | 
|---|---|---|
| ⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) | エディターをピン留めする | workbench.action.pinEditor | 
| ⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) | エディターのピン留めを解除する | workbench.action.unpinEditor | 
注目すべき修正点
- 10144: Linuxでsystem-uiをフォントとして使用する
- 63068: macOSドックアイコンが小さすぎる
- 69163: サイドバーでアクティブなファイルを公開すると例外がスローされる
- 95367: 無効なframeIdに対して発行されたDAP「評価」リクエスト
- 95856: 行へ移動に「filename.extension:line number」形式を含めるべき
- 96713: コールスタックアクションビューからのセッション停止が常にアクティブセッションに移動する
- 96914: アウトラインが表示されているとき、タイピングが遅れる
- 96987: Orcaがブレークポイントビューの行番号を読み上げない
- 97444: デバッグ監視から長い値をコピーすると、部分的な値が貼り付けられる
- 97471: デバッグホバーが狭すぎて横方向スクロールが無意味
- 97731: タイプ入力とスクロール時にVS Codeがフリーズする
- 96643: onDid(Start|End)Taskコールバックでタスク(およびTaskExecutions)が===ではない
ありがとうございます
最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
vscodeへの貢献者
- AlexStrNik (@AlexStrNik)
- Andrew Branch (@andrewbranch): 提案: TS Serverを--inspect-brkで起動できるようにするPR #98340
- Christos Pappas (@ChrisPapp)
- @D-to-the-K: Monaco Monarch言語定義におけるUnicode対応正規表現のサポートPR #98447
- Rick van Galen (@DCKcode): ContainerfileのサポートPR #93184
- Paul (@DFineNormal): snippets.contribution.tsのスペルミスを修正PR #98396
- matt penrice (@elmpp): スキーム付きファイルパス用のVsCodeResourceを作成PR #94986
- HaoboGu (@HaoboGu): #98102を修正PR #98127
- HiDeoo (@HiDeoo): vscode.d.tsのtypoを修正PR #98692
- Ilia Pozdnyakov (@iliazeus): 追加:line goto pattern #95856 PR #96535 
- Andrii Dieiev (@IllusionMH): デバッグアイコンを修正。テキストではなくCodiconsを使用PR #98716
- Jack Works (@Jack-Works): typescript.code-snippetsを更新PR #98521
- @Jagua: json-language server readmeのインデントとtypoを修正PR #97812
- Jānis Gailis (@JanisGailis): Monokai Dimmedテーマにターミナルカラーを追加PR #98323
- Jean Pierre (@jeanp413)
- パンくずリストが表示されているときにタブを切り替えるとエディターの高さが間違っていたのを修正PR #97502
- ワークスペースファイルに起動構成を作成するオプションを追加PR #97321
- 新しいファイル/フォルダーを編集中に「フォルダーを折りたたむ」アクションをクリックした後、エクスプローラーに空のアイテムが表示される問題を修正PR #96853
- ワークスペースレベルのタスクにキーバインディングを割り当てても機能しない問題を修正PR #97380
- flipNode中にレイアウトを呼び出すのを避けるPR #92004
- デバッグドロップダウンでdropdown.backgroundカラーを使用するPR #96576
- デバッグドロップダウンコンテナでdropdown.backgroundカラーを使用するPR #96996
 
- John Keech (@jkeech): ウェブビューの古いCSSスタイルプロパティをクリアするPR #96665
- John Blackbourn (@johnbillion): *.ts.mapファイルをJSONとして扱うPR #98409
- Robert Jin (@jzyrobert): #84696 git add/revertをsplitInChunksを使用するように変更PR #84843
- Danny Lin (@kdrag0n): macOSのダークテキスト選択カーソルを復元し修正PR #96947
- Leila Pearson (@leilapearson): エクスプローラーでのファイル名ソート順の特殊ケースを修正。PR #97200
- Lissein (@lissein): titleBarテーマカラーのコメントを修正PR #97360
- Max (@MaxGyver83): Neoキーボードレイアウト(レイヤー4)の矢印キーがエクスプローラービューで機能するようにするPR #98269
- Alasdair McLeay (@penx): CSS - nodeモジュール解決のために親フォルダーを検索するPR #81555
- Pieter Vanderpol (@petevdp): インライン差分エディターを中央寄せできるようにする。PR #97311
- Pascal Fong Kye (@pfongkye): fix: 新しいコマンド stageAllMerge PR #97349
- James Koss (@phuein): ファイルを公開する際にスクロールしないオプション。PR #96890
- Jack Platten (@plttn): スペルミスを修正PR #97198
- @ricksentam: ビルドを変更PR #98857
- Robert Rossmann (@robertrossmann)
- shskwmt (@shskwmt): 機能 #94173: 提案を挿入するときにスクロールするPR #94327
- Steven Hermans (@steven166): ブラウザワークベンチでD&DによるフォルダーのアップロードPR #97347
- Rahul Kadyan (@znck): feat: 他の拡張機能の言語プロバイダ登録にconfigNamespaceを使用するPR #95621
- Jakub Trąd (@Dzejkop): 検索エディター: デフォルトのコンテキスト値プロパティを追加PR #97920
language-server-protocolへの貢献者
- (@KamasamaK)
- Knut Aldrin (@zub): 「aritfacts」のスペルを修正PR #980
- Remy Suen (@rcjsuen): 「revers」を「reverse」にtypo修正PR #995
- Steven Kalt (@SKalt): スティッキーテーブルヘッダーを使用するPR #1000
vscode-generator-codeへの貢献者
- Alexey Elizarov (@beautyfree): fix: ダークテーマの無効なjsonPR #207
vscode-vsceへのコントリビューション
- Owen Farrell (@owenfarrell): 環境変数からPATを注入するサポートPR #447
debug-adapter-protocolへの貢献者
- @auott
- Vitalii Akimov (@awto): adapters.mdにおけるEffectful JavaScriptデバッガー参照PR #113
- @tomcec: adapters.mdを更新PR #115
- Andrew Wang (@WardenGnaw): C/C++ DAPメンテナーを更新PR #117
- FW (@fwcd): Kotlin Debug Adapterを追加PR #120
vscode-js-debugへの貢献者
- Vadym Okun (@cbmd): npmのみでなく、選択したパッケージマネージャーで実行する機能を追加しました。PR #459
localizationへの貢献
この1年間、皆様からのフィードバックに真摯に耳を傾け、より信頼性が高くインタラクティブなプラットフォームを提供し、VS Codeのローカライズ開発に貢献できるようにすべきだと判断しました。このことを念頭に置き、オープンソースのローカライズプロジェクト向けの代替プラットフォームでMicrosoftコミュニティローカライズプログラムを継続する意図で、Microsoft Localization Community Platform(MLCP)を4月の第1週に正式に廃止しました。
新しいコミュニティプラットフォームに関する発表については、数週間以内にWikiページにご注目ください。このプラットフォーム移行に関する疑問については、FAQページもご覧ください。