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 月リリースへようこそ。 11 月のイテレーション計画で発表した通り、私たちはイシューグルーミングガイドに記載されている通り、2 週間 GitHub イシューとプルリクエストの整理に引き続き注力しました。すべての VS Code リポジトリ全体で、私たちは5242個のイシューをクローズ (トリアージまたは修正) しました。これは、前回の整理イテレーションであった2019 年 10 月にクローズした4622個のイシューよりもさらに多い数です。私たちはイシューをクローズしましたが、皆さんは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 の 2 番目のウィンドウを起動する前に、ターミナルから環境変数を定義および変更できるようになり、これらは最初の起動時の変数を適切に上書きします。これにより、ウィンドウごとの環境変数が可能になります (例: これにより、Node.js のバージョンを nvm のようなツールでウィンドウごとに起動前に変更できます)。
  • VS Code の 2 番目のウィンドウを起動する前にターミナルから設定された環境変数は、その 2 番目のウィンドウでフォルダーを切り替えても保持されるようになりました。

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

ワークベンチ内にすべてのビューを収める十分なスペースがない場合、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 を再起動する必要があります。詳細はイシュー #109728をご覧ください。

ソース管理

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

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

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

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

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

Git: 新しいコマンド

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

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

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... コマンドを実行する際に、表示されるリファレンスとその順序を制御します。

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 を提供しコードナビゲーションを可能にし、デバッガー拡張機能はバグを深掘りできるようにします。時には、問題が拡張機能によって引き起こされているのか、そしてもしそうなら、どの拡張機能によって引き起こされているのかが明らかでないことがあります。今日まで、問題のある拡張機能を見つけるためには、すべての拡張機能を無効にしてから、一つずつ拡張機能を再度有効にする必要がありました。このプロセスは、拡張機能バイセクトという新しい機能で簡単になります。これは二分探索アルゴリズムを使用して、問題を引き起こしている拡張機能を迅速に特定します。基本的には、拡張機能を半分無効にし、見ていた問題がまだあるかどうかを尋ねます。問題がなくなった場合、問題のある拡張機能は無効になった拡張機能のリストにあったはずであり、現在有効になっている拡張機能のリストにはありません。このプロセスは、単一の拡張機能が残るまで繰り返されます。

拡張機能バイセクトは、コマンドパレットからヘルプ: 拡張機能バイセクトを開始コマンド (⇧⌘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 - ソースでフィルタリングします。

キーボードショートカットエディターの検索履歴を、および矢印を使用してナビゲートできるようになりました。

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 には表示されませんが、スニペットの挿入を介して引き続き使用できます。最後に、設定の同期を使用する場合、非表示のスニペットの優先設定はデバイス間で同期されます。

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

スニペットを作成する際に、プレフィックスプロパティを省略できるようになりました。プレフィックスのないスニペットは 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 4.1 の詳細については、TypeScript ブログをご覧ください。

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

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

// @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 設定はstrict null checksを有効にします。デフォルトは false です。

    TypeScript で作業している場合は、多くの一般的なプログラミングミスを検出できるため、strict null checks を有効にすることを強くお勧めします。

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

  • js/ts.implicitProjectConfig.strictFunctionTypes 設定はstrict function typesを有効にします。デフォルトは true です。

    strict function types は説明がより難しいですが、一般的に 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 を使用しています。

リソース変更の取り消し

ファイルの作成、名前変更、削除などのエクスプローラー操作はイベントを発生させ、例えば onWillCreateFilesonWillRenameFilesonWillDeleteFiles などの参加を可能にします。このリリースでは、このようなエクスプローラー操作の取り消しがサポートされ、操作を取り消す際には前述のイベントは発生しないことに注意してください。

新しいテーマカラー

  • statusBarItem.errorBackground: ステータスバーのエラーアイテムの背景色。エラーアイテムは、エラー状態を示すために他のステータスバーエントリよりも目立つように表示されます。
  • statusBarItem.errorForeground: ステータスバーのエラーアイテムの前景色。エラーアイテムは、エラー状態を示すために他のステータスバーエントリよりも目立つように表示されます。

エラー背景色

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

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

Error background colors

Codiconsの更新

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

  • check-all
  • circle-large-filled
  • circle-large-outline
  • pass-filled
  • pinned-dirty

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 を使用すると、特定のファイルシステムが書き込みをサポートしているか確認できます。例えば、URL が example:/path/to/file のドキュメントが書き込み可能なファイルシステム上にあるか確認するには、次のようにします。

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ツリーのツールチップ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の削除

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

提案されたテストAPIの最初の追加

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

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

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

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

Language Server Protocol

Language Server Protocol のバージョン 3.16 の機能セットは最終決定され、LSP プロトコルサイトで入手可能です。バージョン 3.16 の主なハイライトは次のとおりです。

詳細な変更ログには、既存のリクエストに対するすべての細かい改善も含まれています。

Debug Adapter Protocol

条件付き例外のサポート

このマイルストーンでは、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 プロパティ ("current working directory") はオプションではないため、「気にしない」ケースを表現するためにプロパティを省略することはできません。例えば、デバッグアダプターが 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を実行できることをご存知でしたか?これは学生やプログラミング初心者にとって素晴らしい選択肢だと考えています。Crostiniを介してChrome OSでVS Codeをセットアップする方法を、JavaScriptとPythonを使ったコーディングの開始方法も含む私たちのブログ投稿ChromebookでVS Codeを使って学習するで学んでください。

注目すべき修正点

  • 39543: 分割されたJSON設定エディターの概要ルーラーで一致した単語をハイライト表示する。
  • 67905: 複数の拡張機能vsixファイルを同時にインストールする
  • 83187: 1つの構成の環境変数が別の構成に漏れる。
  • 88703: URI形式のフィールドのエラーが設定UIで報告されない
  • 97202: ${config} 変数がマルチルートワークスペースの起動構成で解決に失敗する。
  • 98041: Emmetが数式評価時に選択を無視する
  • 107320: mainを含む拡張機能をインストールしてもテーマセレクターは表示されないはず。
  • 107461: デバッグコンソールの履歴が保持されない
  • 109111: デバッグコンソールがユーザー設定を尊重しない。
  • 110077: データブレークポイントがブレークポイントビューに表示されない。
  • 110426: 標準入力からの読み取りで --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へのコントリビューション