VS Codeのエージェントモードを拡張するには、を試してください!

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

Update 1.64.1: この更新プログラムでは、これらのセキュリティ問題に対処しています。

Update 1.64.2: この更新プログラムでは、これらの問題に対処しています。

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


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

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

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

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

Workbench

新しいサイドパネル

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

Side Panel を使用するには、いくつかのビューを Side Panel に移動する必要があります。最も多くの賛成票を得た機能リクエストの1つに基づいて、Side Bar から Outline ビューを Side Panel に移動したいと思うかもしれません。これは、ビューを Side Panel にドラッグ&ドロップすることで行えます。Side Panel が開いていない場合、下部の Panel と同様に、ビューをエディター領域の端にドラッグすると開きます。

以下の短いビデオでは、Outline ビューが右にドラッグされ、ドロップされて Side Panel が作成されます。ユーザーは、Side Bar でビューを切り替えながら (ここではグローバル検索ビューを開いています)、Outline ビューを表示したままにすることができます。

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

Move View command view locations dropdown

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

View context menu with Reset Location command

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

パネルの位置の置き換え

前述のとおり、新しいサイドパネルはパネルを左右に移動するのと同様の機能を提供しますが、元のパネルの内容全体を移動しないことでこれを改善しています。パネル間のビューのドラッグアンドドロップと合わせて、新しいサイドパネルは下部パネルを移動するオプションに取って代わります。

それを踏まえ、workbench.panel.defaultLocation 設定とパネルの移動コマンドを廃止し、類似のコマンドを推奨しています。

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

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

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

パネルの配置

別の人気の機能リクエストに応えて、パネル配置という新しいレイアウトオプションを追加しました。このオプションを使用すると、下部パネルがウィンドウのどの程度にわたって広がるかを設定できます。4つのオプションがあります。

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

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

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

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

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

Configure Layout button on the title bar

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

ぜひお試しいただき、イシュー #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

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

Settings Sync default machine name including browser and product names

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

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

さらに、Undo を実行する際にエクスプローラーが確認を促す頻度を設定するための新しい設定 (explorer.confirmUndo) が追加されました。デフォルトでは、破壊的な Undo が誤って発生しないように、エクスプローラーは以前よりも頻繁にプロンプトを表示しますが、この動作は値 "light" で以前の動作に戻すことができます。また、すべての Undo アクションの前にプロンプトを表示するには "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 と Enter (\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 を使用し、同様の機能を有効にしている場合、両方の機能が競合するのを避けるために、Clink または VS Code で応答を null に設定することで無効にできます。

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

VT サポートの強化

Operating System Command (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: すべてのスタッシュを破棄... が追加され、すべてのスタッシュエントリをクリアできるようになりました。永続的な結果を伴う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

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

JavaScriptデバッグ

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

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

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

Linux での Edge サポート

edge デバッグタイプを介して、Linux でのMicrosoft Edge デバッグが利用可能になりました。

言語

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

Web 用 VS Code

リモートリポジトリ

GitHub リポジトリ

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

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

テーマ: One Monokai

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

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

Azure Repos

Azure Repos のサポートは、GitHub リポジトリ拡張機能から、デスクトップにもインストールできる専用の拡張機能に移動しました。

プレリリース拡張機能の採用

Web 用 VS Code は、GitHub Pull Request and IssuesGitHub Repositories の両拡張機能のプレリリースバージョンをバンドルするようになりました。

PWA とオフラインサポート

Web 用 VS Code は 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 のサポートを実装しました。この機能は、リンター、テスト、およびフォーマット関数の実行に実装されています。

既知のバグイシュー #10972があり、Windows でパラメーターに特殊文字が含まれるリンティングとテストを実行するとエラーが発生します。これは、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 プルリクエストとイシュー

プルリクエストやイシューの作業、作成、管理を可能にするGitHub Pull Requests and Issues 拡張機能の作業は継続しています。ハイライトを確認するには、拡張機能の 0.36.0 リリース変更ログをご覧ください。

プレビュー機能

ターミナルシェル統合

ターミナルに実験的なシェル統合機能が搭載され、これまで不明だったターミナル内で何が起こっているかを 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がechoされます。ファイル名をクリックすると、vscode/package.jsonが開きます。ディレクトリがtemplate-string-converterに変更され、package.jsonがechoされます。ファイル名をクリックすると、template-string-converter/package.jsonが開きます。

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

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

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

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

エクスプローラーのファイルネスト

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

  • 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 separators

既存のクイックピックに区切り文字を追加するには、既存の項目リストに新しい QuickPickItem を追加し、QuickPickItemkind プロパティを QuickPickItemKind.Separator に設定します。

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

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

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

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

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

メソッドに渡すグロブパターンに応じて、ウォッチャーは再帰的 (例: **/*.js) または非再帰的 (*.js) のいずれかになります。再帰的ウォッチャーはより多くのリソースを必要とするため、可能な場合はシンプルなグロブパターンを使用することをお勧めします。

// 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, '*'));

注意: この変更の一環として、既存のファイルウォッチャーの動作が変更されました。グロブパターンのみで指示されたファイルウォッチャー (例: 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 タイプをサポートしている場合、ツリービューからエディターへのドラッグをサポートするようになりました。詳細については、イシュー #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 を使用してください。
  • リモートウェブテスト用の ./scripts/test-web-integration.sh|bat
  • リモートテスト用の ./scripts/test-remote-integration.sh|bat

拡張機能

このマイルストーンでは、VS Code がサービスに行うクエリの数を最小限に抑えることで、マーケットプレイスとの対話が改善されました。

注目すべき修正点

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

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

Web拡張機能

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

vscode-html-languageserviceへの貢献

vscode-js-debugへの貢献者

  • @zkx5xkt: fix: DebugSessionTunnels. リモート/ローカルポートの使用が誤っていた問題を修正 PR #1163

vscode-pull-request-githubへの貢献者

vscode-textmateへの貢献

vscode-vsceへのコントリビューション

debug-adapter-protocolへの貢献者

monaco-editorへのコントリビューション

node-jsonc-parserへの貢献