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

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

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

Update 1.77.2: このアップデートは、このセキュリティ上の問題に対処します。

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

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


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

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

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)) は、現在のコンテキストを離れることなくプライマリアクションを実行します。

Sticky Scrollナビゲーション

Sticky Scrollの行にフォーカスを合わせ、upおよびdownキーでナビゲートできるようになりました。Enterキーで選択した行に移動できます。Sticky Scrollにフォーカスするには、コマンドパレットからFocus Sticky Scrollを実行します。表示: Sticky Scrollの切り替えコマンドでSticky Scroll UIを有効にできます。

Workbench

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

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

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

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

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

Sticky Scrollのデフォルトプロバイダーを選択する

Sticky Scroll (表示: Sticky Scrollの切り替え) は、見出しを作成するためにいくつかの異なるコンテンツモデルを使用します。Sticky Scroll UIに表示する行を決定するために、アウトラインプロバイダーモデル、フォールディングプロバイダーモデル、およびインデントモデルの中から選択できるようになりました。現在の言語でモデルが利用できない場合、VS Codeは上記の順序で次のモデルにフォールバックします。最初に使用されるデフォルトモデルは、エディター > Sticky Scroll: デフォルトモデル (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

ソース管理

Remote RepositoriesにおけるGit LFSコミットサポート

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

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

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

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

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

3-way merge editor

また、3方向マージエディターが登場するYouTube動画「マージの競合に関する非常に役立つガイド」もお見逃しなく。

ノートブック

保存時のフォーマット

ノートブックの保存時のフォーマットを有効にできるようになりました。これにより、保存時にノートブック全体がフォーマットされます。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 ...の提案を受け入れます。これにより、この型のすべての値に対するケースが自動的に挿入されます。これは、切り替えられる値が共用体またはリテラル型の場合にのみ機能することに注意してください。

Web 用 VS Code

.gitignoreサポート

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

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

リモート開発

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

Dev Containerを使用すると、コンテナをフル機能の開発環境として使用できます。Dev Container Specificationは、既存のフォーマットを一般的な開発設定、ツール、構成で強化しつつ、簡素化された、オーケストレーションされていない単一コンテナオプションを提供する方法を模索しています。Dev Containerと仕様の詳細については、Changelogポッドキャストのエピソード #529で学ぶことができます。

その他のRemote Developmentのハイライト

  • Remote Tunnels - 既存のトンネルのより良い再利用。
  • Remote Tunnels - ローカル開発へ素早く移行するためのVS Codeデスクトップで作業を続行コマンド。
  • Dev Containers - 未使用のDev Containerとボリュームのより簡単なクリーンアップ。

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

拡張機能

署名検証の失敗による拡張機能のインストールブロック解除

拡張機能の署名検証が、少数の有効な拡張機能に対して誤ってエラーを報告し、それらのインストールを妨げていました。これらの失敗はVS MarketplaceとVS Codeのバグが原因であり、現在修正に積極的に取り組んでいます。拡張機能の使用をブロック解除するために、VS Codeは署名検証が失敗しても拡張機能をインストールします。VS Marketplaceの問題 #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ページにあります。将来的にnpm型パッケージもリリースする予定で、Python拡張機能APIの変更をより簡単に追跡できるようになります。

Jupyter

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

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

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

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

Notebook kernel picker with ability to select empty conda environments

GitHub Pull Requests and Issues

プルリクエストとイシューの作業、作成、管理ができるGitHub Pull Requests and Issues拡張機能は、さらに進歩しました。ハイライトは以下の通りです。

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

その他のハイライトについては、拡張機能の0.62.0リリース用changelogをご覧ください。

GitHub Copilot

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

GitHub Copilot extension

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

  • インライン提案: コード内で作業中にCopilotの提案がインラインで表示されます。
  • チャットビュー: GitHub Copilotチャットビューで、あらゆるタスクや質問について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 picker

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

拡張機能作成

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

次回の安定版リリースでElectron 22にアップデートする予定です。これにより、V8メモリケージが有効になるため、ネイティブモジュールを使用する拡張機能に影響があります。外部 (「オフヒープ」) メモリを指す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以降と互換性があります。変更の詳細については、イシュー #175540をご覧ください。

Source Control入力でのインライン補完

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

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提案イシュー #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デスクトップは、今後数マイルストーンでElectron >=23にアップデートされます。Electron 23へのアップデートにより、VS CodeデスクトップはWindows 8 / Windows Server 2012およびWindows 8.1 / Windows Server 2012 R2では動作しなくなります。このマイルストーンでは、影響を受けるこれらのプラットフォームのユーザーに対し、移行に備えるための非推奨通知を追加しました。これらのWindowsバージョンのいずれかを実行している場合は、追加情報についてFAQをご覧ください。

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

今回のイテレーションでは、Snapパッケージのベースイメージを従来のCore (Ubuntu 16.04からビルド) からCore20 (Ubuntu 20.04からビルド) に更新しました。この変更により、CLIのGLIBCシンボル不足が解消され、waylandサポートなどの問題が修正されます。詳細については、プルリクエスト #127320をご覧ください。

拡張機能ホストのカスタムメモリ割り当て機能の調査

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

ドキュメント

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

注目すべき修正点

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

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-languageserver-nodeへの貢献者

vscode-pull-request-githubへの貢献者

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

vscode-docsへの貢献

monaco-editorへのコントリビューション

devcontainers/cliへの貢献