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

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

更新 1.77.1: この更新は、これらの問題に対応しています。

更新 1.77.2: この更新は、このセキュリティ問題に対応しています。

更新 1.77.3: この更新は、これらの問題に対応しています。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル 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 の行にフォーカスを当て、`up` キーと `down` キーでナビゲートできるようになりました。`Enter` キーを使用して選択した行に移動できます。Sticky Scroll にフォーカスを当てるには、コマンドパレットから **Focus Sticky Scroll** を実行します。**View: Toggle Stick Scroll** コマンドを使用して Sticky Scroll UI を有効にします。

ワークベンチ

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

VS Code デスクトップでエディターのガターから 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 デスクトップに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 のスイッチケース補完

VS Codeは、JavaScriptまたはTypeScriptのリテラル型に対するswitchステートメントの足場を構築するのに役立つようになりました。

`switch` ステートメント内に `case` と入力し、`case ...` の提案を受け入れます。これにより、この型のすべての値に対してケースが自動的に挿入されます。これは、切り替えられる値がユニオン型またはリテラル型の場合にのみ機能することに注意してください。

Web 用 VS Code

.gitignore のサポート

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

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

リモート開発

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

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

その他のリモート開発のハイライトには

  • リモートトンネル - 既存のトンネルの再利用の改善。
  • リモートトンネル - ローカル開発へ迅速に移行するためのVS Code デスクトップで作業を続行コマンド。
  • 開発コンテナー - 未使用の開発コンテナーとボリュームのクリーンアップが容易に。

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

拡張機能

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

拡張機能の署名検証が、一部の有効な拡張機能で誤ってエラーを報告し、インストールを妨げていました。これらの失敗は VS Marketplace と VS Code のバグが原因であり、現在修正作業を進めています。拡張機能の使用をブロック解除するため、VS Code は署名検証が失敗した場合でも拡張機能をインストールします。VS Marketplace の問題 #619 が修正され次第、署名検証チェックを再度有効にします。おそらく次回の安定版リリースで行われるでしょう。詳細については、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 環境 API の 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 と Issues

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

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

その他のハイライトについては、拡張機能の0.62.0リリースに関する変更履歴を確認してください。

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

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

GitHub Copilot extension

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

  • インライン提案: コード内で作業中に Copilot の提案がインラインで表示されます。
  • チャットビュー: GitHub Copilot チャットビューで、あらゆるタスクや質問について Copilot に尋ねることができます。
  • インラインチャット: ファイル内でコードを書きながら、Copilot とインラインで会話できます。

バグの検索、複雑なコードの解説、テストの作成、さらには VS Code に関する質問まで、Copilot に依頼できます。

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 を有効にしてください!

ウェルカムページの遠隔接続ピッカー

ウェルカムページが、スタートリストに試験的なリモート接続ピッカーConnect to..をサポートするようになりました。これにより、リモート接続 (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 を参照してください。

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

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

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 バージョンのいずれかを実行している場合は、追加情報についてよくある質問をご覧ください。

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

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

拡張機能ホスト用のカスタムメモリアロケーターの探索

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

ドキュメント

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

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

注目すべき修正点

  • 174690 コメント API - author.iconPath が拡張機能にバンドルされたファイルを参照するにはどうすればよいですか?
  • 175805 VS Code はポート転送のために IPv6 プロセスを自動検出しない

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-languageserver-nodeへの貢献者

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

vscode-docsへの貢献

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

devcontainers/cliへの貢献