🚀 VS Codeでで入手しましょう!

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

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

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


Visual Studio Code 2020年11月リリースへようこそ。11月のイテレーション計画でお知らせしたように、私たちはissue grooming guideに記載されているように、GitHub issueとpull requestの整理に2週間引き続き取り組みました。すべてのVS Codeリポジトリ全体で、5242件のissueをクローズ(トリアージまたは修正)しました。これは、前回の整理イテレーションである2019年10月4622件よりも多くなっています。issueをクローズする一方で、2937件の新しいissueが作成されました。メインのvscodeリポジトリには現在、2146件の未解決の機能リクエストと884件の未解決のバグがあります。さらに、144件のpull requestをクローズしました。

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

Burn down chart of VS Code issues

ハウスキーピングに注力した後、いくつかの機能リクエストとコミュニティからのpull requestにも対応しました。その結果、多くの新機能と設定が追加されました。主なハイライトは次のとおりです。

ワークベンチ

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

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

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

コードナビゲーション(例えば、定義へ移動)を開始すると、開始元のエディターはプレビューモードから移動して開き続けますが、新しいエディターはさらにナビゲートするまでプレビューモードになります。

Go to Definition

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

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

注: カスタムツリーAPIを使用している拡張機能の作成者も、この変更の恩恵を受けることができます。新しいプレビューモードの動作を得るには、`TreeItem.command`に`vscode.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)を押したままにすることで、ドラッグアンドドロップ操作中にこれを条件付きで切り替える方法もあります。

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

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

Selecting undo from the Edit menu while in the Explorer

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

長時間実行されるファイル操作(500ミリ秒以上)の進捗状況をファイルエクスプローラーとステータスバーに表示するようになりました。長時間実行される操作をキャンセルするための初期サポートもあります。これは、大きなフォルダーをコピーしたり、リモートロケーションからリソースをダウンロードしたりする場合に役立ちます。

Showing progress in the File Explorer

開いているエディターのソート

OPEN EDITORSリストのソート順を制御するための新しい設定`explorer.openEditors.sortOrder`が追加されました。

値は次のとおりです。

  • `editorOrder` - エディターはエディタータブが表示される順にリストされます(デフォルト)。
  • `alphabetical` - エディターは各エディターグループ内でアルファベット順にリストされます。

`alphabetical`ソートは、開いているエディタービューにのみ影響を与えます。タブを「移動」することはありません。

これは、多数のファイルを開いていて、関連付けられているファイル(例えば、hello.component.jsとhello.component.html)を照合したい場合に役立ちます。

Open Editors sorted

アクセシブルな進捗状況コントロール

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

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

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

SCM changes showing parent folder path

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

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

ターミナル環境処理の改善 (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番目のウィンドウを起動できるようになりました。これらは最初の起動からの変数を適切に上書きし、ウィンドウごとの環境変数を効果的に許可します(例えば、これにより、起動前にウィンドウごとに`nvm`などのツールを使用してNode.jsバージョンを変更できます)。
  • ターミナルから設定された環境変数は、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を手動で再起動する必要があります。詳細については、issue #109728をご覧ください。

ソース管理

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

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

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

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

  • `diff` - クリック時にインライン差分ピークビューを開く(デフォルト)。
  • `none` - アクションを無効にする。

Git: 新しいコマンド

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

  • Git: Cherry Pick... - 特定のコミットをブランチにcherry-pickします。
  • Git: 名前変更 - アクティブなファイルのgit名前変更を実行します。
  • Git: タグをプッシュ - すべてのローカルタグをリモートにプッシュします。
  • Git: チェックアウト先 (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: 削除されたファイルのmerge conflictに対するより良い差分

削除されたファイルのmerge conflictは、差分エクスペリエンスが改善され、削除とは反対のブランチ上のファイルの実際の変更が表示されるようになりました。

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デバッガー

変更の完全なリストは、デバッガーのchangelogにあります。

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

デバッグを妨げる、またはブレークポイントのバインドを妨げるビルドまたは構成の問題のトラブルシューティングに役立つように設計された新しいツールがあります。これを使用するには、デバッグセッションの実行中に「デバッグ: 現在のセッションの診断情報を作成」コマンドを実行します。今後の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つずつ再度有効にする必要がありました。このプロセスは、拡張機能の二分法と呼ばれる新機能により、簡単になりました。これは、バイナリ検索アルゴリズムを使用して、問題を引き起こしている拡張機能を迅速に特定します。基本的には、拡張機能の半分を無効にし、表示されていた問題を確認するように求めます。問題がなくなった場合、問題のある拡張機能は、現在有効になっている拡張機能のリストではなく、無効になっている拡張機能のリストに含まれている必要があります。このプロセスは、単一の拡張機能のみが残るまで繰り返されます。

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

Start Extension Bisect

Extension Bisect prompting during process

拡張機能の二分法では、問題が再現されているかどうかを繰り返し確認するように求められます。いつでも[二分法を停止]で中止でき、二分法通知を閉じると、[ヘルプ: 拡張機能の二分法を続行]コマンドで続行できます。

Extension Bisect done

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

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

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

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

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は、importステートメントも追加する補完を提供できます。ただし、同じ名前のシンボルが複数ある場合、適切な補完を選択するのは困難です。このリリースでは、自動インポート補完のパスがラベルとともに表示されるため、これが簡単になります。

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キー)削除します。カーソル下の単語全体を削除する新しいコマンド「単語削除」が追加されました。

diffエディターでのワードラップ

diffエディターのサイドバイサイドビューとインラインビューの両方が、ワードラップをサポートするようになりました。一般に、diffエディターはワードラップに関連するエディター設定を尊重します。デフォルトでワードラップされるMarkdownファイルの場合、diffエディターもワードラップします。

Word wrap in the diff editor

diffエディターでワードラップを常にオフまたは常にオンにしたい場合は、新しい`diffEditor.wordWrap`設定を使用して、`"on"`または`"off"`に構成できます(デフォルトは`"inherit"`で、diffエディターはエディターのワードラップ設定を継承することを意味します)。

スニペット

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

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

Hide Extension Snippet

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

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

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

統合ターミナル

ターミナル構成のサポート

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

Configure Terminal Settings

キーバインディングの管理

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

ほとんどのキーバインディングをワークベンチではなくターミナルに送信するには、`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 のファクトリ](https://react.dokyumento.jp/blog/2020/10/20/react-v17-0.html#new-jsx-transform) のサポートなど、多数の新言語機能が導入され、JavaScript および TypeScript の言語ツールが改善されています。これまでと同様に、多くのバグ修正も含まれています。

TypeScript 4.1 の詳細については、TypeScript Blog を参照してください。

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 の新しい設定名

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

それを有効にする設定は次のとおりです。

"editor.linkedEditing": true

拡張機能への貢献

Remote Development

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

1.52 の機能ハイライトは次のとおりです。

  • Linux リモートでの自動ポートフォワーディング。
  • リモート拡張機能をローカルにインストールする新しいコマンド。
  • コンテナーでリポジトリを開くときにブランチを選択できるようになりました。
  • バックグラウンドで拡張機能をインストールすることにより、サーバーの起動パフォーマンスが向上しました。

新しい拡張機能の機能とバグ修正については、Remote Development リリースノート を参照してください。

Notebooks

VS Code チームは、Notebooks のネイティブサポートと UX およびパフォーマンスの向上に関する 作業を継続しています

大きなテキスト出力のレンダリングの改善

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

Large Output Rendering Optimization

拡張機能の作成

ファイル装飾 API

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

リソース変更の取り消し

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

新しいテーマカラー

  • 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 を使用すると、特定のファイルシステムが書き込みをサポートしているかどうかを確認できます。たとえば、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 を使用して tooltip を設定できます。

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 ライブラリのアイコンを使用するすべての拡張機能で機能します。製品アイコンテーマは、次のマイルストーンで公開される予定です。

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

更新された アイコンリスト を確認してください。

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

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

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

VS Code での テスト を調査しており、API の最初のバージョンが vscode.proposed.d.ts に存在するようになりました。追加のコンテキストについては、リンクされた issue をお読みになり、入力がある場合は参加してください。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 の一部になりました。

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

StackTraceResponse.totalFrames のセマンティクスを明確化

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

フレームの総数は UI に表示されないため、totalFrames の元の(やや欠けている)セマンティクスの説明を明確にしました。デバッグアダプターは totalFrames に大きな(不正な)値を自由に提供できるようになり、クライアントはリクエストされたフレーム数よりも少ないフレームを受け取る準備をする必要があり、これをスタックの最後に到達したことを示す指標として使用する必要があります。

RunInTerminalRequestArguments.cwd のセマンティクスを明確化

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

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

エンジニアリング

Issue Reporter と Process Explorer でサンドボックスとコンテキスト分離を有効化

Electron の サンドボックスコンテキスト分離 を有効にすることからのフィードバックをさらに得るために、Process Explorer と Issue Reporter ウィンドウで有効にするようにプッシュしました。この構成は、最終的にはメインの 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

ドキュメント

Remote Development

VS Code Remote Development について学ぶためのいくつかの新しい方法があります。

Learn module for Docker and VS Code

GitHub 統合

Learn module for GitHub and VS Code

オープンな VS Code の作り方

GitHub Universe での開発者 Alex Ross と Benjamin Pasero のセッション オープンな VS Code の作り方 の録画を視聴して、私たちのチームが VS Code をオープンソースとして構築し、GitHub でコミュニティとどのように協力しているかを学んでください。

Chromebook での VS Code

Chromebook で VS Code を実行できることをご存知ですか?これは学生やプログラミング初心者にとって最適な選択肢であると考えています。JavaScript と Python を使用したコーディングを始めるための手順を含む、Chromebook で VS Code を学習する ブログ記事で、Chrome OS ( Crostini 経由) で VS Code をセットアップする方法を学びましょう。

注目すべき修正

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

謝辞

最後になりましたが、今月 VS Code に貢献してくれた次の皆様に心から感謝申し上げます。

Issue tracking への貢献

vscode への貢献

language-server-protocol への貢献

vscode-languageserver-node への貢献

vscode-eslint への貢献

vscode-js-debug への貢献

vscode-html-languageservice への貢献

node-jsonc-parser への貢献

vscode-generator-code への貢献

vscode-vsce への貢献