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

2020年11月 (バージョン 1.52)

更新 1.52.1: このアップデートでは、これらの問題が対処されています。

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


Visual Studio Code 2020年11月リリースへようこそ。2020年11月のイテレーション計画で発表した通り、私たちは引き続き2週間、課題の整理ガイドに記載されているように、GitHubの課題とプルリクエストの整理に注力しました。すべてのVS Codeリポジトリで、前回の2019年10月の整理イテレーションで4622件の課題をクローズしたのに比べ、今回は5242件の課題をクローズしました (トリアージまたは修正済み)。私たちが課題をクローズした一方で、皆様は2937件の新しい課題を作成しました。メインのvscodeリポジトリには現在、2146件の未解決の機能リクエストと884件の未解決のバグがあります。さらに、144件のプルリクエストをクローズしました。

毎年恒例ですが、Benjamin Lannon氏のライブトラッカーを使用して進捗を追跡しました。

Burn down chart of VS Code issues

整理に注力した後、いくつかの機能リクエストとコミュニティからのプルリクエストにも対処しました。これにより、多くの新機能と設定が追加され、主なハイライトは以下の通りです。

ワークベンチ

プレビューエディターの改善

ユーザーからのフィードバックに基づいて、プレビューエディターの処理方法をいくつか更新しました。

workbench.editor.enablePreviewFromQuickOpen 設定はデフォルトで無効になり、クイックオープンから開いたエディターはプレビューモードで表示されなくなります。

コードナビゲーション(たとえば、定義へ移動)を開始すると、開始したエディターはプレビューモードを終了して開いたままになり、新しいエディターはさらにナビゲーションするまでプレビューモードになります。

Go to Definition

すべてのカスタムツリー(拡張機能ビューやGitビューなどで使用されるもの)が、他の組み込みツリー(ファイルエクスプローラーなど)とより一貫して動作するように変更しました。これにより、以下のインタラクションがすべてに適用されます。

  • ダブルクリックまたはマウスの中央クリックで、プレビューなしで開きます。
  • Enterでプレビューなしモードで開きます(Spaceでプレビューモードで開きます)。
  • Alt+Clickでアクティブなエディターの横にエディターを開きます。

注: カスタムツリーAPIを使用している拡張機能作成者も、この変更の恩恵を受けられます。新しいプレビューモードの動作を得るには、TreeItem.commandvscode.openまたはvscode.diffコマンドを使用してください。

エディターのオーバーフローメニューに新しいメニュー項目エディターを開いたままにするが追加され、プレビューエディターをまとめてすばやくオフにできるようになりました。

Selecting Keep Editors Open in the overflow menu

前回のセッションウィンドウを復元する

既存の window.restoreWindows 設定の新しい値 preserve を使用すると、VS Code を再起動したときに、VS Code を閉じる前に開いていたすべてのウィンドウが、特定のフォルダーやファイルを明示的に開くように VS Code が指示された場合でも復元されるように強制できます。一般的な例としては、プラットフォームのファイルエクスプローラーでファイルをダブルクリックして VS Code で開いたり、ターミナルを使用して特定のファイルやフォルダーを開いたりする場合があります。window.restoreWindows: preserve 設定がない場合、VS Code は指示されたファイルやフォルダーのみを開き、他のウィンドウは復元しません。

ドラッグ&ドロップ時のエディターグループ分割を無効にする

新しい設定workbench.editor.splitOnDragAndDropは、エディターのドラッグ&ドロップ時にエディターグループが分割されるのを防ぎます。また、Shiftキー(macOS)またはAltキー(Windows、Linux)を押しながらドラッグ&ドロップ操作中に条件付きで切り替える方法もあります。

エクスプローラーでのファイル操作の元に戻す

ファイルエクスプローラーは、すべてのファイル操作(削除、名前変更、コピー、移動、新規ファイル、新規フォルダー)に対して元に戻すやり直しをサポートするようになりました。ファイルエクスプローラーにフォーカスがあることを確認し、元に戻すまたはやり直しコマンドをトリガーすると、最後のファイル操作がそれぞれ元に戻されたりやり直されたりします。エディターとファイルエクスプローラーには別々の元に戻すスタックがあり、どちらを元に戻すかはフォーカスに基づいて選択されることに注意してください。

Selecting undo from the Edit menu while in the Explorer

エクスプローラーでの長時間実行操作の進捗

ファイルエクスプローラーとステータスバーに、長時間実行されるファイル操作(500ミリ秒を超える)の進捗が表示されるようになりました。また、長時間実行される操作のキャンセルも初期的にサポートされています。これは、大きなフォルダーをコピーしたり、リモートの場所からリソースをダウンロードしたりする際に役立つはずです。

Showing progress in the File Explorer

開いているエディターの並べ替え

新しい設定explorer.openEditors.sortOrderは、開いているエディターリストの並べ替え順序を制御します。

値は次のとおりです。

  • editorOrder - エディタータブの表示順と同じ順序でエディターが一覧表示されます(デフォルト)。
  • alphabetical - 各エディターグループ内でエディターがアルファベット順に一覧表示されます。

alphabetical ソートは「開いているエディター」ビューにのみ影響し、タブの移動には影響しません。

これは、多数のファイルを開いていて、関連するファイル(たとえば、hello.component.jsとhello.component.html)を一致させたい場合に役立ちます。

Open Editors sorted

アクセシブルな進捗管理

ワークベンチの進捗表示がよりアクセスしやすくなりました。VS Code は適切な ARIA ロールを設定し、スクリーンリーダーが VS Code のすべての長時間実行操作の進捗を報告できるようにしました。ほとんどのスクリーンリーダーは、デフォルトでは10秒以上進行中の場合にのみ進捗をアナウンスします。

ソース管理の変更に親フォルダーパスを表示

ソース管理ビューから開かれた差分エディターは、ファイルパスを表示するようになりました(タブが無効な場合)。以前はファイル名のみが表示されていましたが、前後ファイルが同じフォルダー内にある場合は親フォルダーが表示されるようになりました。

SCM changes showing parent folder path

新しいプロキシログインダイアログがデフォルトで有効に

新しいプロキシログインダイアログがデフォルトで有効になりました。詳細については、以前のリリースノートを参照してください。window.enableExperimentalProxyLoginDialog 設定を使用して古いダイアログを有効にできますが、このサポートは近い将来削除されます。新しいログインダイアログに問題が見つかった場合は、課題を報告してお知らせください。

ターミナル環境処理の改善 (Linux、macOS)

Linux または macOS で VS Code をドックまたはランチャー (ターミナルではない) を介して初めて起動すると、VS Code はシェル環境 (.bashrc または .zshrc で定義または変更されたもの) を解決するためのバックグラウンドプロセスを開始します。検出されたすべての環境変数は VS Code によって使用され、ターミナルから起動してもドック/ランチャーから起動しても違いがないようにします。これはデバッグやタスクの実行時に重要です。

残念ながら、このバックグラウンドプロセスが実行されるまでVS Codeは開きません。起動を長時間ブロックしないように、VS Codeは10秒後に開き始めます。この場合、VS Codeはシェル環境を解決できなかったことを通知し、詳細を知るためのリンクを提供します。

Shell environment error after being unable to resolve in a reasonable time

同様に、VS Code はシェル環境の解決中に VS Code の起動がブロックされたことを示す警告を3秒後に表示するようになりました。

Shell environment warning if it takes longer than 3 seconds

私たちは、シェル環境をバックグラウンドで解決しながらも、VS Code の起動をブロックしない戦略への変更を積極的に検討していますが、これは将来のリリースでのみ可能となるでしょう。

この分野のその他の注目すべき変更点は以下のとおりです。

  • ターミナルから VS Code のセカンドウィンドウを起動する前に環境変数を定義したり変更したりできるようになりました。これにより、最初の起動からの変数が適切に上書きされ、実質的にウィンドウごとの環境変数が可能になります (たとえば、これにより、Node.js のバージョンを `nvm` のようなツールを使ってウィンドウごとに起動前に変更できるようになります)。
  • VS Code のセカンドウィンドウを起動する前にターミナルから設定された環境変数は、そのセカンドウィンドウでフォルダを切り替えても保持されるようになりました。

ワークベンチのオーバーフローを改善

ワークベンチにすべてのビューを収めるのに十分なスペースがない場合、VS Code はスクロールバーを表示してコンテンツをパンし、すべてにアクセスできるようにします。これは、サイドバー、エディターグリッドなど、ワークベンチのいくつかの領域に適用されます。

Improved workbench overflow

サッシュホバーボーダーカラー

サッシュ(sash.hoverBorder)の境界線のホバー色をワークベンチ全体でカスタマイズできるようになりました。

Sash hover border color

ツリー: 展開モード

新しい workbench.tree.expandMode 設定により、ツリー内でフォルダーを展開する方法を、シングルクリックまたはダブルクリックで制御できるようになりました。

macOS Big Sur の更新

Electron 9 の問題により、アップデートのために再起動を選択すると、VS Code は自動的に再起動せず、終了するだけになります。Electron 11 が含まれる次回の VS Code リリースまでは、この現象が発生した場合は手動で VS Code を再起動する必要があります。issue #109728で詳細をご確認ください。

ソース管理

ソース管理ビューの状態を保持する

ソース管理ビューの状態がセッション間で保持されるようになりました。折りたたまれたツリーノードは、VS Code を終了して再起動しても折りたたまれたままになります。

ソース管理のガターアクション

新しい scm.diffDecorationsGutterAction 設定を使用すると、エディターの左側にあるソース管理のガター装飾を選択したときに何が起こるかを制御できます。利用可能な値は次のとおりです。

  • diff - クリックでインライン差分ピークビューを開きます(デフォルト)。
  • none - すべてのアクションを無効にします。

Git: 新しいコマンド

いくつかの新しいGitコマンドがコマンドパレットに追加されました。

  • Git: チェリーピック... - 特定のコミットをブランチにチェリーピックします。
  • Git: 名前変更 - アクティブなファイルに対してgitの名前変更を実行します。
  • Git: タグをプッシュ - ローカルのすべてのタグをリモートにプッシュします。
  • Git: (デタッチ)へのチェックアウト... - デタッチモードでチェックアウトを実行します。

Git: 新しい設定

さらに、新しい Git 設定が追加されました。

  • git.pruneOnFetch - リモート参照をフェッチするときに、VS Code が git fetch --prune を実行するようにします。
  • git.ignoreSubmodules - サブモジュールリポジトリの変更を VS Code が無視するように設定できるようになりました。これは大規模なモノレポで役立ちます。
  • git.openAfterClone - gitリポジトリをクローンした後に、現在のウィンドウ、新しいウィンドウ、フォルダが開かれていない場合、およびユーザーにプロンプトを表示する方法でフォルダを開くかどうかを制御します。
  • git.useCommitInputAsStashMessage - Git: Stashを実行する際に、ソース管理の入力ボックスのコミットメッセージをスタッシュメッセージとしてVS Codeが使用できるようにします。
  • git.followTagsWhenSync - Git: Sync実行時にタグを追跡します。
  • git.checkoutType - Git: Checkout...コマンドを実行するときに、表示されるrefの種類と順序を制御します。

Git: スタッシュする前にファイルを保存するかどうか尋ねる

VS Code は、変更をスタッシュしようとするたびに、未保存のファイルを保存するかどうかを尋ねるようになりました。

Git: 削除されたファイルの競合に対するより良い差分

削除されたファイルの競合に対する差分表示が改善され、削除元のブランチでの実際のファイルの変更が表示されるようになりました。

Git: リモート追加時にフェッチ

VS Code は、リモートを追加した直後に git fetch を実行し、そのリモートからすべての参照をフェッチするようになりました。

Git: デタッチモードでチェックアウト

VS Code からデタッチモードで参照をチェックアウトできるようになりました。

Selecting Git: Checkout to (detached)... and then selecting a ref to checkout in detached mode

Git: エラー時にコマンド出力表示

Gitコマンドがエラーをスローした場合、新しいコマンド出力表示オプションで完全なエラーメッセージを表示できるようになりました。

Show command output option in error message

Git: git.api.getRemoteSources コマンドの新しいオプション

git.api.getRemoteSources Git API コマンドのオプションは、オプションの branch?: boolean プロパティをサポートするようになりました。これにより、リモートソースプロバイダーのサポートがあれば、Git はユーザーにリモートソースからブランチを選択するように促します。

さらに、このコマンドは providerName?: string オプションをサポートするようになり、呼び出し元がユーザーによるリモートソースの選択をスキップし、特定のプロバイダーを直接使用できるようになりました。

デバッグ

ブレークポイントビュー: 例外ブレークポイントの条件

VS Code は、ブレークポイントビューから条件の編集コンテキストメニューアクションを使用して、例外ブレークポイントの条件を編集できるようになりました。

今のところ、Mock Debug 拡張機能のみが (偽の) 例外ブレークポイント条件をサポートしていますが、JavaScript デバッガーなど、他のデバッグ拡張機能もすぐに追随する予定です。

Edit Condition menu item

Exception Condition

例外領域のアクセシビリティ

エディター内の例外情報領域が、よりアクセスしやすくなりました。デバッグ中に例外が発生すると、VS Code は自動的に例外領域にフォーカスを移動し、スクリーンリーダーが例外の詳細とスタックフレームを報告するようにします。

例外領域は、Escape キーまたは例外領域の右上にあるXボタンで閉じることもできるようになりました。

UIの改善

概要ルーラーにデバッグ中の行が表示される

現在デバッグ中の行がエディター右側の概要ルーラーに表示されるようになりました。この装飾には、既存の editor.stackFrameHighlightBackground 色を使用します。これに加え、VS Code は、editor.focusedStackFrameHighlightBackground 色を使用して、現在フォーカスされているデバッグ中の行を概要ルーラーに表示します(フォーカスされているデバッグ中の行は、コールスタックビューで手動で選択された、トップではないスタックフレームの場所です)。

自動デバッグ構成の改善

以前、デバッグ拡張機能が現在のプロジェクトを分析し、デバッグ構成を自動的に提供する機能を導入しました。これらのデバッグ構成は動的に作成されるため、launch.json構成ファイルには表示されません。今回のマイルストーンでは、VS Code の再起動(およびリロード)後も、最近使用した自動デバッグ構成を保持し、全体的なエクスペリエンスをよりスムーズにしました。再起動後に自動デバッグ構成が無効になった場合、デバッグ開始時にVS Code は同じプロバイダーから新しい自動構成を選択するように求めます。

デバッグホバー: 通常のホバーに切り替えるためのヘルプテキスト/ヒント

デバッグホバーの下部にヘルプテキストが追加され、デバッグ中にAltを押すとエディターの言語ホバーに切り替わる機能がより見つけやすくなりました。ご存知の通り、デバッグ中はデバッグホバーが言語ホバーよりも優先されるため、言語ホバーが表示されません。デバッグホバーから言語ホバーに切り替えるには、Alt修飾キーを押し続けます。Altが押されている間は、デバッグホバーの代わりに言語ホバーが表示されます。これにより、デバッグ中にJavadocの説明のようなホバーを読みやすくなります。

Debug hover showing the message "Hold Alt key to switch to editor language hover"

デバッグコンソール: 同一行を折りたたむ

デバッグコンソールは、同一の出力を折りたたみ、その出現回数を表示するようになりました。この機能により、繰り返し表示されるプログラム出力をはるかに把握しやすくなります。

Debug Console collapsing identical lines

launch.json および tasks.json の新しい変数

以下の新しい変数が導入されました。

  • ${fileWorkspaceFolder} - アクティブな VS Code エディターで開いているファイルのワークスペースフォルダーパスを解決します。
  • ${fileDirnameBasename} - アクティブな VS Code エディターで開いているファイルのあるフォルダーの名前を解決します。
  • ${pathSeparator} - ファイルパスのコンポーネントを区切るためにオペレーティングシステムが使用する文字を解決します。

serverReadyAction: 名前で他のデバッグ構成を起動

serverReadyAction は、これまでURLに一致するブラウザまたはChromeデバッグを起動できました。今回のリリースでは、名前で他の任意の構成を起動する新しいオプションが追加されました。たとえば、launch.jsonで次のように指定できます。

"serverReadyAction": {
  "action": "startDebugging",
  "pattern": "listening on port ([0-9]+)",
  "name": "Launch Browser"
}

これにより、標準の Chrome デバッグ構成に追加のオプションを渡したり、他のデバッガーを serverReadyAction で使用したりすることができます。

自動アタッチの一時的な無効化

自動アタッチは、ステータスバーの自動アタッチ項目、またはデバッグ: 自動アタッチの切り替えコマンドを使用して一時的に無効にできるようになりました。この方法で自動アタッチを無効にすると、現在のウィンドウにのみ適用され、ターミナルを再起動する必要はありません。同じ方法で再度有効にできます。

Showing the auto attach Quick Pick with an option that reads "Temporarily disable auto attach in this session"

JavaScriptデバッガー

変更点の完全なリストは、デバッガーの変更ログに記載されています。

ブレークポイント診断ツール

デバッグを妨げたり、ブレークポイントがバインドされない原因となるビルドまたは設定の問題をトラブルシューティングするために設計された新しいツールが追加されました。これを使用するには、デバッグセッションが実行中にデバッグ: 現在のセッションの診断情報を作成コマンドを実行します。今後のVS Codeバージョンでは、この診断ツールへのヒントが適切な場合に自動的に表示されるようになります。

デフォルトの実行可能ファイルの場所の設定

ユーザー設定 debug.javascript.defaultRuntimeExecutable があり、Node.js または Chrome バイナリのデフォルトの場所を指定できます。たとえば、{ "pwa-chrome": "dev" } は、Chrome タイプの設定でデバッグするたびに Chrome の "dev" ビルドを使用します。

この新しいオプションを使用するには、起動設定が node の代わりに pwa-node、または Chrome の代わりに pwa-chrome であることを確認してください。

タスク

npm

組み込みのnpm拡張機能の設定npm.packageManagerの新しいデフォルト値はautoです。auto値は、.lockファイルと、ワークスペースで依存関係をインストールするために使用されたパッケージマネージャーに基づいて、パッケージマネージャーを自動的に検出します。複数の.lockファイルが検出された場合でも、パッケージマネージャーが選択され、競合があったことを示す警告が表示されます。

最近のタスクを削除する

タスクのクイックピックには常に上部に最近のタスクセクションがありました。これは貴重な場所なので、右側の最近使用したタスクを削除ボタンでクイックピックからタスクを削除することで、最近のタスクをより適切に整理できるようになりました。

Remove recent task from Quick Pick menu

拡張機能

今回のマイルストーンでは、拡張機能ビューと拡張機能の詳細ページに多くの改善が加えられました。

拡張機能ビューが自動的に更新されるようになりました。たとえば、拡張機能のインストール後、すぐに拡張機能: インストール済みリストに拡張機能が表示されます。また、タイトルバーの更新ボタンを使用して、手動でビューを更新することもできます。

Extension view auto refresh

テーマ: GitHub Light

拡張機能の詳細ページに、拡張機能ビューと同様に、拡張機能のすべてのアクションを含むコンテキストメニューが表示されるようになりました。

ESLint extension details page showing editor actions

テーマ: GitHub Light

拡張機能の詳細ページの機能の寄与タブに、拡張機能のアクティベーションイベントが表示されるようになりました。

Extension Activation Events

テーマ: GitHub Light

拡張機能とその依存関係をまとめて無効にできるようになりました。依存関係を持つ拡張機能を無効にしようとすると、すべて無効にするアクション付きの通知が表示されます。

Showing option to disable all dependent extensions when disabling an extension

テーマ: GitHub Light

拡張機能ビューの拡張機能のコンテキストメニューにあるワークスペースのおすすめに追加またはワークスペースのおすすめから削除アクションを使用して、ワークスペースのおすすめから拡張機能を追加または削除できます。

Add to Workspace Recommendations menu item

テーマ: GitHub Light

設定同期が有効になっている場合、拡張機能のおすすめ通知は、拡張機能ビューと同様に、インストールドロップダウンアクションを表示するようになりました。

Extension recommendation notification

extensions.showRecommendationsOnlyOnDemand 設定を非推奨にすることで、拡張機能のおすすめ設定を簡素化しました。拡張機能のおすすめ通知を制御するために extensions.ignoreRecommendations 設定を使用でき、拡張機能ビューの表示アクションを使用して、デフォルトでおすすめを非表示にできます。

トラブルシューティング: 拡張機能の二分法

VS Code の真の力はその拡張機能にあります。テーマ拡張機能は美しい色とアイコンを追加し、言語拡張機能は IntelliSense を提供し、コードナビゲーションを可能にし、デバッガー拡張機能はバグを詳しく調べることができます。問題が拡張機能によって引き起こされているのか、そしてもしそうなら、どの拡張機能によって引き起こされているのかが明らかでない場合があります。これまで、問題のある拡張機能を見つけるには、すべての拡張機能を無効にしてから、1つずつ拡張機能を再度有効にする必要がありました。このプロセスは、新しい機能である拡張機能の二分法によって簡単になりました。この機能は二分探索アルゴリズムを使用して、問題を引き起こしている拡張機能をすばやく特定します。基本的には、拡張機能の半分を無効にし、見ている問題があるかどうかを確認するように求めます。問題がなくなった場合、問題のある拡張機能は無効にされた拡張機能のリストに含まれていたはずであり、現在有効になっている拡張機能のリストには含まれていなかったはずです。このプロセスは、1つの拡張機能が残るまで繰り返されます。

拡張機能の二分法は、コマンドパレットからヘルプ: 拡張機能の二分法を開始コマンド(⇧⌘P (Windows, Linux Ctrl+Shift+P))で開始できます。これにより、拡張機能を繰り返し無効化・再有効化するプロセスをガイドしてくれます。リロードごとに、問題がまだ存在するかどうかを確認するよう求められます。

Start Extension Bisect

Extension Bisect prompting during process

拡張機能のバイセクトは、問題が再現されているかどうかを繰り返し確認するように求めます。いつでもバイセクトを停止で中止でき、バイセクト通知を無視した場合は、ヘルプ: 拡張機能のバイセクトを続行コマンドで続行できます。

Extension Bisect done

拡張機能の二分法プロセスが終了すると、拡張機能に対して課題を提出するよう求められます。ここから拡張機能を無効にしたままにすることもできます。

キーボード ショートカットエディター

今回のマイルストーンでは、キーボードショートカットエディターにいくつかの改善が加えられました。

右側のキーバインディングの構成ギアボタンを使って、コマンドパレットからコマンドのキーバインディングを設定できるようになりました。

Configure keybinding for a command from the Command Palette

テーマ: GitHub Light

キーボードショートカットエディターから、コマンドに複数のキーバインディングを追加できるようになりました。

Add multiple keybindings

テーマ: GitHub Light

検索入力から特定のキーボードショートカットエディターの列でフィルタリングできるようになりました。

  • @command:commandId - コマンドIDでフィルタリングします。例: @command:workbench.action.showCommands
  • @keybinding:keybinding - キーバインディングでフィルタリングします。例: @keybinding:f1
  • @source:user|default|extension - ソースでフィルタリングします。

キーボードショートカットエディターで、UpおよびDown矢印を使用して検索履歴をナビゲートできます。

Keyboard Shortcut editor command ID filtering

IntelliSense

他のドキュメントからの単語ベースの提案

VS Code は単純な単語ベースの提案をサポートしています。これらは、言語サービスが利用できない場合や、コメント内に入力している場合のように言語サービスが結果を計算できない場合に役立ちます。今回のリリースでは、VS Code は他の開いているファイルから単語を提案するように構成できるようになりました。editor.wordBasedSuggestionsMode 設定を allDocuments に設定すると、開いているすべてのファイルから単語が提案され、matchingDocuments に設定すると、同じ言語の開いているファイルから単語が提案され(デフォルト)、currentDocument に設定すると、現在のファイルからのみ単語が提案されます。

Word based suggestions

インライン詳細を非表示にする

VS Code の提案には、提案の横にある別のフライアウトに表示される詳細情報があります。詳細ビューは閉じることができ、その場合、詳細のプレビューが提案とともにインラインで表示されます。提案とともに詳細をインラインで表示すると、スペースを占有しすぎる可能性があるため、新しいブール値設定 editor.suggest.showInlineDetails を使用して無効にできるようになりました。

TypeScript の提案にパスを表示

TypeScript は、インポート文も追加する補完機能を提供できます。しかし、同じ名前のシンボルが複数ある場合、適切な補完を選択するのが困難でした。今回のリリースでは、自動インポート補完のパスがラベルとともに表示されるため、これがより簡単になりました。

TypeScript show import path

CodeLensをカスタマイズする

CodeLens 項目のフォントファミリーとサイズを構成できるようになりました。

Custom CodeLens font

上記のスクリーンキャプチャでは、フォントとサイズはこれら2つの設定を使用してカスタマイズされています。

"editor.codeLensFontFamily": "Comic Sans MS",
"editor.codeLensFontSize": 12,

エディター

スペースでインデントするときの粘着性タブストップ

コードのインデントにスペースを使用することを好む場合、新しい設定 editor.stickyTabStops があります。これにより、VS Code は、先行スペース内のカーソル移動をタブと同様に扱います。

Sticky Tab Stops

単語削除コマンド

既存の単語削除アクションは、現在のカーソル位置から単語の先頭まで(Windows/LinuxではCtrl+Backspaceなど)、または単語の末尾まで(Windows/LinuxではCtrl+Delete)削除します。カーソル下の単語全体を削除する新しいコマンド単語削除が追加されました。

差分エディターでの単語の折り返し

差分エディターのサイドバイサイドビューとインラインビューの両方が、単語の折り返しをサポートするようになりました。一般的に、差分エディターは単語の折り返しに関連するエディター設定を尊重します。Markdownファイルの場合、デフォルトで単語が折り返されるため、差分エディターもそれらを単語折り返しします。

Word wrap in the diff editor

差分エディターを常に折り返すか、常に折り返さないようにしたい場合は、新しい diffEditor.wordWrap 設定を使用して "on" または "off" に構成できます(デフォルトは "inherit" で、これは差分エディターがエディターの折り返し設定を継承することを意味します)。

スニペット

拡張機能のスニペットを非表示にする

拡張機能によって貢献されたスニペットは、IntelliSense から非表示にできるようになりました。この機能は、スニペットの挿入を実行したときに表示されるスニペットピッカーから利用できます。非表示にしたい拡張機能のスニペットを見つけて、右側にある目のアイコンを選択します。

Hide Extension Snippet

非表示のスニペットはIntelliSenseには表示されませんが、スニペットの挿入を介して引き続き使用できます。最後に、設定同期を使用すると、非表示のスニペット設定がデバイス間で同期されます。

プレフィックスなしのスニペット

スニペットを作成する際に、prefix プロパティを省略できるようになりました。プレフィックスのないスニペットは IntelliSense には表示されませんが、スニペットを挿入を介して使用できます。

統合ターミナル

ターミナル設定のサポート

ターミナルのドロップダウンメニューでターミナル設定の構成を選択することで、ターミナル設定を変更できるようになりました。

Configure Terminal Settings

キーバインディング管理

デフォルトでは、キーバインディングは terminal.integrated.commandsToSkipShell 設定で指定されているように、ターミナルではなくワークベンチにディスパッチされます。新しい通知により、これらのコマンドのいずれかに対応するキーバインディングを入力したときにユーザーに通知し、関連する設定を構成するオプションを提供します。

ほとんどのキーバインディングをワークベンチではなくターミナルに送信するには、terminal.integrated.sendKeybindingsToShell を設定できます。

Send Keybindings to Shell

言語

Markdown インラインのスマート選択

以下のコマンドを使用して、Markdown ドキュメントで選択範囲を拡大・縮小します。

  • 拡大: ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
  • 縮小: ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)

選択範囲は、イタリック、太字、インラインコードブロック、およびリンクに適用されます。

Smart select within a Markdown document expands from the content within an inline Markdown type to include the Markdown symbols.

TypeScript 4.1

今回のVS Codeのリリースには、TypeScript 4.1.2が含まれています。このTypeScriptのメジャーアップデートでは、テンプレートリテラル型やReact 17のファクトリのサポートなど、多くの新しい言語機能が追加され、JavaScriptとTypeScriptの言語ツールも改善されています。もちろん、多くのバグ修正も含まれています。

TypeScriptブログでTypeScript 4.1の詳細を読むことができます。

JSDoc @see タグの初期サポート

JSDoc @see タグを使用すると、JSDoc コメント内で他の関数やクラスを参照できます。以下の例では、crash 関数が別のファイルから WrappedError クラスを参照している様子を示しています。

// @filename: somewhere.ts
export class WrappedError extends Error { ... }

// @filename: ace.ts
import { WrappedError } from './somewhere'

/**
 * @see {WrappedError}
 */
function crash(kind) {
    throw new WrappedError(kind);
}

VS Code は、名前変更を実行する際に基本的な @see 参照を含むようになりました。また、@see タグのコンテンツに対して定義へ移動を実行することもでき、@see タグは参照リストにも表示されます。

今後のリリースでも @see タグのサポートを継続的に改善していく予定です。

IntelliSenseの動作と型チェックに関する新しい設定

明示的なtsconfigまたはjsconfigプロジェクトの一部ではないJavaScriptおよびTypeScriptファイルにおけるIntelliSenseと型チェックの動作を制御する2つの新しい設定が追加されました。

  • js/ts.implicitProjectConfig.strictNullChecks 設定は厳密な null チェックを有効にします。デフォルトは false です。

    TypeScript で作業している場合、多くの一般的なプログラミングミスを捕捉できるため、厳密な null チェックを有効にすることをお勧めします。

    厳密な null チェックは JavaScript での作業にも役立ちます。厳密な null チェックが有効になっている場合、ホバーと IntelliSense の情報には、どの型が undefinednull になり得るかが表示されます。JavaScript で型チェックを有効にすると、VS Code は厳密な null チェックを使用して一般的なプログラミングミスを捕捉することもできます。

  • js/ts.implicitProjectConfig.strictFunctionTypes 設定は、厳密な関数型を有効にします。デフォルトは true です。

    厳密な関数型は説明がより困難ですが、一般的に IntelliSense を改善し、いくつかのプログラミングミスを捕捉できます。

これらの設定は、ファイルが jsconfig または tsconfig プロジェクトの一部である場合は上書きされることに注意してください。

その他の暗黙的なJS/TSプロジェクト設定の名前変更

JavaScriptおよびTypeScriptのその他の暗黙的なプロジェクト設定が、より正確になるように名前変更されました。

  • javascript.implicitProjectConfig.checkJs -> js/ts.implicitProjectConfig.checkJs
  • javascript.implicitProjectConfig.experimentalDecorators -> js/ts.implicitProjectConfig.experimentalDecorators

これらの設定は、jsconfig または tsconfig プロジェクトの一部ではない JavaScript および TypeScript ファイルの両方に適用されるため、名前が変更されました。以前の設定名は、JavaScript ファイルにのみ適用されることを示唆していました。

HTML

新しいフォーマッター設定

HTML 拡張機能は、JSBeautify をフォーマッターとして使用しています。JSBeautify の最新バージョン (1.13) への更新により、いくつかの新しいフォーマッター設定が追加されました。

  • html.format.wrapAttributesIndentSize: html.format.wrapAttributesforce alignedaligned multipleを使用する場合の配置サイズ、またはデフォルトのインデントサイズを使用する場合はnull
  • html.format.templating: django、erb、handlebars、php のテンプレート言語タグを尊重します。
  • html.format.unformattedContentDelimiter: この文字列間でテキストコンテンツをまとめて保持します。

最後の設定では、書式設定しない領域をマークするタグを設定できます。

"html.format.unformattedContentDelimiter": "<!-- DoNotFormat -->"

Unformatted tag example

onTypeRenameの新しい設定名

一致する閉じタグが変更されたときにタグを編集する「入力時名前変更」機能は、現在「リンク編集」と呼ばれています。リンク編集を有効にするコマンドは「リンク編集の開始」(⇧⌘F2 (Windows, Linux Ctrl+Shift+F2))で、Escapeでリンク編集モードを無効にします。

それを有効にする設定は現在

"editor.linkedEditing": true

拡張機能への貢献

リモート開発

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

1.52の主な機能ハイライトは以下の通りです。

  • Linuxリモートでの自動ポート転送。
  • リモート拡張機能をローカルにインストールするための新しいコマンド。
  • コンテナ内でリポジトリを開く際にブランチを選択できるようになりました。
  • バックグラウンドでの拡張機能インストールによるサーバー起動パフォーマンスの改善。

新しい拡張機能の機能やバグ修正については、リモート開発リリースノートで確認できます。

ノートブック

VS Code チームは、ノートブックのネイティブサポートと、その UX およびパフォーマンスの改善に引き続き取り組んでいます

大容量テキスト出力のレンダリングを改善

ネイティブノートブックエディターは、コンテンツが大きすぎる場合、UIの応答性を常に確保するために出力を切り詰めるようになりました。出力の完全な生コンテンツはテキストエディターで開くことができます。

Large Output Rendering Optimization

拡張機能作成

ファイル装飾API

FileDecorationProvider APIは最終化され、任意の拡張機能で使用できるようになりました。このAPIを使用すると、周囲の情報をファイルに追加でき、エクスプローラーに表示されるSCMおよびエラーの装飾は、このAPIを使用します。

リソースの変更を元に戻す

ファイルの作成、ファイルの名前変更、ファイルの削除などのエクスプローラー操作は、たとえば onWillCreateFilesonWillRenameFiles、または onWillDeleteFiles のように、参加を可能にするイベントを発生させます。今回のリリースでは、このようなエクスプローラー操作を元に戻すサポートが追加されました。操作を元に戻す際には、上記のイベントは発生しないことに注意してください。

新しいテーマカラー

  • statusBarItem.errorBackground: ステータスバーのエラー項目の背景色。エラー項目は、エラー状態を示すために他のステータスバーエントリとは区別されます。
  • statusBarItem.errorForeground: ステータスバーのエラー項目の前景色。エラー項目は、エラー状態を示すために他のステータスバーエントリとは区別されます。

エラーの背景色

テーマ作成者は、エディターのエラーに新しいテーマ色を利用できるようになりました。エディターのエラー、警告、情報は、次のようにスタイルを設定できます。

  • editorError.background
  • editorWarning.background
  • editorInfo.background

Error background colors

更新された Codicons

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

  • チェックオール
  • サークルラージフィルド
  • サークルラージアウトライン
  • パスフィルド
  • ピン留め済みダーティ

Codicons updates

ビューコンテナとビューのcodiconsのサポート

ビューコンテナとビューのアイコンとしてcodiconsを使用できるようになりました。例:

"views": {
      "explorer": [
        {
          "id": "npm",
          "name": "NPM Scripts",
          "icon": "$(code)",
          "visibility": "hidden"
        }
      ]
  }

利用可能なアイコンのリストについては、アイコンリストを参照してください。

リンク編集範囲プロバイダー

以前はOnTypeRenameProviderとして知られていたものが、LinkedEditingRangeProviderとして公開APIになりました。

ドキュメント内の特定の位置に対して、LinkedEditingRangeProviderは同じコンテンツを持つ範囲をリンクします。ある範囲への変更は、他のすべての範囲に適用できます。

これはHTMLで実際に動作しているのを見ることができます。開始タグの名前を編集すると、閉じタグも自動的に更新されます。

FoldingRangeProvider.onDidChangeFoldingRanges

FoldingRangeProvider.onDidChangeFoldingRanges が公開 API になりました。これは、プロバイダーからの折りたたみ範囲が変更されたことを通知するオプションのイベントです。

クエリフィルター付きでキーボードショートカットエディターを開く

拡張機能は、workbench.action.openGlobalKeybindings コマンドを使用してキーボードショートカットエディターを開く際に、クエリテキストを渡せるようになりました。

vscode.commands.executeCommand('workbench.action.openGlobalKeybindings', 'query');

fs.isWritableFileSystem

新しい fs.isWritableFileSystem API を使用すると、特定のファイルシステムが書き込みをサポートしているかどうかを確認できます。たとえば、example:/path/to/file という URL のドキュメントが書き込み可能なファイルシステム上にあるかどうかを確認するには、次のようになります。

switch (vscode.fs.isWritableFileSystem('example')) {
  case true:
    // The `example` filesystem supports writing.
    // Keep in mind the permissions or other issues may still prevent
    // a file from being written.
    break;

  case false:
    // The `example` filesystem does not support writing (it is readonly).
    break;

  case undefined:
    // VS Code does not know about the `example` filesystem
    break;
}

カスタムエディターfs.isWritableFileSystem を使用して、読み取り専用UIを表示するかどうかを判断できます。

Markdown Tree tooltip API

TreeItemtooltipにMarkdownを使用するためのAPIが最終化されました。TreeItemを作成する際に、tooltipをMarkdown文字列に設定できます。または、Markdownの計算に時間がかかる可能性がある場合は、新しいTreeDataProvider.resolveTreeItemを使用してツールチップを設定できます。

Markdown tree tooltip

TreeItemハイライトAPI

待望のTreeItemLabel APIが最終化されました。このAPIは、TreeItemlabelにハイライトを設定するために使用できます。これは、参照ビューで実際に動作しているのを見ることができます。

Tree item highlights

listDoubleSelection と listMultiSelection

貢献されたツリービューでのコマンド有効化にコンテキスト値 listDoubleSelectionlistMultiSelection を使用できるようになりました。

ビューのウェルカムコンテンツボタンの有効化

ビューのウェルカムコンテンツセクションの有効化コンテキスト句を設定できるようになりました。

View welcome content button enablement

提案された拡張API

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

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

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

ステータスバーエントリの背景色API

StatusBarItem に新しいプロパティ backgroundColor を提案し、ステータスバーエントリの背景色を設定できるようにします。現在、ステータスバーが色鮮やかになりすぎるのを避けるため、statusBarItem.errorBackground のみがサポートされています。将来的に、より多くの色にこのサポートを拡大する可能性があります。

Status bar error in red

この新しいAPIのユースケースは、拡張機能がステータスバーにエラー状態を示すことを可能にすることです。例えば、ESLint拡張機能は、この色を使用して、ワークスペースでESLintがまだ有効になっていないことをユーザーに警告するかもしれません。

より多くのテーマ可能なアイコン

プロダクトアイコンテーマの作業が再開されました。プロダクトアイコンテーマは、VS Code をカスタムアイコンセットでスタイル設定できる提案中の機能です。これは、組み込みビューのすべてのアイコンだけでなく、Codicon ライブラリからアイコンを使用するすべての拡張機能でも機能します。プロダクトアイコンテーマは次回のマイルストーンで公開される予定です。

特にデバッグ、拡張機能、ターミナルビュー、設定、ノートブックエディターなど、さらに多くのアイコン名が追加されました。

更新されたアイコンリストをご覧ください。

提案されていたロギングAPIの削除

ロギングAPI、LogLevelonDidChangeLogLevelに関する提案は、約1年前に存在していましたが、現在は削除されました。拡張機能は、ロギングにアウトプットチャネルAPIを使用するか、カスタムロガーを使用する場合はExtensionContext#logUriを使用できます。

提案されているテストAPIの初期追加

私たちはVS Code でのテストについて調査しており、API の最初のバージョンが vscode.proposed.d.ts に存在しています。追加のコンテキストについてはリンクされた issue を読み、意見があれば参加してください。API のプロバイダ部分はオブザーバ部分よりもかなり早く出荷されると予想しています。

新しいコンテキストキー演算子

<<=>、または>=がコンテキストキー式で使用できるようになりました。以下は、2つ以上のワークスペースフォルダーが開かれている場合にのみ表示されるコマンドを寄与する例です。

"contributes": {
  "menus": {
    ...
    "when": "workspaceFolderCount >= 2"
    ...
  }
}

言語サーバープロトコル

言語サーバープロトコルのバージョン3.16の機能セットが最終決定され、LSPプロトコルサイトで利用できるようになりました。バージョン3.16の主なハイライトは以下の通りです。

詳細な変更ログには、既存の要求に対するすべての軽微な改善も含まれています。

デバッグアダプタープロトコル

条件付き例外のサポート

今回のマイルストーンで、2020年9月の条件付き例外の提案が最終化され、Debug Adapter Protocol (DAP) のバージョン1.43の一部となりました。

プロトコルへの追加により、setExceptionBreakpoints リクエストに、例外フィルターとその条件を設定するための新しいオプションの filterOptions プロパティが拡張されました。デバッグアダプターは、supportsExceptionFilterOptions 機能を通じて条件付き例外機能をサポートすることを表明できます。

StackTraceResponse.totalFrames の意味論の明確化

Debug Adapter Protocol の supportsDelayedStackTraceLoading 機能の説明は、遅延スタックフレーム読み込みを機能させるには、アダプターが StackTraceResponsetotalFrames フィールドに利用可能なスタックフレームの正しい数を設定する必要があることを示唆しているようです。しかし、一部のデバッガーやランタイムでは、この値を計算するのが容易ではないため、遅延スタックフレーム読み込みをサポートするにはコストがかかります。

フレームの総数はUIに表示されることがないため、totalFramesの元の(やや不十分な)意味論の説明を明確化しました。デバッグアダプターは、totalFramesに大きな(不正確な)値を提供しても構わず、クライアントは要求されたよりも少ないフレームを受け取ることを想定し、これをスタックの終わりに達したことを示すものとして使用すべきです。

RunInTerminalRequestArguments.cwd の意味論の明確化

runInTerminal リクエストの cwd プロパティ(「現在の作業ディレクトリ」)はオプションではないため、「気にしない」ケースを表現するためにプロパティを省略することはできません。たとえば、デバッグアダプターが「cwd」がすでに正しく、クライアントが「ディレクトリ変更」コマンドを生成する必要がないことを知っている場合、DAP 仕様はこの方法を記述していません。

この欠点に対処するため、DAP仕様を明確化し、cwd プロパティに空でないパスが含まれている場合にのみ、クライアントがディレクトリ変更コマンドを実行することを期待すると追記しました。

エンジニアリング

問題報告者とプロセスエクスプローラーでサンドボックスとコンテキスト分離が有効に

Electronのサンドボックスコンテキスト分離を有効にするためのさらなるフィードバックを得るため、プロセスエクスプローラーと問題報告者のウィンドウでこれを有効にすることを推進しました。この設定は最終的にメインのVS Codeウィンドウでもデフォルトになります。

  • sandbox が有効
  • contextIsolation が有効
  • リソースはカスタムの vscode-file スキームから提供されます(file ではありません)。

NPM依存関係のセキュアなサプライチェーン

ビルドパイプラインのセキュリティと信頼性を向上させるため、ソーススキャンおよびテストサービスを活用することで、NPM依存関係のサプライチェーンを改善しました。

Linux ARM リポジトリ

ARMアーキテクチャ(aarch64およびarmhf)向けのVS Codeは、以下のLinuxリポジトリで公開されています。

新しいコマンド

キー コマンド コマンドID
差分エディターでプライマリサイドにフォーカス workbench.action.compareEditor.focusPrimarySide
差分エディターでセカンダリサイドにフォーカス workbench.action.compareEditor.focusSecondarySide
差分エディターで反対側にフォーカス workbench.action.compareEditor.focusOtherSide

ドキュメント

リモート開発

VS Codeリモート開発について学ぶためのいくつかの新しい方法があります。

Learn module for Docker and VS Code

GitHub連携

Learn module for GitHub and VS Code

オープンソースでVS Codeをどのように作っているか

開発者Alex RossとBenjamin PaseroがGitHub Universeで開催したセッション「オープンソースでVS Codeをどのように作っているか」の録画をご覧ください。私たちのチームがどのようにVS Codeをオープンソースとして構築し、GitHubのコミュニティと協力しているかについて学べます。

ChromebookでのVS Code

ChromebookでVS Codeを実行できることをご存知でしたか?私たちは、これが学生やプログラミング初心者にとって素晴らしい選択肢だと考えています。JavaScriptとPythonを使用したコーディングの始め方を含む、ChromebookでのVS Codeのセットアップ方法(Crostini経由)については、ブログ記事「ChromebookでVS Codeを使って学習する」をご覧ください。

注目すべき修正点

  • 39543: 分割されたjson設定エディタの概要ルーラーで一致する単語をハイライト表示する。
  • 67905: 複数の拡張機能vsixファイルを同時にインストールする
  • 83187: ある設定の環境変数が別の設定に漏れる。
  • 88703: URI形式のフィールドのエラーが設定UIで報告されない
  • 97202: ${config} 変数がマルチルートワークスペース起動構成で解決に失敗する。
  • 98041: Emmetが数式評価の選択を無視する
  • 107320: メインを含む拡張機能をインストールする際にテーマセレクターが表示されるべきではない。
  • 107461: デバッグコンソールの履歴が保持されない
  • 109111: デバッグコンソールがユーザー設定を尊重しない。
  • 110077: データブレークポイントがブレークポイントビューに表示されない。
  • 110426: stdinからの読み取りを伴う--diffパラメーターをサポート
  • 110738: 拡張機能がカスタムファイルシステムスキームのエディターラベルを設定できるようにする
  • 110775: Shiftキーを押しながら右クリックすると「永久に削除」オプションがなくなる
  • 110854: 開いているエディターでファイルシステムプロバイダーの読み取り専用の変更をサポート
  • 110905: CLI: 拡張機能が既にインストールされている場合、強制されない限りマーケットプレイスにアクセスしない

ありがとうございます

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

問題追跡への貢献者

vscodeへの貢献者

language-server-protocolへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-eslintへの貢献者

vscode-js-debugへの貢献者

vscode-html-languageserviceへの貢献

node-jsonc-parserへの貢献

vscode-generator-codeへの貢献者

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