2022年1月(バージョン 1.64)

アップデート 1.64.1: このアップデートでは、以下のセキュリティ問題に対処しています。

アップデート 1.64.2: このアップデートでは、以下の問題に対処しています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap


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

これらのリリースノートをオンラインで読むには、更新情報code.visualstudio.com内)をご覧ください。

VS Code チームのリリースパーティーで、このバージョンの新機能のハイライトをご覧ください。イベントの録画は、YouTubeチャンネルでご覧いただけます。

Insiders: 最新機能をいち早く試したいですか?毎晩更新されるInsidersビルドをダウンロードして、最新のアップデートをすぐにお試しください。

ワークベンチ

新しいサイドパネル

今回のマイルストーンでは、サイドバーまたは下部パネルのビューを配置できる、サイドバーの反対側のワークベンチの新しい領域であるサイドパネルを導入しました。下部パネルをエディターの左右に移動するのとは異なり、新しいサイドパネルは下部パネルに加えて機能するため、より多くのビューセットを一度に表示できます。

サイドパネルを使用するには、いくつかのビューをサイドパネルに移動する必要があります。最も投票数の多い機能リクエストの1つに基づいて、アウトラインビューをサイドバーからサイドパネルに移動したい場合があります。これを行うには、ビューをサイドパネルにドラッグアンドドロップします。サイドパネルが開いていない場合は、下部パネルと同様に、ビューをエディター領域の端にドラッグすると、サイドパネルがポップアップ表示されます。

以下の短いビデオでは、アウトラインビューが右にドラッグされ、ドロップされてサイドパネルが作成されます。ユーザーは、サイドバーでビューを切り替え(ここではグローバル検索ビューを開いています)、アウトラインビューを表示したままにすることができます。

または、コマンドパレットからビューの移動コマンドを使用することもできます。これにより、利用可能なビューのドロップダウンが表示されます。ビューを選択すると、新しいパネル/サイドバー/サイドパネルエントリを作成するか、エクスプローラーやソース管理などの既存の場所にビューを配置することで、場所を選択できます。

Move View command view locations dropdown

ビューアイコンをつかむことで、パネル、サイドバー、サイドパネル間でビューをドラッグアンドドロップできます。ビューの場所をデフォルトに戻すには、ビューアイコンを右クリックして場所のリセットを選択します。

View context menu with Reset Location command

すべてのビューをデフォルトレイアウトに戻したい場合は、コマンドパレットから表示: ビューの場所をリセットを実行できます。

パネルの場所の置き換え

上記のように、新しいサイドパネルは、パネルを左右に移動するのと同様の機能を提供しますが、元のパネルの内容全体を移動しないことで改善されています。パネル間のビューのドラッグアンドドロップに加えて、新しいサイドパネルは下部パネルを移動するオプションに代わるものです。

それを踏まえ、workbench.panel.defaultLocation設定と、同様のコマンドを優先してパネルの移動コマンドを非推奨にしました。

  • パネルからサイドパネルへビューを移動 (workbench.action.movePanelToSidePanel)
  • サイドパネルからパネルへビューを移動 (workbench.action.moveSidePanelToPanel)

古いパネルの移動コマンドは、同様の動作を提供する新しいコマンドに再マップされました。このマッピングを使用しても、キーバインドを新しいコマンドに更新することをお勧めします。

以下では、下部パネル全体がサイドパネルに移動され、元のパネルの場所に戻されます。

パネルの配置

もう1つの人気のある機能リクエストに対応して、パネルの配置という新しいレイアウトオプションを追加しました。このオプションを使用すると、下部パネルがウィンドウ全体にどれだけ広がるかを構成できます。4つのオプションがあります。

  • 中央 - これは従来の動作です。パネルはエディター領域の幅のみに広がります。
  • - パネルはウィンドウの左端からエディター領域の右端まで広がります。
  • - パネルはウィンドウの右端からエディター領域の左端まで広がります。
  • 両端揃え - パネルはウィンドウの全幅に広がります。

すべてのオプションで、アクティビティバーがウィンドウの端と見なされることに注意してください。

これらのオプションは、メニューの表示 > 外観 > パネルの配置、または新しいパネルの配置を設定...コマンドを使用して構成できます。

レイアウトコントロールのカスタマイズ

これらの新しいレイアウトオプションにより、検出可能性と使いやすさのためにレイアウト構成をより適切に公開する方法を検討してきました。そのため、タイトルバーに新しい実験的なレイアウトの構成ボタンが表示される場合があります。これは、window.titleBarStyle設定がcustom(WindowsおよびmacOSのデフォルト)であり、workbench.experimental.layoutControl.enabledtrueに設定されている場合にのみ表示されます。ボタンの表示は実験によって制御されていますが、手動で有効にしたい場合は、設定エディターでこれらの設定値を適用することで有効にできます(⌘, (Windows, Linux Ctrl+,))。

Configure Layout button on the title bar

メニューの内容はまだ作業中ですが、現在、サイドバー、パネル、サイドパネルの切り替え機能が表示されるはずです。さらに、新しいコマンドレイアウトのカスタマイズのエントリが表示されます。この新しいコマンドは、1か所でレイアウト構成のすべての側面を制御できる新しいインタラクティブなクイックピックエクスペリエンスをトリガーします。

お試しいただき、issue #137633でフィードバックをお寄せください。

設定エディター

設定エディターの検索で、文字列および列挙設定で文字列値の一致が検索されるようになりました。

Settings editor pulling up results where the enum value matches the query

新しい検索アルゴリズムでは、単語全体の一致も優先されます。つまり、Java拡張機能とJavaScript拡張機能の両方がある場合、「java」を検索すると、Java設定が最初に表示されます。

Settings editor search showing Java results before JavaScript ones when searching "java"

最後に、設定エディターのドロップダウン(files.autoSaveなど)およびリストウィジェット(files.associationsなど)がタッチスクリーンデバイスで動作するようになりました。

設定の同期

設定の同期で、ユーザータスクの同期がサポートされるようになりました。

Settings Sync User Tasks

デフォルトの設定の同期マシン名に、VS Code for the Web のブラウザー名と製品名が含まれるようになりました。

Settings Sync default machine name including browser and product names

エクスプローラー: 元に戻すの確認と無効化

ファイルエクスプローラーは、ファイルとフォルダーの編集(名前変更、切り取り/コピー/貼り付け、移動、インポートなど)を元に戻すための元に戻すスタックを長らくサポートしてきました。一部のユーザーは、この機能が予期しないものであると感じているため、エクスプローラーで元に戻すを無効にする設定(explorer.enableUndo)が追加されました。

さらに、新しい設定(explorer.confirmUndo)が追加され、元に戻す操作を実行するときにエクスプローラーが確認を求める頻度を構成できるようになりました。デフォルトでは、破壊的な元に戻す操作が誤って発生しないように、エクスプローラーは以前よりも頻繁にプロンプトを表示しますが、これを古い動作である"light"値に変更したり、すべての元に戻す操作の前にプロンプトを表示する"verbose"に設定したりできます。

エディター

オーディオキュー

オーディオキューは、現在の行にエラー、ブレークポイント、折りたたまれたテキストリージョンなどの特定のマーカーがあるかどうかを示します。

オーディオキューは、プライマリカーソルの行が変更されたとき、またはマーカーが現在の行に最初に追加されたときに再生されます。オーディオキューは、スクリーンリーダーが接続されている場合は自動的に有効になりますが、audioCues.enabledonに設定することで手動で有効にすることもできます。

今後、さらに多くのオーディオキューが追加され、サウンドデザインを繰り返していく予定です。

Unicodeの強調表示の改善

11月のリリースで導入されたUnicodeの強調表示機能を改善するために、誤検出に対処するための新しい設定が追加されました。

新しい設定editor.unicodeHighlight.allowedLocalesを使用すると、構成された1つまたは複数のロケールで一般的な文字を許可できます。デフォルトでは、これには現在のVS Code表示言語と現在のOS言語が含まれます。現時点では、vscode-loc言語パックで翻訳されたロケールのみがサポートされています。

設定editor.unicodeHighlight.includeStringsは、文字列内の文字を強調表示するかどうかを制御します。値はデフォルトでtrueですが、文字列を無視するためにfalseに設定できます。

エディターの折りたたみ制限

新しい設定editor.foldingMaximumRegionsを使用すると、エディターに表示される折りたたみ範囲の最大数を変更できます。デフォルトでは、制限は5000です。数値を大きくすると、パフォーマンスが低下する可能性があることに注意してください。

エディターは言語機能のタイミングに適応

拡張機能は、折りたたみリージョン、CodeLens、インレイヒント、セマンティックトークンなどの組み込み機能を含む、ほぼすべての言語機能を強化します。これらの機能は、ユーザーのジェスチャーによってトリガーされるのではなく、通常はタイムアウト後に、入力によってトリガーされます。たとえば、CodeLensは入力時に更新され、セマンティックトークンも同様です。選択されたタイムアウト値は固定されており、多かれ少なかれ恣意的でした。このリリースでは、エディターは観測されたタイミングに適応するため、低速なマシンやネットワーク接続がリクエストで圧倒されることなく、高速なマシンがより有効に活用されます。

ターミナル

自動応答

ターミナルに、特定の文字シーケンスを受信したときに自動的に応答するオプトイン機能が追加されました。これが役立つ良い例は、バッチスクリプトを実行中にCtrl+Cを押した後WindowsバッチスクリプトメッセージTerminate batch job (Y/N)?です。WindowsでCtrl+Cを押したときにターミナルが自動的にYと入力(\r)で応答するようにするには、次の設定を追加します。

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)?": "Y\r"
}

テーマ: Sapphire

他のものに対してカスタム応答を設定できますが、テキストをプロセスに自動的に送信するため、これを行うときは注意してください。たとえば、プロンプトが表示されたときにOh My Zshを自動的に更新するために使用できます。

"terminal.integrated.autoReplies": {
  "[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}

Clinkを使用し、同様の機能を有効にしている場合は、2つの機能が競合するのを避けるために、ClinkまたはVS Codeで応答をnullに設定して無効にすることができます。

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)": null
}

拡張VTサポート

オペレーティングシステムコマンド (OSC) 4/10/11/12 エスケープシーケンスのサポートが追加され、アプリケーションがターミナルのテーマカラーを制御できるようになりました。

以前は、ターミナルでのリンクナビゲーションにはマウスの使用が必要でした。現在、リンクは次のコマンドを使用してキーボードのみで開くことができます。

  • ターミナル: 最後のWebリンクを開く... 例: https://github.com/microsoft/vscode
  • ターミナル: 最後のファイルリンクを開く... 例: /Users/user/repo/file.txt
  • ターミナル: 検出されたリンクを開く... すべてのリンク(Web、ファイル、単語)を表示します。

A Quick Pick is displayed with link results of type web, word, and file.

ソース管理

リポジトリ検出のより詳細な制御

コミュニティからのフィードバックに基づいて、Gitリポジトリの検出プロセスをより適切に制御し、より多様なフォルダー構造に対応するための2つの新しい設定があります。

  • git.repositoryScanMaxDepth - スキャン時に使用する深さを制御します。
  • git.repositoryScanIgnoredFolders - スキャン中に無視する必要があるフォルダーのリストを制御します。

変更リストのソートの改善

新しい設定(scm.defaultViewSortKey)は、ソース管理ビューの変更リストに使用されるデフォルトのソートキーを制御します。ソートキーの選択は、フォルダー/ワークスペースごとに記憶されます。

オプションは次のとおりです。

  • name - ファイル名で変更をソートします。
  • path - ファイルパスで変更をソートします(デフォルト)。
  • status - ソース管理ステータスで変更をソートします。

設定の変更を適用するには、VS Codeウィンドウをリロードする必要があります。

新しいGit stashコマンド

コマンドパレットに新しいコマンドGit: すべてのStashを削除...が追加され、ユーザーはすべてのstashエントリをクリアできます。永続的な結果をもたらすGit操作と同様に、このコマンドは注意して使用してください。

Git出力 - gitコマンドの実行時間と期間

パフォーマンスの問題を追跡するために、Git出力チャネルに、gitコマンドが実行された時刻と、子プロセスの生成にかかった時間を除くコマンドの期間が表示されるようになりました。

ノートブック

レンダリングされたMarkdownおよびコードセル出力でテキストを検索

VS Codeは、Markdownセルとコードセルの出力のレンダリングされたビューでのテキスト検索をサポートするようになりました。この機能は、すべてのMarkdownセルと出力をレンダリングする必要があるため、デフォルトでは無効になっています。これは、ノートブックを開くときにコストがかかる可能性があります。この機能をオンにするには、検索コントロール入力ボックスのフィルタードロップダウンからオプション(Markdownプレビューコードセル出力)を選択します。

現在、出力でテキストを検索する場合、いくつかの制限があります。たとえば、VS Code自体によってレンダリングされたストリーミング/テキスト出力を検索することはできません。次のイテレーションでこれを改善する予定です。

セルの折りたたみUI

ノートブックセルには、フォーカスされていることを示す青いバーが左側にあります。このバーはインタラクティブになりました。上部をクリックするとセル入力を折りたたむことができ、下部をクリックすると出力を折りたたむことができます。

Markdownセルの折りたたみヒント

Markdownセルのリージョンが折りたたまれている場合、一部のセルが非表示になっていることをより明確にするために、折りたたまれたセルの数がメッセージで表示されます。

Folded Markdown cell hint

セルの実行ヒント

セルが実行中である場合、およびどのセルが実行中であるかをよりわかりやすくするために、いくつかの変更を行いました。

まず、セルが実行中であるが、ビューにスクロールされていない場合、エディターペインの上部にプログレスバーが表示されます。

次に、セルが実行中の場合、ノートブックツールバーに新しいボタン実行中のセルに移動が追加されます。

第三に、notebook.outline.showCodeCellsおよびnotebook.breadcrumbs.showCodeCells設定を介してコードセルがアウトラインまたはブレッドクラムに表示される場合、実行中はアニメーションの実行アイコンが表示されます。

デバッグ

バイナリデータの表示と編集

VS Codeの汎用デバッガーは、バイナリデータ(別名「メモリ」)の表示と編集をサポートするようになりました。メモリの表示と編集が可能な変数は、変数ビューにインラインバイナリアイコンを表示し、それを選択するとHex Editorが開きます。

Binary data shown for a variable during a debug session

テーマ: Codesong

メモリの表示と編集は、デバッグアダプタープロトコルのメモリ関連機能に依存しており、デバッグ拡張機能はVS Codeで対応するUIを有効にするためにこれらの機能を実装する必要があります。詳細については、以下のデバッガー拡張機能の作成のセクションを参照してください。このリリースでは、組み込みのJavaScriptデバッガーのみがバイナリデータの表示と編集をサポートしていますが、他のデバッグ拡張機能もすぐに続く予定です。

JavaScript デバッグ

ブレークポイントで一時停止する呼び出し元を除外

ブレークポイントを設定したり、デバッガーステートメントを追加したりする場合がありますが、特定のコードパスから呼び出された場合にのみ一時停止したい場合があります。DOMイベントハンドラー(mousemoveなど)は、これの良い例です。このリリースでは、JavaScriptデバッガーに、ブレークポイントまたはデバッガーステートメントで一時停止する「呼び出し元を除外する」機能が追加されました。

場所で一時停止しているときに、呼び出し履歴ビューのフレームを右クリックし、呼び出し元を除外コマンドを選択できます。新しい除外された呼び出し元ビューが表示され、除外された呼び出し元を表示および管理できます。その後、除外された呼び出し元が呼び出しスタックのどこかに表示される場合、プログラムはブレークポイントの場所で一時停止しなくなります。

Linux での Edge サポート

Microsoft Edge デバッグが、edge デバッグタイプを介して Linux で利用できるようになりました。

言語

Markdown パス IntelliSense

組み込みの Markdown 拡張機能に、リンクと画像のパス IntelliSense が含まれるようになりました。

Path suggestions in a Markdown link

パスの候補は、CSS および HTML ファイルのパス IntelliSense と同様に機能します。/ で始まるパスは現在のワークスペースを基準に解決され、./ で始まるパスまたはプレフィックスのないパスは現在のファイルを基準に解決されます。パスの候補は、/ を入力すると自動的に表示され、⌃Space (Windows, Linux Ctrl+Space) を使用して手動で呼び出すこともできます。

パス IntelliSense は、現在のファイルまたは別の Markdown ファイル内のヘッダーへのリンクにも役立ちます。パスを # で開始すると、ファイル内のすべてのヘッダーの補完が表示されます(設定によっては、⌃Space (Windows, Linux Ctrl+Space) を使用する必要がある場合があります)。

Header section suggestions in a Markdown link

パス IntelliSense は、"markdown.suggest.paths.enabled": false で無効にできます。

Markdown の取り消し線サポート

VS Code は、Markdown エディターと組み込みの Markdown プレビューの両方で ~~取り消し線~~ テキストのレンダリングをサポートするようになりました。

Strikethrough rendering the Markdown editor and preview

取り消し線は、テキストを 2 つのチルダ文字で囲むことによって記述されます。

VS Code の組み込みテーマはすべて取り消し線をサポートしていますが、Marketplace の一部のテーマでは、エディターで取り消し線テキストを適切にレンダリングするために更新が必要な場合があります。

TS 4.5.5

VS Code に TypeScript 4.5.5 がバンドルされるようになりました。

このマイナーアップデートでは、いくつかの重要なクラッシュとツールバグが修正されています。

JS/TS のスニペットで囲む

JavaScript および TypeScript スニペットの多くが、選択したテキストを囲むことをサポートするように更新されました。

囲む機能を使用するには、最初にテキストを選択し、次にスニペットの挿入を実行します。選択したテキストを置き換える代わりに、ifforof などのスニペットは、選択したテキストを新しいステートメントの本文として使用するようになりました。

HTML で等号の後に引用符を自動挿入

HTML のプロパティの後に = を入力すると、言語サービスは引用符を自動的に挿入し、カーソルを引用符の間に配置するようになりました。設定 html.completion.attributeDefaultValue を使用すると、引用符のタイプ(単一引用符または二重引用符)を指定でき、デフォルトでは二重引用符が使用されます。

この機能は、"html.autoCreateQuotes": false を設定することで無効にできます。

JSON スキーマキャッシュのクリアコマンド

新しいコマンドスキーマキャッシュのクリアは、以前にダウンロードしたスキーマのキャッシュをクリアします。

LaTeX サポート

LaTeX の基本的な言語サポートが追加されました。これには、構文の強調表示と自動閉じ括弧が含まれます。

LaTeX snippet

VS Code for the Web

リモートリポジトリ

GitHub リポジトリ

VS Code for the Web で作成されたコミットは、署名され、GitHub UI で検証済みとしてマークされるようになりました。さらに、メンテナーは、VS Code for the Web を使用する場合、フォークから送信されたプルリクエストにコミットできるようになりました。これは、新しい GitHub GraphQL createCommitOnBranch API のおかげです。

さらに、ソース管理ビューで複数選択がサポートされるようになりました。

テーマ: One Monokai

以前は、空のコミットの作成は、GitHub リポジトリをローカルまたはリモートマシンにクローンした後でのみサポートされていました。Web 用 VS Code でGitHub リポジトリ: 空のコミットコマンドを使用して、空のコミットを作成することもできるようになりました。

指定されたサイズ以下のリポジトリのコンテンツ全体を自動的にダウンロードして、リポジトリ全体のテキスト検索や参照に移動などの高度な機能を有効にするための新しい構成も追加されました。設定 remoteHub.experimental.fs.maxAutoDownloadSize は、コンテンツ全体のダウンロードを試行する前にプロンプトが表示されるリポジトリサイズ制限を制御します。デフォルトでは、プロンプトなしでダウンロードしないように、maxAutoDownloadSize は設定されていません。

Azure Repos

Azure Repos のサポートは、GitHub Repositories 拡張機能から独自の専用拡張機能に移行しました。この拡張機能はデスクトップにもインストールできます。

採用されたプレリリース拡張機能

VS Code for the Web に、GitHub Pull Request and Issues および GitHub Repositories 拡張機能の両方のプレリリースバージョンがバンドルされるようになりました。

PWA とオフラインサポート

VS Code for the Web は PWA モデルを採用し、ホスト OS に PWA としてインストールできるようになりました。その採用のおかげで、一部のオフライン機能を有効にすることも可能になりました。vscode.dev または insiders.vscode.dev に一度アクセスしたユーザーは、オフラインでもローカルファイルを編集するために使用できるようになりました。

Install VS Code PWA prompt

拡張機能への貢献

Python

改善されたインタープリタークイックピック

目的のインタープリターをより簡単に選択できるように、Python 拡張機能は、インタープリターを選択クイックピックでインタープリターをタイプ別にグループ化するようになりました。

Interpreters grouped in interpreter picker

また、ステータスバーのアクティブ/選択されたインタープリターを右側、おそらく言語ステータス内に移動することを試みています。表示されていない場合は、右側のPythonステータスを確認してください。

'conda run' のサポートを追加

Anaconda ユーザーのサポートを改善するために、過去にエラーを引き起こしていた出力をキャプチャしない--no-capture-outputパラメーターを使用して、conda runのサポートを実装しました。この機能は、リンター、テスト、およびフォーマット機能を実行するために実装されています。

パラメーターに特殊文字が含まれている場合にWindowsでlintとテストを実行するとエラーが発生する既知のバグissue #10972があります。これは、conda runが特殊文字を含むパラメーターを読み取る方法によるものであり、settings.jsonで指定したコマンドライン引数に影響を与える可能性があります。

Anacondaチームはこの問題に取り組んでおり、すぐに修正プログラムをリリースする予定です。新しいバージョンがリリースされたら、CondaウェブサイトでAnacondaのバージョンを更新できます。

スマート選択とより良い折りたたみサポート

Pylance言語サーバーを介したPythonコードの選択と折りたたみについても改善が行われました。

キーボードを使用してPythonコードを選択すると、コードのセマンティック情報が選択範囲の定義時に考慮されるため、キーストローク数が少なくなります。

テーマ: Horizon Extended

折りたたみに関しては、以前はリージョンはインデントのみで定義されていましたが、複数行文字列などの一部のケースでは理想的ではありませんでした。現在、折りたたみリージョンはセマンティック情報を適切に考慮し、#regionコメントもサポートしています。

Jupyter

リモート Jupyter サーバー

Jupyter 拡張機能では、ローカルとリモートの Jupyter サーバーを切り替えるときに VS Code をリロードする必要がなくなりました。さらに、拡張機能は、カーネルピッカーにローカルカーネルとリモートカーネルの両方を一緒に表示するようになりました。

Hex Editor

Hex Editor は、いくつかの重要なアーキテクチャリファクタリングを受けました。特に、ほとんどの場合、パフォーマンスの問題なしに任意のサイズのファイルを開くことができるようになりました。さらに、レイアウト幅を構成できるようになり、より高性能な検索/置換実装が備わっています。今後のイテレーションで継続的な改善が行われる予定です。

リモート開発

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

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

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の開発が続けられています。これにより、プルリクエストとissueの作成、管理、および作業を行うことができます。ハイライトについては、拡張機能の0.36.0リリース用changelogをご覧ください。

プレビュー機能

ターミナルシェル統合

ターミナルに、実験的なシェル統合機能が追加されました。これにより、VS Codeはターミナル内で何が起こっているかを以前は知ることができなかったインサイトを得ることができます。設定"terminal.integrated.enableShellIntegration": trueを使用して有効にすると、可能な場合は、シェル統合スクリプトを実行するための引数がターミナルプロファイルに注入されます。スクリプト自体は、プロンプトの場所、コマンド、およびコマンド出力、各コマンドの現在の作業ディレクトリ(cwd)、および各コマンドの終了コードなどの情報をVS Codeに提供する非表示のシーケンスを主に注入します。

この情報を使用すると、既存の機能をさまざまな方法で強化できます。

  • cwdをすばやく検出 - 以前は、これはmacOSおよびLinuxでのみ可能であり、その情報を取得するためにプロセスを起動したり、ファイルシステムをクエリしたりしていました。これがWindowsでも機能するようになりました。cwdは、リンク検出やターミナルタブを分割するときにcwdを継承するなどの機能で使用されます。
  • コマンド追跡機能の改善 - この機能は以前から存在していましたが、macOS(Cmd+Up/Down)でのみデフォルトのキーバインドがあり、Enterが押されたタイミングに基づいて行を推測する単純なアプローチを使用していました。

シェル統合により、次の新機能が有効になります。

  • 最近使用したコマンドを実行 - 実行されたコマンドがわかるようになったため、クイックピックで表示して再度実行できるコマンドを公開できます。最近使用したコマンドは、現在の作業ディレクトリと実行されてからの時間に関する情報を含めて、クイックピックに表示されます
  • 最近使用したディレクトリに移動 - 上記と同様に、過去のディレクトリへの移動も許可します。最近使用したディレクトリは、頻度順(降順)にクイックピックに表示されます
  • cwdを基準としたリンクのサポート - ターミナルバッファーの各行のcwdがわかるようになったため、アクティブ化された場所のcwdを基準にしてターミナルでリンクを開くことができます。以前は、リンクがクリックされると、その名前の一致を含むフォルダーの結果を含むクイックピックが開いていました。現在、正確なファイルの一致が開かれます。cwdがvscodeのターミナルで、package.jsonがエコーされます。ファイル名をクリックすると、vscode/package.jsonが開きます。ディレクトリがtemplate-string-converterに変更され、package.jsonがエコーされます。ファイル名をクリックすると、template-string-converter/package.jsonが開きます。

目標は、機能の信頼性が十分に高まった時点で、シェル統合をデフォルトでオンにすることです。引数インジェクションに関して私たちが取っているアプローチは、できる限り非侵入的であることです。たとえば、一部のターミナルのようにシェル初期化スクリプトを自動的に変更するのではなく、プロセスの作成をインターセプトし、引数を検査し、ターミナルがそれらの引数で実行できると確信できる場合は、シェル統合引数を挿入します。目標は、ユーザーが何も設定しなくてもうまく機能するようにし、既存のシェル設定を妨げないようにすることです。

現在サポートされているシェルは、Windows では pwsh、Linux および macOS では pwsh、bash、zsh です。

前述のとおり、これは実験的な機能であり、まだ粗削りな部分があり、既知の問題がいくつかあります。

  • $PS2 行継続はまだサポートされていません。ただし、pwsh の行継続は機能します。
  • 右プロンプトはまだサポートされていません。
  • zsh スクリプトは、時々アクティブにならないことがわかっています。
  • リモート VS Code ウィンドウのサポートは限定的です。

エクスプローラーのファイルの入れ子

エクスプローラーに、同じディレクトリ内のファイルを論理的に入れ子になったレイアウトで表示する実験的なサポートが追加されました。これは、関連ファイルを視覚的にグループ化したり、ファイルを「ルート」ファイルに折りたたんで clutter を減らすのに役立ちます。この動作を制御するために、いくつかの新しい設定が追加されました。

  • explorer.experimental.fileNesting.enabled: ファイルの入れ子を有効にするかどうかを制御します。
  • explorer.experimental.fileNesting.expand: ファイルの入れ子をデフォルトで展開して表示するかどうかを制御します。
  • explorer.experimental.fileNesting.patterns: ファイルをどのように入れ子にするかを制御します。

たとえば、多くのリポジトリでは、.ts ファイルは派生した .js.d.ts、および/または .js.map ファイルの隣にあります。派生ファイルを完全に非表示にすることは files.exclude を使用して以前から可能でしたが、派生ファイルにすばやくアクセスできると便利です。これは、入れ子で可能になりました。

以下は、エクスプローラーがデフォルトの explorer.experimental.fileNesting.patterns 設定を使用して .js および .js.map ファイルを入れ子にしている例です。対応する .ts ファイルが展開されると表示されます。

Explorer with some collapsed and expanded nests

テーマ: GitHub Light

拡張機能の作成

言語のデフォルトアイコン

言語コントリビューターは、言語のアイコンを定義できます。

{
  "contributes": {
    "languages": [
      {
        "id": "latex",
        // ...
        "icon": {
          "light": "./icons/latex-light.png",
          "dark": "./icons/latex-dark.png"
        }
      }
  ]

現在のファイルアイコンテーマにその言語の汎用ファイルアイコンしかない場合、アイコンが表示されます。

また、ファイルアイコンを表示しない MinimalNone などのファイルアイコンテーマは、言語アイコンを使用しません。ファイルアイコンテーマに拡張子またはファイル名のアイコンがある場合、それらが優先されます。

ファイルアイコンテーマは、テーマファイルで showLanguageModeIcons: true|false を定義することにより、新しい動作をカスタマイズできます。

  • showLanguageModeIcons: true は、テーマがファイルアイコンを指定していなくても、デフォルトの言語アイコンを表示します。
  • showLanguageModeIcons: false は、デフォルトの言語アイコンが使用されないようにします。

QuickPickItem セパレーター

拡張機能の作成者は、Quick Pick にセパレーターを追加できるようになりました。これは、アイテムをグループ化したり、アイテム間に少しスペースを追加したりするのに役立ちます。

Quick Pick separators

既存の Quick Pick にセパレーターを追加するには、既存のアイテムリストに新しい QuickPickItem を追加しますが、QuickPickItemkind プロパティを指定して QuickPickItemKind.Separator に設定します。

上記の例では、アイテムリストに次のオブジェクトを追加します。

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

kind プロパティを指定しない場合、または QuickPickItemKind.Default に設定した場合、アイテムは通常の QuickPickItem として扱われます。

vscode.workspace.createFileSystemWatcher が任意のパスをサポートするようになりました

既存の vscode.workspace.createFileSystemWatcher API が改善され、ワークスペースの外部にある場合でも、ファイル監視のために任意のファイルまたはフォルダーパスを渡せるようになりました。以前は、ファイルウォッチャーはワークスペースで開いているフォルダーに限定されていました。

メソッドに渡す glob パターンに応じて、ウォッチャーは再帰的 (たとえば、**/*.js) または非再帰的 (*.js) になります。再帰的なウォッチャーはより多くのリソースを必要とするため、可能な場合は単純な glob パターンを使用することをお勧めします。

// Watch a folder non-recursively
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));

// Watch the active text editor file
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*'));

注: この変更の一環として、既存のファイルウォッチャーの動作を変更しました。glob パターンのみで指示されたファイルウォッチャー (たとえば、vscode.workspace.createFileSystemWatcher('**')) は、ワークスペースの外部で変更されたファイルのイベントを受信しなくなります。ワークスペース内にあるパスからのファイルイベントのみを受信します。ユーザーが開いているワークスペースがない場合、このメソッドを介してイベントは配信されなくなります。これは、拡張機能がワークスペースの外部からの予期しないイベントを受信しないようにするためです。

vscode.TerminalLocation

新しい TerminalLocation API を使用して、拡張機能ターミナルが作成される場所を指定できます。

これにより、parentTerminal を指定したり、エディター領域とパネルの間で選択したりして、分割ターミナルを作成できます。

onWill イベントのキャンセルトークン

VS Code API は、onWillRenameFiles などのファイル操作に参加するためのイベントを公開しています。この参加には時間がかかる場合があり、ユーザーはそれをキャンセルできます。今回のリリースでは、ユーザー側のキャンセルは、対応するイベントのキャンセルトークン (たとえば、FileWillRenameEvent#token) を介して拡張機能から監視できます。これにより、拡張機能はコストのかかるダウンレベル操作もキャンセルできます。

Git 拡張機能 API

  • ファイルをステージングする機能を有効にするために、新しい Repository.add メソッドが追加されました。
  • タグを作成および削除する機能を有効にするために、Repository.tag および Repository.deleteTag メソッドが追加されました。

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

タスクを提供する拡張機能は、新しい onTaskType:foo アクティベーションイベントを使用することにより、不要なアクティベーションを制限できます。これは、onCommand:workbench.action.tasks.runTask でアクティベートするよりも改善されています。なぜなら、workbench.action.tasks.runTask は通常、タスクを提供する拡張機能にとって熱心すぎるからです。

デバッガー拡張機能の作成

VS Code は、Debug Adapter Protocol のメモリ関連機能を実装するようになりました

今回のリリースでは、VS Code は Debug Adapter Protocol の次のメモリ関連機能をサポートすることにより、バイナリデータの表示と編集のサポートを開始しました。

  • VS Code は DAP 変数の memoryReference 属性を尊重し、クライアント機能 supportsMemoryReferences をデバッグアダプターに渡すことでこれをアナウンスします。
  • VS Code がデバッグアダプターから機能 supportsReadMemoryRequest を受信した場合、バイナリデータを表示するための UI を有効にし、データを取得するために readMemory リクエストを発行します。
  • VS Code がデバッグアダプターから機能 supportsWriteMemoryRequest を受信した場合、バイナリデータを編集するための UI を有効にし、データを保存するために writeMemory リクエストを発行します。
  • VS Code は memory イベントを処理し、クライアント機能 supportsMemoryEvent をデバッグアダプターに渡すことでこれをアナウンスします。

Language Server Protocol

新しい次期バージョンの Language Server Protocol が、対応する npm モジュールとともに公開されました。このバージョンには、ノートブックドキュメントの提案された実装が含まれています。仕様部分はこちらで読むことができます。

提案された拡張機能API

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

  1. 試したい提案を見つけ、その名前を package.json#enabledApiProposals に追加します。
  2. 最新の vscode-dts を使用して、vscode-dts dev を実行します。対応する d.ts ファイルがワークスペースにダウンロードされます。
  3. これで、提案に対してプログラミングできます。

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

ターミナルの永続化を無効にする

ターミナルを作成するときに、TerminalOptions または ExtensionTerminalOptionsdisablePersistence を設定することにより、再起動およびリロード時のターミナルの永続化をオプトアウトできます。

export interface TerminalOptions {
  disablePersistence?: boolean;
}

インレイヒント API

インレイヒント API に興味のあるすべての人に呼びかけます。完了に近づいており、インタラクティブなラベルパーツのサポートが追加されました。これにより、ソースコードの場所をヒントにバインドして、コードナビゲーションなどの機能を有効にすることができます。また、コマンドもサポートされるようになりました。この提案の最新の状態と開発状況は、こちらをご覧ください: vscode.proposed.inlayHints.d.ts

言語ステータス API

言語ステータスアイテム API は最終決定される予定です。ぜひお試しいただき、vscode.proposed.languageStatus.d.ts についてフィードバックをお願いします。

テスト提案

テストの「更新」ハンドラーを実装する公式な方法を提案しています。vscode.proposed.testRefresh.d.ts をご確認ください。これにより、拡張機能は VS Code の標準の「更新」ボタンの背後で統合し、独自のボタンを実装することを回避できます。

さらに、TestItemvscode.proposed.testSortText.d.tssortText 属性を持たせることを提案します。

インライン補完: 自動括弧補完

拡張機能がインライン補完アイテムを提供する場合、そのプロパティ completeBracketPairstrue に設定できます。設定されている場合、VS Code はインライン補完がユーザーに表示される前に、括弧を閉じたり削除したりすることにより、補完テキスト内の無効な括弧を修復しようとします。

ツリーのドラッグアンドドロップ提案がエディターへのドラッグをサポート

ツリーのドラッグアンドドロップ提案は最終決定にほぼ近づいており、TreeDragAndDropController によって "resourceurls" mime タイプがサポートされている場合、ツリービューからエディターへのドラッグをサポートするようになりました。詳細は、issue #141418 で確認できます。vscode.proposed.treeViewDragAndDrop.d.ts をお試しいただき、フィードバックをお願いします。

コメントのタイムスタンプ

コメント API に、Comment の新しい timestamp プロパティがあります。API とともに、コメントのタイムスタンプの表示方法を制御する新しい設定 comments.useRelativeTime があります。vscode.proposed.commentTimestamp.d.ts をお試しいただき、フィードバックをお願いします。

エンジニアリング

vscode-bisect ツール

問題を診断するのに役立つ、リリースされた VS Code Insiders バージョン (Web およびデスクトップ) をバイセクトするための新しいツールが利用可能です。

npx vscode-bisect

git bisect と同様に、vscode-bisect は過去にリリースされた Insiders ビルドの範囲を起動し、ビルドが問題を再現するかどうかを尋ねます。最終的な結果は、問題を導入したコミットの範囲です。インスタンスは、メインの開発環境に影響を与えないように、ユーザーデータ専用の新しいフォルダーを使用します。

ソースから Code Web & Server を実行する

Web 用 VS Code およびソースからの VS Code Server を実行するスクリプトが scripts フォルダーに移動しました。

  • ./scripts/code-web.sh|bat は、ソースから Web 用 Code (別名「サーバーレス」) を起動し、ブラウザーで開きます。その他のオプションについては、--help を使用してください。
  • ./scripts/code-server.sh|bat は、ソースから VS Code Server を起動します。Web UI をブラウザーで追加で開くには、--launch を追加します。その他のオプションについては、--help を使用してください。
  • リモート Web テスト用の ./scripts/test-web-integration.sh|bat
  • リモートテスト用の ./scripts/test-remote-integration.sh|bat

拡張機能

このマイルストーンでは、VS Code がサービスに対して行うクエリの数を最小限に抑えることで、Marketplace のインタラクションを改善しました。

注目すべき修正

  • 91286 クライアントでの設定同期アクティビティのスロットリング
  • 117648 拡張機能 sass で emmet で "gtc" を展開すると、結果が奇妙になります。
  • 134466 存在しないデバッガー構成
  • 135677 設定 UI リンクにカーソルを合わせると、先頭に # が表示されます
  • 138072 最近開いたワークスペースをグローバルストレージに保存する
  • 138805 大きなバイナリファイルを開くと、全内容が読み込まれる
  • 138850 ディスク上のファイル変更後、開いているエディターが空になる可能性がある
  • 139880 デバッグ: F5 でファイルを保存するように求められる
  • 140003 別のワークスペースフォルダーにある起動構成からタスクを参照できない
  • 140129 settings.json ファイルをダブルクリックすると、毎回新しいタブが開かれる
  • 140560 VS Code Stop Debugging API の問題
  • 140967 Comment.body がプレーン文字列の場合でも Markdown としてレンダリングされる

謝辞

最後になりましたが、VS Code のコントリビューターに心から感謝申し上げます。

Web 拡張機能

Web 拡張機能としてコードを実行する拡張機能を有効にした拡張機能の作成者 (以下のリストは 2021 年 12 月 7 日から 2022 年 1 月 31 日の間)

Issue tracking

Issue tracking への貢献

プルリクエスト

vscode への貢献

vscode-css-languageservice への貢献

vscode-eslint への貢献

vscode-extension-samples への貢献

vscode-html-languageservice への貢献

vscode-js-debug への貢献

  • @zkx5xkt: 修正: DebugSessionTunnels。リモート/ローカルポートの誤った使用 PR #1163

vscode-pull-request-github への貢献

vscode-textmate への貢献

vscode-vsce への貢献

debug-adapter-protocol への貢献

monaco-editor への貢献

node-jsonc-parser への貢献

  • @Marcono1234
    • README の API セクションを更新 PR #61
    • JSON パスサプライヤーパラメーターをビジター関数に追加 PR #62
  • @P0lip (Jakub Rożek): findNodeAtLocation が不完全なプロパティペアを処理しない問題を修正 PR #44