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

2022年8月 (バージョン 1.71)

更新 1.71.1: この更新プログラムは、このセキュリティ問題に対処します。

更新 1.71.2: この更新プログラムは、これらの問題に対処します。

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


Visual Studio Code 2022年8月リリースへようこそ。8月は多くのVS Codeエンジニアが休暇を取る時期ですが、このバージョンにも皆さんに気に入っていただける多くの更新が含まれています。

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

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

Workbench

マージエディターの改善

競合のあるファイルからマージエディターを開く

競合があるファイルには、テキストエディターとマージエディター間を移行するためのマージエディターで開くボタンが自動的に表示されるようになりました。

マージエディターで開いてもファイルは変更されない

VS Codeは、マージエディターで開いたときに結果ファイルを変更しなくなりました (競合領域がベースに置き換えられていました)。代わりに、競合マーカーはファイル内に残りますが、結果ビューでは非表示になります。チェックボックスを使用して、競合マーカーをいずれかの側、両側の組み合わせ、またはチェックを外すことでベースに置き換えることができます。

古い競合デコレーターの復元

古いインライン競合デコレーターは無効化されなくなったため、マージエディターとインライン体験を一緒に使用できます。マージエディターを開いたときに、エディターツールバーのシングルクリックで以前の体験に戻ることができます。

ソース管理ビューでファイル名の横にある同じアイコンをクリックすることで、マージエディターを完全にスキップできます。

ただし、新しい体験と古い体験はいつでも切り替えることができ、並行して使用することも可能です。

チェックボックスの改善

競合がビューポートより大きい場合でも、競合のチェックボックスが常に表示されるようにしました。未処理の競合のチェックボックスを強調するために色が使用されます。

差分アルゴリズムの改善

競合の品質を向上させるために、代替の差分アルゴリズムの探索を開始しました。新しい実験的な差分アルゴリズムは、以下の設定で有効にできます。

"mergeEditor.diffAlgorithm": "experimental",

この新しいアルゴリズムはまだパフォーマンスが最適化されていませんが、多くのエッジケースでマージエディターの体験を向上させます。

今後の展望

今回のリリースでは、マージエディターの最も重要なUX問題に焦点を当て、多くのバグを修正しました。新しいマージエディターにまだ戸惑う場合は、ぜひご意見をお聞かせください!私たちのリポジトリに新しいIssueを作成し、スクリーンショットとマージエディターの状態 (Merge Editor StateをJSONとしてコピーコマンドを使用) を共有してください。これまでにいただいたすべてのフィードバックに感謝しており、さらなるフィードバックは、マージエディターの体験をすべての人にとって素晴らしいものにするのに役立ちます。

今後の作業では、個別のベースビュー競合の最小化、差分アルゴリズムの改良、およびその他の改善に焦点を当てます。

FFmpegコーデックのサポート

VS Codeの一部として提供されるFFmpeg共有ライブラリは、以前はFLACコーデックのみをサポートしていました。今回のリリースでは、ライブラリが更新され、以下のコーデックとコンテナのリストをサポートするようになりました。これにより、ノートブックから、またはウェブビューにオーディオやビデオを埋め込む拡張機能によって、より多くのオーディオおよびビデオファイルが再生できるようになります。

  • Vorbis
  • Flac
  • H.264
  • VP8
  • WAV
  • MP3
  • Ogg

テーマ: fairyfloss (vscode.devでプレビュー)

エクスプローラーでの名前変更時の選択機能の改善

ファイルの名前変更アクションを開始した後、F2キーを押すと、ファイル名、選択全体、ファイル拡張子を循環して選択できるようになり、より柔軟なキーボード操作が可能になります。

角が丸いボタン

すべてのボタンの角をわずかに丸くし、デザインの美観に合うように更新しました。

An example of a button with rounded corners

テーマ: Material Theme Palenight High Contrast

Windowsでのウィンドウコントロールオーバーレイ

リリース1.68では、VS CodeはElectronのWindow Controls Overlay機能サポートを実験的なフラグの後ろで採用し、デフォルトで無効にしていました。この機能がVS Codeに与える残りの問題を解決し、Windows上のすべてのユーザーに対してデフォルトで有効にできるようになりました。

Windowsコントロールオーバーレイ機能により、Windows 11のVS Codeユーザーは、スナップレイアウトを選択してデスクトップにVS Codeを配置できます。

Windows Snap Layouts control in the right of the VS Code title bar

ツリービューの展開モード

ツリーノードがシングルクリックで展開するかダブルクリックで展開するかを制御する設定Workbench > Tree: Expand Mode (workbench.tree.expandMode) が、拡張機能によって提供されるツリービューでも尊重されるようになりました。

Editor

スティッキースクロール

スティッキースクロールは、現在のスコープをビューポートの上部に表示します。この機能はもはや実験的ではなく、設定editor.stickyScroll.enabledを介して有効にできます。さらなる改善点として以下があります。

  • 表示する行の最大数を設定Editor > Sticky Scroll: Max Line Count (editor.stickyScroll.maxLineCount) で設定できます。デフォルトの最大値は5行です。
  • スティッキースクロールでCtrl/Cmd + クリックを使用して、定義に移動できます。

新しいコードアクションコントロール

コードアクションコントロールを完全に刷新しました。コードアクションの単純なメニューではなく、目的のコードアクションを見つけやすくするカスタムコントロールが導入されました。

The new Code Action control showing Quick Fixes and refactorings

新しいコントロールでは、VS Codeが追加情報を表示することもできます。例えば、無効になっているコードアクションにマウスオーバーすると、なぜ無効になっているのかを知ることができます。

Hovering over a disabled Code Action to understand why it is disabled

以下のコマンドのキーバインドを変更することで、コードアクションリストを移動するためのキーボードショートカットをカスタマイズすることもできます。

  • selectNextCodeAction
  • selectPrevCodeAction
  • acceptSelectedCodeAction

今後、新しいコードアクションUIはさらなるUX改善のための素晴らしい基盤を提供します。何か提案があれば、ぜひお知らせください!

候補の一致を構成

IntelliSenseフィルタリングを構成するための新しい設定があります。デフォルトでは、最初の文字が単語の開始と一致する必要があります。例えば、cconsoleWebContextと一致しますが、descriptionとは一致しません。editor.suggest.matchOnWordStartOnly設定はこの動作を変更します。無効にすると、フィルタリングは任意の一致を考慮します。これにより結果は増えますが、フィルタリングは引き続き一致品質によって行われます。

以下の短いビデオでは、matchOnWordStartOnlyが無効になっている場合、「dir」の候補に「mkdir」や「makedirs」などの項目が追加されることがわかります。

ソース管理

コミットアクションボタンの改善

ユーザーは、git.postCommitCommand設定を使用して、コミット操作の成功後に実行される二次アクション (例: pullsync) をグローバルに制御できます。今回のマイルストーンでは、リポジトリごとに最後に実行された二次アクションを記憶するように有効にできる新しい設定git.rememberPostCommitCommandを追加しました。

ターミナル

シェル統合の改善

今回のリリースでシェル統合に以下の改善が行われました。

  • Fishシェルの統合は、実験的な手動インストールのみで利用可能です。インストール方法については、シェル統合のドキュメントを参照してください。
  • Windows用Git Bashのシェル統合は、実験的な手動インストールのみで利用可能です。詳細については、手動インストールのセクションを参照してください。
  • 一般的な代替カレントワーキングディレクトリシーケンスのサポート: OSC 6 ; scheme://<cwd> ST, OSC 1337 ; CurrentDir=<cwd> ST, OSC 9 ; 9 ; <cwd> ST
  • さまざまなシェル統合のエッジケースのより良い処理。

スムーズスクロール

ターミナルがスムーズスクロールをサポートするようになり、エディターやリストと同様に、スクロール後に自分の位置を確認しやすくするために、短時間スクロールをアニメーション化します。スムーズスクロールを有効にするには、次のように設定します。

"terminal.integrated.smoothScrolling": true

下線スタイルと色

kittyターミナルが最初に開拓したエスケープシーケンスを使用して、下線スタイルと色がサポートされるようになりました。対応するプログラムでは、これらのシーケンスがVS Codeターミナルに送信されれば、これらの新しい下線は自動的に表示されるはずです。

The terminal can now display straight, double, curly, dotted, and dashed underlines in any color

この変更には、GPUアクセラレーションが有効になっている場合の下線レンダリングの改善が含まれており、ディセンダーが長いグリフと下線が重なることを回避します。

An example showing that characters with descenders such as 'g' and 'p' no longer overlap with underlines

下線スタイルと色は、ConPTYの未解決の問題により、現在Windowsではサポートされていません。

レンダリングの改善

ターミナルのレンダリングにいくつかの改善が行われました。

  • Workbenchがズームインまたはズームアウトされたときに、ぼやけを引き起こすことがあった長年のバグが修正されました!

    Text is now more crisp as canvas is no longer stretched, which caused anti-aliasing to look poorly

  • 最小コントラスト比が有効になっていて、比率を満たすためにテキストの輝度を反転する必要がある場合、テキストの色相が保持されるようになりました。

    Bold yellow text on red in some themes will now display as dark yellow instead dark grey

  • 新しいテーマキーterminal.inactiveSelectionBackgroundが利用可能になり、ターミナルがフォーカスされているかどうかに応じて異なる選択背景色を表示することで、エディターとの整合性を高めることができます。

    Most themes now dim the selection background color when not focused

  • カスタムPowerlineグリフのレンダリングでエッジクリッピングが改善されました。これは半円文字で最も顕著であり、現在は滑らかな曲線になるはずです。

    Powerline glyphs are no longer cut off on the edges

タスク

ウィンドウ再読み込み時の再接続

ウォッチタスクはウィンドウの再読み込み時に再接続されるようになり、VS Codeが更新されたり、拡張機能の状態が変更されたりしても中断なく作業を継続できます。タスクの再接続はデフォルトで有効ですが、task.reconnection設定で無効にできます。

デバッグ

launch.jsonのsuppressMultipleSessionWarningオプション

起動構成でデバッグを開始しようとしたときに、その構成のデバッグセッションがすでにアクティブである場合、VS Codeは2番目のインスタンスを開始する前に警告ダイアログを表示します。これは誤って行われることが多く、通常は意図したことではありません。しかし、同じ構成の複数のインスタンスを実行することがワークフローの一部である場合、launch.json構成ファイルに"suppressMultipleSessionWarning": trueを追加することで、この警告を無効にできます。

コメント

フィルタリング

コメントビューに新しいフィルターが追加され、コメントテキストや解決済み/未解決の状態によってフィルターできるようになりました。

エディターの装飾

コメントエディターのガター装飾がcodiconsを使用し、新しいスタイリングになりました。

言語

TypeScript 4.8

VS CodeはTypeScript 4.8.2を同梱するようになりました。このメジャーアップデートにより、型チェックと型推論の言語改善がもたらされます。ツール面でも、いくつかの素晴らしいパフォーマンス改善とバグ修正が見られるはずです!

このアップデートの詳細については、TypeScript 4.8の発表をご覧ください。

TypeScriptライブストリーム

VS CodeのTypeScriptに関するライブストリームを見逃した方は、Matt Pocockとの最近の2つのセッションをご覧ください。

VS Code livestreams page

拡張機能への貢献

Jupyter

ノートブックでの画像貼り付け

Jupyter拡張機能により、ユーザーはスクリーンショットや画像ファイルをノートブック内のMarkdownセルに貼り付けられるようになりました。現在、image/png MIMEタイプのみがサポートされています。この機能を使用するには、以下の設定を追加/有効にしてください。

"ipynb.experimental.pasteImages.enabled": true
"editor.experimental.pasteActions.enabled": true

PylanceによるJupyter NotebooksのIntelliSenseの改善

Language Server Protocolの更新によりノートブックサポートが追加されたため、Pylanceを使用する際のPythonカーネルを搭載したJupyter NotebooksのIntelliSenseサポートが大幅に向上しました。

ノートブックファイルでPythonコードを記述する際のオートコンプリートオプションが改善されるだけでなく、変数の抽出、メソッドの抽出、シンボルの名前変更などのリファクタリング機能、および自動インポートやセマンティックハイライトも使用できるようになります。

テーマ: Horizon Extended (vscode.devでプレビュー)

ライブプレビュー

The Live Preview拡張機能が、ついにマルチルートワークスペースを正式にサポートしました!以前から技術的にはマルチルートワークスペースでLive Previewを使用できましたが、現在はよりクリーンな実装でサポートされています。

Live Preview拡張機能は、マルチルートワークスペース内の各ルートに対して新しいサーバーを起動するようになりました。したがって、プロジェクトのルートに対する相対リンク (/で始まるリンク) は、マルチルートワークスペースをプレビューする際に適切に機能します。

テーマ: GitHub Dark Dimmed (vscode.devでプレビュー)

拡張機能によって開かれたサーバーは、Live Previewのステータスバーインジケーター (右下隅にあります) にマウスを合わせると表示できます。下の画像では、各ワークスペース (ポート3000と3002) にサーバーが起動され、開いているワークスペースではないファイル (ポート3004) 用に別のサーバーが生成されています。

Live Preview multi-root ports displayed from the Status bar indicator

Live Preview拡張機能をインストールして、今すぐお試しください!📡✨🔎

GitHub Pull RequestsとIssues

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

  • プルリクエストの通知。
  • レビューコメントは、プルリクエストの概要から直接解決/未解決にできます。

その他のハイライトについては、拡張機能の0.50.0リリースの変更ログをご覧ください。

リモート開発

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

新しい拡張機能の機能やバグ修正については、Remote Developmentリリースノートで確認できます。

プレビュー機能

ファイルの移動や名前変更時に、誤ってMarkdown内のリンクや画像を壊してしまうことにうんざりしていませんか?新しいmarkdown.experimental.updateLinksOnFileMove.enabled設定を試してみてください!

この新しい実験的な設定を有効にすると、VS Codeエクスプローラーでファイルが移動または名前変更されたときに、VS CodeがMarkdown内のリンクと画像を自動的に更新します。

この新しい動作は、markdown.experimental.updateLinksOnFileMove.enabled設定を使用して有効にできます。影響を受けるファイルのタイプは、markdown.experimental.updateLinksOnFileMove.externalFileGlobsを使用して制御できます。

この新機能を試して、ぜひフィードバックを共有してください。

設定プロファイル

コミュニティからの最も要望の多かった機能の一つである、VS Codeでの設定プロファイルのサポートにここ数ヶ月取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled設定を介してプレビュー版として利用できます。vscodeリポジトリにIssueを作成するか、issue #116740にコメントすることで、試用してフィードバックをお寄せください。

コマンドラインインターフェース

今回のマイルストーンでは、設定プロファイルに対するコマンドラインインターフェース (CLI) のサポートを追加しました。--profile引数を使用してプロファイルの名前を渡し、そのプロファイルを使用してフォルダーまたはワークスペースを開くことができるようになりました。以下のコマンドラインは、「Web Development」プロファイルでweb-sampleフォルダーを開きます。

code ~/projects/web-sample --profile "Web Development"

指定されたプロファイルが存在しない場合、指定された名前で新しい空のプロファイルが作成されます。

一時設定プロファイル

フォルダーまたはワークスペースに一時的に作成および関連付けられる一時設定プロファイルのサポートも追加されました。一時プロファイルは、いかなるフォルダーまたはワークスペースとも関連付けられていない場合に自動的に削除されます。

以下の短いビデオでは、ユーザーがフォルダーを開いてSettings Profiles: Create Temporary Settings Profileコマンドを選択すると、新しい「Temp 1」プロファイルが作成され、プロファイルリストに表示されます。フォルダーが閉じられると、「Temp 1」プロファイルは削除されます。

CLIから--profile-tempスイッチを使用して、一時設定プロファイルを作成し、フォルダーまたはワークスペースに関連付けることもできます。以下のコマンドラインは、フォルダーを閉じた後に削除される一時プロファイルでtry-out-sampleフォルダーを開きます。

code ~/projects/try-out-sample --profile-temp

開発環境を移動する際に変更を持ち運ぶ

GitHubまたはAzure Reposリポジトリ (例: https://vscode.dev/github/microsoft/vscode) を閲覧しているときに、作業を継続するコマンドを使用して、リポジトリで使用する別の開発環境を選択できます。

以前は、仮想ワークスペースに保留中の編集がある場合、それらをGitHubまたはAzure Reposにプッシュして他の場所で表示する必要がありました。今回のマイルストーンでは、作業を継続する機能に編集セッションの統合を追加したため、コミットされていない変更が自動的にGitHub Codespaceなどのターゲット開発環境に持ち運ばれるようになりました。

以下のビデオでは、ユーザーがVS Code for the Webを使用中にTypeScriptファイルに行った変更が、新しいGitHub Codespaceを作成して作業を切り替えるときに適用される様子が示されています。

これを試すには、設定で"workbench.experimental.editSessions.enabled": trueを設定し、設定同期を有効にして、VS Code for the Webまたはデスクトップで編集セッション: サインインコマンドを実行します。

VS Code for the Webを使用している場合、作業を継続するを使用すると、コミットされていない変更が以下の環境に持ち運ばれます。

  • GitHub Codespacesの新しいクラウドホスト型環境
  • GitHubリポジトリの新しいローカルクローン
  • 同じ仮想GitHubリポジトリを持つローカルのVS Codeインスタンス

デスクトップ版VS CodeでRemote Repositories拡張機能を使用している場合、作業を継続するを使用すると、コミットされていない変更が以下の環境に持ち運ばれます。

  • GitHub Codespacesのクラウドホスト型環境 (GitHub Codespaces拡張機能経由で利用可能)
  • GitHubリポジトリの新しいローカルクローン
  • コンテナボリューム内のGitHubリポジトリの新しいクローン (Dev Containers拡張機能経由で利用可能)
  • https://vscode.dev
  • リポジトリのクローンを含む既存のローカルフォルダー

拡張機能の作成

TerminalExitStatus.reason

拡張機能の作成者は、新しいTerminalExitReason APIを介して、ターミナルが終了した理由についてより深い洞察を得られるようになりました。

export enum TerminalExitReason {
  Unknown = 0,
  Shutdown = 1,
  Process = 2,
  User = 3,
  Extension = 4
}

Enum設定のenumItemLabelsドキュメント

設定エディターのEnum設定はenumItemLabelsキーをサポートしており、これにより拡張機能の作成者はenum値に対応するドロップダウンに表示される値を指定できます。

Example of enumItemLabels with a mock setting. The select box displays the label value, and the dropdown options display both the label value and the enum value, though the enum values are rendered less prominently.

テーマ: Light Pink (vscode.devでプレビュー)

新しいactiveWebviewPanelIdコンテキストキー

新しいactiveWebviewPanelIdコンテキストキーは、現在フォーカスされているウェブビューパネルのviewTypeを追跡します。ウェブビューがフォーカスされているときにコマンドやメニュー項目を有効にするために、when句で使用できます。

"when": "activeWebviewPanelId == 'markdown.preview'"

ウェブ上のTypeScriptサーバープラグイン

TypeScript言語サービスプラグインがウェブでサポートされるようになりました。これは、typescriptServerPlugins貢献ポイントを使用して拡張機能によって提供されるプラグインに適用されます。

開始するには、まずpackage.jsonmainに加えてbrowserエントリーポイントを追加することで、プラグインがウェブ対応であることをTypeScriptに伝える必要があります。

"main": "out/main.js",
"browser": "out/main.browser.js"

browserエントリーポイントは、プラグインをアクティブにするデフォルト関数をエクスポートするJavaScriptモジュールである必要があります。

export default function init(modules: { typescript: typeof import("typescript/lib/tsserverlibrary") }) {
  ...
};

ウェブ上では、プラグインは通常のウェブワーカー環境で実行されるため、fsなどのNode.js APIは使用できないことに注意してください。

無効化されたツリーアイテム

有効化句がfalseに解決されるコマンドを持つツリーアイテムは、無効として表示されます。

Markdown言語サーバー

VS CodeのMarkdownサポートは、フル機能のLanguage Serverとして再実装されました。Matt Bierner氏のMarkdown Language Serverに関するブログ記事で、すべての参照を検索シンボルの名前変更、Markdownファイルの破損リンク検出などのプログラミング言語機能を追加した彼の取り組みについて読むことができます。

'view/title'メニューのコンテキストに関する今後の変更

8月には、ツリービューのview/titleメニューに貢献されたコマンドに対して、ビューのツリーのフォーカスと選択を渡すことを試みました。今回のリリースでは、一部の拡張機能に問題を引き起こしたため、この変更を元に戻しました。9月にはこの変更を再度導入し、リリースしたいと考えています。この更新が拡張機能を壊す可能性がある場合や、この動作が望ましくないと思われる場合は、issue #42903にコメントを残してください。

Debug Adapter Protocol

'startDebugging'リクエストの提案

現在、VS Codeは複数の同時デバッグセッションをサポートしていますが、Debug Adapter Protocol (DAP) は単一セッションのみをカバーしています。つまり、プログラムで新しいデバッグセッションを作成することはDAPの一部ではなく、DAPまたはデバッグアダプターの外部、通常はデバッグアダプターを含むデバッグ拡張機能で行う必要があります。この結果、子プロセスのデバッグなどのマルチセッション機能は、VS Code固有のデバッグ拡張機能ではなくデバッグアダプターのみを再利用する非VS Code DAPクライアントでは容易に利用できません。

この状況を改善するため、デバッグアダプター内から新しいデバッグセッションを作成するための新しいDAPリバースリクエストを追加する予定です。数回の議論を経て、startDebuggingリバースリクエストの提案を準備しました。デバッグ拡張機能またはDAPクライアントの作成者で、このDAPプロトコル追加に関心がある場合は、フィードバックをいただけると幸いです。

エンジニアリング

Electron 19への更新

今回のマイルストーンでは、Electron 19をVS Codeデスクトップ版にバンドルするための調査を完了しました。Insidersでセルフホストに関わったすべての方々に感謝いたします。このアップデートには、Chromium 102.0.5005.167およびNode.js 16.14.2が含まれています。

Windows 7のサポートは終了しました

Microsoftは2020年1月にWindows 7のサポートを終了しました。しかし、Electronはlibuvライブラリをパッチ適用することでWindows 7のサポートを継続していました。Electron 19への更新により、libuvパッチは機能しなくなり、VS Codeデスクトップ版を使用するためには、より新しいWindowsバージョンに更新することを推奨します。VS CodeはWindows 7での製品アップデートおよびセキュリティ修正を提供しなくなります。Windowsのアップグレードに関する詳細は、support.microsoft.comで確認できます。

注目すべき修正点

  • 115768 Windows: 異なるモニターで異なるズームレベルを使用すると、ウィンドウが正しい位置に復元されない
  • 133444 設定タブを別のエディターグループにドラッグすると検索クエリがクリアされる
  • 140305 複数の画面にまたがるメインウィンドウが、再開時に位置を復元しない
  • 146683 開いたときのウィンドウレイアウトスタイルのバグ
  • 148492 ワークスペースファイルにプラットフォーム非依存のパスを使用
  • 154963 拡張機能のウォークスルーにおけるcodiconサポートの修正
  • 155341 データ書き込みが遅延するとVS Codeへのパイプ処理が失敗する
  • 156075 [Emmet] 言語ごとの「タブでの展開トリガー」
  • 156385 最近のコマンド実行で解決されたエイリアスが表示される - lsが実行コマンドに--color=autoを付加する

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-extension-samplesへの貢献

devcontainers/cliへの貢献