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

2023年3月 (バージョン 1.77)

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

Update 1.77.2: このアップデートでは、このセキュリティissueに対処しています。

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

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


Visual Studio Code 2023年3月リリースへようこそ。このバージョンには多くのアップデートが含まれており、皆様に気に入っていただけることを願っています。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読むには、code.visualstudio.comUpdatesをご覧ください。

Insiders: 最新機能をいち早く試したいですか?夜間のInsidersビルドをダウンロードして、最新のアップデートが利用可能になり次第お試しください。

アクセシビリティ

ターミナルアクセシブルバッファーの改善

スクリーンリーダーユーザーがターミナル: アクセシブルバッファーにフォーカス (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) を介してターミナルのコンテンツにアクセスできるようにするターミナルアクセシブルバッファーが、動的に更新され、EscapeキーまたはTabキーを使用してセッションを終了するまでアクティブなままになります。

シェル統合されたターミナルでアクセシブルバッファーにフォーカスがある場合、アクセシブルビューでシンボルへ移動 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) を使用すると、エディターがエディターでシンボルへ移動...でナビゲートできるのと同様に、ターミナルコマンド間をナビゲートできます。

ホバーコントロールのナビゲーション

ホバーコントロールにフォーカスし、updownhomeendpage uppage downキーで水平方向および垂直方向にスクロールできるようになりました。ホバーコントロールにフォーカスするためのキーボードショートカット (⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I)) は、プライマリーカーソル位置にホバーを表示するために使用されるものと同じです。

通知のプライマリーアクションを許可

通知のプライマリーアクションを許可するには、ユーザーはこれまで通知センターに移動する必要がありました。通知: プライマリーアクションを許可 (⇧⌘A (Windows, Linux Ctrl+Shift+A)) は、現在のコンテキストから離れることなくプライマリーアクションを実行します。

スティッキー スクロールのナビゲーション

スティッキー スクロール行にフォーカスし、upキーとdownキーでナビゲートできるようになりました。Enterキーを使用して、選択した行に移動できます。スティッキー スクロールにフォーカスするには、コマンドパレットからスティッキー スクロールにフォーカスを実行します。表示: スティッキー スクロールの切り替えコマンドを使用して、スティッキー スクロールUIを有効にします。

ワークベンチ

GitHubリポジトリで作業している場合、エディター行または範囲のディープリンクをエディターガターからコピーできるようになりました。

VS Code Desktopで、エディターガターからGitHubパーマリンクとHEADリンクを作成できるようにするには、GitHub Pull Requests and Issues拡張機能をインストールする必要があります。vscode.devでは、GitHubリポジトリのディープリンクはすぐに利用できます。

これらのアクションは、エディタータブのコンテキストメニューとエクスプローラーのコンテキストメニューの共有サブメニューにも追加されました。

ファイルコンテンツによる拡張機能の推奨

VS Codeは、ファイルコンテンツに基づいて拡張機能を推奨できるようになりました。たとえば、ノートブックセル構文を持つPythonファイルを開くと、VS Codeはこれらのセルを適切にレンダリングおよび実行するためにJupyter拡張機能を推奨します。

スティッキー スクロールのデフォルトプロバイダーを選択

スティッキー スクロール (表示: スティッキー スクロールの切り替え) は、複数の異なるコンテンツモデルを使用して見出しを作成します。アウトラインプロバイダーモデル、フォールディングプロバイダーモデル、およびインデントモデルの中から、スティッキー スクロールUIに表示する行を決定するために使用するモデルを選択できるようになりました。現在の言語でモデルが利用できない場合、VS Codeは前述の順序で次のモデルにフォールバックします。最初に使用されるデフォルトモデルは、エディター > スティッキー スクロール: デフォルト モデル (editor.stickyScroll.defaultModel) で変更できます。

ターミナル

タブホバーの改善

ターミナルタブホバーに、シェルのプロセスID、完全なコマンドライン、および拡張機能の環境変数コントリビューションの改善されたビューが表示されるようになりました。

Hovering the terminal tab will reveal details about the terminal, this can be triggered with the keyboard via Ctrl/Cmd+K, Ctrl/Cmd+I

ソース管理

リモートリポジトリでのGit LFSコミットのサポート

GitHubおよびAzure Reposリポジトリを編集するときに、Git LFSをインストールせずにLFS追跡ファイルをコミットできるようになりました。開始するには、VS Code DesktopにGitHub RepositoriesまたはAzure Repos拡張機能をインストールし、リモートリポジトリを開くコマンドを実行してリポジトリを開き、ソース管理ビューを使用して変更をコミットします。拡張機能は.gitattributes構成を解析して、変更されたファイルをリポジトリプロバイダーのGit LFSストレージにコミットする必要があるかどうかを判断します。

この動作を無効にするには、"githubRepositories.experimental.lfs.write.enabled": falseおよび"azureRepos.experimental.lfs.write.enabled": falseを設定できます。

: VS Code for the Web (vscode.dev) のサポートはまだ利用できません。

3方向マージエディターのドキュメント

マージコンフリクトの解決に役立つ3方向マージエディターをまだ試していない場合は、ソース管理ドキュメントの3方向マージエディターセクションを確認してください。3方向マージエディターを使用すると、受信した変更と現在の変更を同時に表示および選択したり、結果をプレビューしたり、変更前のファイルのベースバージョンを確認したりすることもできます。

3-way merge editor

また、マージコンフリクトに関する非常に役立つガイドYouTubeビデオもお見逃しなく。このビデオでは、3方向マージエディターが紹介されています。

ノートブック

保存時に整形

ノートブックで保存時に整形を有効にできるようになりました。これにより、保存時にノートブック全体が整形されます。notebook.formatOnSave.enabledtrueに設定することで、これを有効にできます。

ノートブックの出力検索がデフォルトで有効

ノートブックで検索コントロールを開くと、デフォルトでセル入力と出力内のテキストが検索されるようになりました。フィルタードロップダウンのオプションを変更することで、これをオフにできます。

スクロール可能な出力領域

notebook.output.scrollingをtrueに設定すると、notebook.output.textLineLimitを超える出力とエラーは、スクロール可能な領域内にレンダリングされます。

言語

TypeScript 5.0

VS Codeには、TypeScript 5.0.2が同梱されるようになりました。このメジャーアップデートでは、新しいTypeScript言語機能、パフォーマンスの向上、および多くの重要な改善とバグ修正がもたらされます。TypeScript 5.0の詳細については、TypeScriptブログをご覧ください。

JavaScriptおよびTypeScriptのswitch case補完

VS Codeは、JavaScriptまたはTypeScriptのリテラル型に対するswitch文の足場を作成するのに役立つようになりました。

switch文の中でcaseと入力し、case ...の候補を受け入れます。これにより、この型のすべての値に対するcaseが自動的に挿入されます。これは、切り替え対象の値がユニオン型またはリテラル型の場合にのみ機能することに注意してください。

VS Code for the Web

.gitignoreのサポート

このマイルストーンでは、VS Code for the WebのGitHubおよびAzure Reposリポジトリで.gitignoreファイルのサポートを追加しました。下のビデオでは、.gitignoreによって追跡されていないファイルはエクスプローラービューでグレー表示され、ソース管理ビューには表示されません。これは、GitHub RepositoriesまたはAzure Repos拡張機能を使用して、VS Code Desktopでリモートでリポジトリを閲覧する場合にも機能します。

下の短いビデオでは、.pxtフォルダーを.gitignoreに追加して、含まれるファイルをソース管理ビューから非表示にしています。

リモート開発

Remote Development拡張機能を使用すると、Dev Container、SSH経由のリモートマシン、またはRemote Tunnels、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

Dev Containerを使用すると、コンテナをフル機能の開発環境として使用できます。Dev Container Specificationは、既存のフォーマットを共通の開発設定、ツール、および構成で強化しながら、簡素化された、調整されていない単一のコンテナオプションを提供する方法を模索しています。Dev Containerと仕様の詳細については、Changelog podcastのエピソード#529をご覧ください。

その他のRemote Developmentのハイライトには、以下が含まれます。

  • Remote Tunnels - 既存のトンネルの再利用性の向上。
  • Remote Tunnels - ローカル開発にすばやく移行するためのVS Code Desktopで作業を続けるコマンド。
  • Dev Containers - 未使用のDev Containerとボリュームの簡単なクリーンアップ。

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

拡張機能

拡張機能のインストールが署名検証の失敗によってブロックされない

拡張機能の署名検証は、少数の有効な拡張機能に対して誤ってエラーを報告し、インストールを妨げています。これらの失敗は、VS MarketplaceとVS Codeのバグによって引き起こされており、現在修正に積極的に取り組んでいます。拡張機能の使用をブロック解除するために、署名検証が失敗した場合でも、VS Codeは拡張機能をインストールします。VS Marketplace issue #619が修正され次第、署名検証チェックを再度有効にします。これは、おそらく次回の安定版リリースで行われます。

拡張機能への貢献

Python

シンボルの移動リファクタリング

新しいシンボルを移動コードアクションのおかげで、Pylanceを使用してPythonコードをより便利にリファクタリングできるようになりました!

試してみるには、Pythonファイルでシンボルを選択し、表示される電球 (⌘. (Windows, Linux Ctrl+.)) をクリックします。シンボルを既存のファイルまたは新しいファイルに移動できます。場所が新しいファイルの場合、シンボルと同じ名前のPythonファイルが作成されます。該当するすべてのインポート参照は、シンボルの移動とともに自動的に更新されます。

依存関係ファイルから環境を作成

requirements.txtまたはpyproject.tomlファイルを開くと、エディターに新しい環境を作成...ボタンが表示され、Python: 環境を作成コマンドを実行して、新しい仮想環境を作成し、リストされた依存関係をインストールできます。

A pyproject.toml file open with dependencies listed, and a Create Environment button displayed on the bottom right corner for the editor

拡張機能作成者向けの環境APIの最終決定

ユーザーのマシンで利用可能なPython環境を操作するためのPython拡張機能のAPIが最終決定されました。拡張機能は、APIを使用して、スクリプトを実行するためにPython拡張機能で使用される選択された環境パスにアクセスしたり、パスを優先パスに更新したりすることもできます。

APIの使用例は、Python Environment APIs wikiページにあります。また、Python拡張機能APIの変更を簡単に追跡できるように、npm typesパッケージを将来リリースする予定です。

Jupyter

Python環境向けのカーネルピッカーの改善

カーネルピッカーは、Pythonランタイムがインストールされていなくても、conda環境をリストするようになりました。

たとえば、conda create -n envMLなどのCLIを使用して新しいconda環境を作成した場合、この新しい環境は、PythonなしのConda Envセクションの下のPython環境のリストに表示されます。

このような環境を選択すると、Pythonランタイムと必要な依存関係が環境に自動的にインストールされます。

Notebook kernel picker with ability to select empty conda environments

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues拡張機能では、プルリクエストとissueの作業、作成、および管理を行うことができ、さらに進捗がありました。ハイライトには、以下が含まれます。

  • プルリクエストは、プルリクエストビューからvscode.devで開くことができます。
  • プルリクエストを作成ビューで自動マージオプションをチェックするための新しい設定があります: githubPullRequests.setAutoMerge

その他のハイライトについては、拡張機能のchangelog for the 0.62.0リリースを確認してください。

GitHub Copilot

GitHub Copilotは、コードをより速く、よりスマートに記述するのに役立つAIペアプログラマーツールです。VS CodeでCopilot拡張機能を使用して、コードを生成したり、生成されたコードから学習したり、エディターを構成したりすることもできます。

GitHub Copilot extension

VS Codeへのより深いCopilot統合のプレビューを発表できることを嬉しく思います。GitHub Copilot Chat拡張機能を使用すると、次のような新機能を試すことができます。

  • インラインサジェスト: Copilotの提案は、コード内で作業しているときにインラインで表示されます。
  • チャットビュー: GitHub Copilot Chatビューで、タスクまたは質問に関するヘルプをCopilotに求めます。
  • インラインチャット: ファイル内でコードを記述しながら、Copilotとインラインで会話します。

Copilotにバグを探したり、トリッキーなコードを説明したり、テストを作成したり、VS Codeについて質問したりすることもできます。

Copilot chat example asking how to change VS Code colors

VS CodeチームのエクスペリエンスとCopilotの将来の詳細については、VS CodeとGitHub Copilotブログ投稿をご覧ください。VS CodeでのCopilotの使用に関する詳細については、VS CodeのGitHub Copilot記事もご覧ください。

プレビュー機能

ノートブックの出力検索のサポート

前回のイテレーションでは、開いているノートブックの整形されたノートブックコンテンツのグローバル検索を導入しましたが、セルとMarkdown入力のみが対象でした。今回のイテレーションでは、ノートブック出力の検索のサポートを追加しました。ノートブックを開いている場合、ノートブックの検索場所をカスタマイズできるトグルがあります。search.experimental.notebookSearchを有効にして、お試しください!

ようこそページのRemote connectionピッカー

ようこそページは、リモート接続 (SSH、Remote Tunnels、GitHub Codespacesなど) を開始するのに役立つ実験的なリモート接続ピッカー接続先...をスタートリストでサポートするようになりました。この機能はデフォルトで無効になっており、workbench.remote.experimental.showStartListEntrytrueに設定することで有効にできます。

拡張機能の作成

今後のElectron 22アップデートはネイティブモジュールの変更が必要になる可能性があります

次回の安定版リリースでElectron 22にアップデートする予定です。これにより、V8 memory cageを有効にすることで、ネイティブモジュールを使用する拡張機能に影響が出ます。外部 ("オフヒープ") メモリを指すArrayBuffersは許可されなくなりました。

アップデートされていないネイティブモジュールが引き続き動作するように、カスタムメモリアロケーターを提供する予定ですが、それでも、割り当てられた外部メモリの使用状況を確認することをお勧めします。この変更を採用する方法については、Electronブログ投稿のアドバイスに従ってください。

継続的なテスト実行の最終決定されたサポート

継続的なテスト実行のサポートが最終決定されました。このAPIを使用すると、ユーザーはテスト拡張機能にテストを「監視」し、変更が行われたときに実行を継続するように指示できます。

const profile = ctrl.createRunProfile(/* ... */);
+profile.supportsContinuousRun = true;

function runHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) {
+  if (request.continuous) {
+    startWatchingAndRunningTests(request);
+  }

  // ...
}

新しいwhen句パーサー

このVS Codeリリースには、新しい機能 (たとえば、括弧のサポート) とより優れた正確性だけでなく、より厳密なルールを提供するwhen句の新しいパーサーが含まれています。リリースには、拡張機能マニフェストファイル (package.json) のwhen句のリンターも含まれており、構文的に正しいことを確認します。新しいパーサーで破損する可能性のあるwhen句を確認することをお勧めします。また、when句で括弧を使用する場合、拡張機能はVS Codeバージョン1.77以降と互換性があります。issue #175540に変更に関する詳細情報があります。

ソース管理入力でのインライン補完

ソース管理入力ボックスは、インライン補完をサポートするようになりました。

The inline suggestions extension sample running in the Source Control input

ソース管理入力ボックスのドキュメント言語識別子scminputです。

提案されたAPI

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

  1. 試したい提案を見つけ、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新のvscode-dtsを使用し、vscode-dts devを実行します。コマンドは、対応するd.tsファイルをワークスペースにダウンロードします。
  3. これで、提案に対してプログラミングできます。

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

エディターガターに提案されたコンテキストメニュー

editor/lineNumber/context提案されたメニューは、エディターガターとエディター行番号にアンカーされており、特定の行にコンテキスト化された拡張機能のアクションを表示する方法を提供します。

開発でこれを試すには、contribEditorLineNumberMenu API提案を有効にします。このメニューに追加されたアクションは、コマンド引数で行番号を受け取り、when句でeditorLineNumberコンテキストキーを参照できます。API提案issue #175945でフィードバックを残すことができます。

ノートブックライフサイクルイベント: onWillSaveNotebookDocument

onWillSaveNotebookDocumentイベントは、ノートブックドキュメントが保存される前に発生します。このイベントは、ノートブックドキュメントが保存される前に何らかのアクションを実行したい拡張機能に役立ちます。たとえば、ノートブックセル出力を保存する前にクリーンアップしたい拡張機能は、このイベントのリスナーを登録し、適用するセル出力編集を返すことができます。

拡張機能がこのイベントのリスナーを登録する方法を次に示します。

vscode.workspace.onWillSaveNotebookDocument(e => {
    if (event.reason == vscode.NotebookDocumentSaveReason.Manual) {
      event.waitUntil(new Promise((resolve) => {
        const notebookEdit = new vscode.NotebookEdit(...);
        const edit = new vscode.WorkspaceEdit();
        edit.set(event.document.uri, [notebookEdit]);
        resolve([edit]);
      }));
    }
});

エンジニアリング

Windows 8および8.1のEOL警告

VS Code Desktopは、次の数回のマイルストーンでElectron >=23にアップデートされます。Electron 23アップデートにより、VS Code desktopはWindows 8 / Windows Server 2012およびWindows 8.1 / Windows Server 2012 R2では実行されなくなります。このマイルストーンでは、影響を受けるプラットフォームのユーザーに移行の準備をしてもらうために、非推奨通知を追加しました。これらのWindowsバージョンのいずれかを実行している場合は、追加情報についてFAQをご覧ください。

Snapパッケージのベースイメージを更新

今回のイテレーションでは、SnapパッケージをCore20 (Ubuntu 20.04からビルド) をベースイメージとして使用するようにアップデートしました。以前はCore (Ubuntu 16.04からビルド) を使用していました。この変更により、CLIのGLIBCシンボルが見つからない問題が解決され、とりわけwaylandサポートが修正されました。詳細については、pull request #127320をご覧ください。

拡張機能ホスト向けのカスタムメモリアロケーターの検討

V8サンドボックスが有効になっているElectron 22を採用し、特に外部配列バッファーを使用するネイティブモジュールに依存する拡張機能への影響を最小限に抑えるために、拡張機能ホストの既存のメモリアロケーターをカスタマイズしました。具体的には、拡張機能ホストは、致命的なクラッシュを回避するための回避策として、これらのネイティブモジュールからの割り当てをV8サンドボックス内に収容するようになりました。このソリューションに至った経緯/理由に関心がある場合は、詳細についてissue #177338を確認できます。

ドキュメント

新しいプログラミング言語のトピック

  • VS CodeのRuby - Ruby LSP拡張機能を使用したRuby言語サポート (スニペット、lint、デバッグ) について学びます。
  • Polyglot Notebooks - Polyglot Notebooks拡張機能は、C#、PowerShell、JavaScriptなどのポリグロットプログラミングを可能にします。

注目すべき修正

  • 174690 Comments API - author.iconPathは拡張機能にバンドルされたファイルを参照できますか?
  • 175805 VS Codeは、ポートフォワーディングのIPv6プロセスを自動検出しません

ありがとうございます

最後になりましたが、VS Codeのコントリビューターの皆様に心から感謝申し上げます

Issue追跡

Issue追跡への貢献

プルリクエスト

vscodeへの貢献

vscode-languageserver-node への貢献

vscode-pull-request-github への貢献

  • @Balastrong (Leonardo Montini)
    • 空のラベル配列を set-labels にプッシュして、すべてのラベルを削除できるようにする PR #4637
    • 空の配列をプッシュして、最後のラベルを削除できるようにする PR #4648

vscode-docs への貢献

monaco-editor への貢献

devcontainers/cli への貢献