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

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

アップデート 1.52.1: このアップデートでは、以下の課題に対応しています。

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


Visual Studio Code の2020年11月リリースへようこそ。 11月のイテレーション計画でお知らせした通り、私たちは課題グルーミングガイドに記載されているように、GitHub の課題とプルリクエストの整理に2週間引き続き注力しました。すべての VS Code リポジトリ全体で、**5242** の課題をクローズ(トリアージまたは修正)しました。これは、**4622** の課題をクローズした2019年10月の最後の整理イテレーションよりもさらに多くの数です。課題をクローズする一方で、**2937** の新しい課題が作成されました。主要なvscode リポジトリには現在、2146 の未解決の機能リクエストと 884 の未解決のバグがあります。さらに、**144** のプルリクエストをクローズしました。

毎年同様に、Benjamin Lannonライブトラッカーを使用して進捗状況を追跡しました。

Burn down chart of VS Code issues

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

Workbench

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

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

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

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

Go to Definition

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

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

注: カスタムツリー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

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

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

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 のセカンドウィンドウを起動する前に、ターミナルから環境変数を定義したり変更したりできるようになりました。これにより、最初の起動からの変数が適切に上書きされ、実質的にウィンドウごとの環境変数が可能になります(例えば、これにより、起動前にウィンドウごとに `nvm` のようなツールを使って Node.js のバージョンを変更できます)。
  • 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 を再起動する必要があります。詳細については、課題 #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を実行する際に、ソース管理入力ボックスのコミットメッセージを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 は、ブレークポイントビューから条件の編集コンテキストメニューアクションを使用して、例外ブレークポイントの条件を編集できるようになりました。

現時点では、モックデバッグ拡張機能のみが(擬似的な)例外ブレークポイント条件をサポートしていますが、まもなく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

キーボードショートカットエディタから、1つのコマンドに複数のキーバインディングを追加できます。

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

スペースでのインデント時の粘着性タブストップ

コードをスペースでインデントすることを好む場合は、新しい設定 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 設定は厳密な 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 aligned および aligned 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 リモートでの自動ポート転送。
  • リモート拡張機能をローカルにインストールする新しいコマンド。
  • コンテナでリポジトリを開く際にブランチを選択できるようになりました。
  • バックグラウンドで拡張機能をインストールすることによるサーバー起動パフォーマンスの向上。

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

ノートブック

VS Code チームは、Notebook のネイティブサポートと 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

Codicon の更新

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

  • すべてチェック
  • circle-large-filled
  • circle-large-outline
  • 合格-塗りつぶし
  • ピン留め-ダーティ

Codicons updates

ビューコンテナーとビューへのコディコンサポート

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

"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 (LogLevel および onDidChangeLogLevel) の提案は、現在削除されました。拡張機能はロギングにアウトプットチャネル 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 プロパティ(「現在の作業ディレクトリ」)はオプションではないため、「気にしない」ケースを表現するためにこのプロパティを省略することはできません。たとえば、デバッグアダプターが「cwd」がすでに正しく、クライアントが「ディレクトリ変更」コマンドを生成する必要がないことを知っている場合、DAP 仕様ではこれをどのように実現するかは説明されていませんでした。

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

エンジニアリング

課題レポートおよびプロセスエクスプローラーでのサンドボックスとコンテキスト分離の有効化

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 Remote Development について学ぶ新しい方法がいくつかあります。

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: ある設定からの環境変数が別の設定に漏れる。
  • 88703: 設定 UI で URI 形式のフィールドのエラーが報告されない
  • 97202: ${config} 変数がマルチルートワークスペースの起動設定で解決に失敗する。
  • 98041: Emmet が数式評価時に選択を無視する
  • 107320: main を含む拡張機能をインストールするときにテーマセレクターが表示されないようにする。
  • 107461: デバッグコンソールの履歴が保存されない
  • 109111: デバッグコンソールがユーザー設定を尊重しない。
  • 110077: データブレークポイントがブレークポイントビューに表示されない。
  • 110426: stdin から読み取る --diff パラメーターをサポートする
  • 110738: 拡張機能がカスタムファイルシステムスキームのエディタラベルを設定できるようにする
  • 110775: Shiftキーを押しながら右クリックすると「完全に削除」オプションがなくなる
  • 110854: 開いているエディターでのファイルシステムプロバイダーの読み取り専用変更をサポートする
  • 110905: CLI: 強制されない限り、拡張機能がすでにインストールされている場合は Marketplace にアクセスしない

ありがとうございます

最後に、今月 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へのコントリビューション

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