に参加して、VS Code の AI 支援開発について学びましょう。

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

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

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

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


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

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

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

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

Workbench

新しいサイドパネル

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

サイドパネルを使用するには、一部のビューをそこに移動する必要があります。最も多くの賛成票を集めた機能リクエストの 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

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

ぜひ試してみて、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

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

Settings Sync default machine name including browser and product names

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

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

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

Editor

オーディオキュー

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

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

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

Unicode ハイライトの改善

11 月のリリースで導入されたUnicode ハイライト機能を改善するために、誤検出をより適切に処理する新しい設定が追加されました。

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

設定 editor.unicodeHighlight.includeStrings は、文字列内の文字をハイライトするかどうかを制御します。既定値は true ですが、文字列を無視するには false に設定できます。

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

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

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

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

ターミナル

自動返信

ターミナルで、特定の文字シーケンスを受信したときに自動的に返信するオプトイン機能が利用できるようになりました。これの有用な例として、Windows のバッチスクリプトで Ctrl+C を押した後に出力される 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
  • ターミナル: 検出されたリンクを開く... (すべてのリンク (ウェブ、ファイル、単語) を表示)

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: Drop All Stashes... がコマンドパレットに追加され、ユーザーがすべての stash エントリをクリアできるようになりました。恒久的な結果を伴う Git 操作と同様に、このコマンドは慎重に使用してください。

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

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

ノートブック

レンダリングされた Markdown とコードセルの出力内のテキストを検索

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

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

セル折りたたみ UI

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

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

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

Folded Markdown cell hint

セルの実行ヒント

セルが実行中であること、およびどのセルが実行中であるかをより明確にするために、いくつかの変更を加えました。

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

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

第3に、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デバッグ

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

ブレークポイントを設定したり、デバッガーステートメントを追加したりしても、特定のコードパスから呼び出された場合にのみ一時停止したい場合があります。mousemove のような DOM イベントハンドラーは、この良い例です。このリリースで、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~~ テキストのレンダリングをサポートするようになりました。

Strikethrough rendering the Markdown editor and preview

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

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

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

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

Azure Repos

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

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

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

PWA およびオフラインサポート

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

Install VS Code PWA prompt

拡張機能への貢献

Python

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

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

Interpreters grouped in interpreter picker

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

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

Anaconda ユーザーのサポートを改善するため、以前エラーの原因となっていた出力をキャプチャしない --no-capture-output パラメータを使用した conda run のサポートを実装しました。この機能は、リンター、テスト、および書式設定関数の実行に実装されています。

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

Anaconda チームがこの問題に取り組んでおり、まもなく修正版がリリースされることを期待しています。新しいバージョンがリリースされたら、Conda の Web サイトで Anaconda のバージョンを更新できます。

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

Pylance 言語サーバーを介した Python コードの選択と折りたたみにも改善が加えられました。

Python コードをキーボードで選択する際、コードのセマンティック情報が選択範囲の定義に考慮されるため、キー操作が少なくなります。

テーマ: Horizon Extended

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

Jupyter

リモート Jupyter サーバー

Jupyter 拡張機能は、ローカルとリモートの Jupyter サーバーを切り替える際に VS Code の再読み込みを必要としなくなりました。さらに、この拡張機能は、カーネルピッカーにローカルとリモートの両方のカーネルをまとめて表示するようになりました。

Hexエディター

Hex Editor は、大幅なアーキテクチャ再構築が行われました。特に、ほとんどの場合、パフォーマンスの問題なく任意のサイズのファイルを開くことができるようになりました。さらに、そのレイアウト幅が構成可能になり、より強力な検索/置換の実装も行われました。今後の反復で継続的な改善が行われる予定です。

リモート開発

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

リモート開発リリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。

GitHub Pull Requests and Issues

引き続き、プルリクエストとissueの作業、作成、管理ができる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 がエコーされます。ファイル名をクリックすると 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ウィンドウのサポートは限定的です。

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

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

  • 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 が改善され、ワークスペース外にあるファイルやフォルダのパスでもファイル監視に渡せるようになりました。以前は、ファイル監視はワークスペースで開かれたフォルダに限定されていました。

メソッドに渡すグロブパターンに応じて、ウォッチャーは再帰的 (例: **/*.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 を使用して、拡張機能ターミナルが作成される場所を指定できます。

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

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に興味のある皆様にお知らせです。このAPIは完成に近づいており、インタラクティブなラベルパーツのサポートが追加されました。これにより、ソースコードの位置をヒントにバインドできるようになり、コードナビゲーションなどの機能が有効になります。また、コマンドもサポートされるようになりました。この提案の最新の状態と開発状況は、vscode.proposed.inlayHints.d.ts で確認できます。

言語ステータスAPI

言語ステータスアイテム API は最終化が予定されています。ぜひ試して、vscode.proposed.languageStatus.d.ts にフィードバックをお寄せください。

テストの提案

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

さらに、vscode.proposed.testSortText.d.ts において、TestItemsortText 属性を追加することを提案します。

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

拡張機能がインライン補完アイテムを提供する場合、そのプロパティ 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 を起動します。--launch を追加すると、Web UI もブラウザで開かれます。詳細なオプションについては --help を使用してください。
  • リモートウェブテストには ./scripts/test-web-integration.sh|bat を使用します。
  • リモートテストには ./scripts/test-remote-integration.sh|bat を使用します。

拡張機能

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

注目すべき修正点

  • 91286 クライアントでの設定同期アクティビティのスロットリング
  • 117648 Emmet を Sass 拡張機能で使用して「gtc」を展開した結果が奇妙です。
  • 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への貢献

© . This site is unofficial and not affiliated with Microsoft.