2023年6月 (バージョン 1.80)
Update 1.80.1: このアップデートでは、これらのissueに対処しています。
Update 1.80.2: このアップデートでは、このセキュリティissueに対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2023年6月リリースへようこそ。このバージョンでは多くのアップデートがあり、きっと気に入っていただけると思います。主なハイライトは次のとおりです。
- アクセシビリティの改善 - スクリーンリーダーのサポートを向上させるアクセシブルビュー、Copilot のオーディオキュー。
- エディターグループとタブのリサイズ機能の向上 - タブの最小サイズの設定、不要なエディターグループのリサイズを回避。
- 選択範囲の伸縮時にサブワードをスキップ - 選択範囲にキャメルケースを使用するかどうかの制御。
- ターミナル画像のサポート - 統合ターミナルに画像を直接表示。
- mypy および debugpy 用 Python 拡張機能 - VS Code での Python の型チェックとデバッグ用。
- WSL へのリモート接続 - Tunnels を使用してリモートマシン上の WSL インスタンスに接続。
- プレビュー: GitHub Copilot ワークスペース/ノートブックの作成 - プロジェクトとノートブックをすばやく作成。
- VS Code の新しい C# ドキュメント - C# Dev Kit 拡張機能を使用した C# 開発について学ぶ。
これらのリリースノートをオンラインで読みたい場合は、Updates (code.visualstudio.com) にアクセスしてください。
Insiders: 最新機能をいち早く試したいですか? nightly Insiders ビルドをダウンロードして、最新のアップデートをいち早くお試しください。
アクセシビリティ
アクセシブルビュー
新しいコマンド アクセシブルビューを開く (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) は、スクリーンリーダーのユーザーがコンテンツを文字ごと、行ごとに検査できるようにします。ホバーまたはチャットパネルの応答にフォーカスがあるときに、これを起動します。
アクセシビリティヘルプの改善
新しいコマンド アクセシビリティヘルプを開く (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) は、現在のコンテキストに基づいてヘルプメニューを開きます。現在、エディター、ターミナル、ノートブック、チャットパネル、およびインラインチャット機能に適用されます。
アクセシビリティヘルプメニューのヒントを無効にし、ヘルプメニュー内から追加のドキュメント (もしあれば) を開きます。
ノートブックのアクセシビリティヘルプ
ノートブック用の新しいアクセシビリティヘルプメニューが追加され、エディターのレイアウト、ノートブックのナビゲーションと操作に関する情報を提供します。
チャットオーディオキュー
GitHub Copilot チャットエクスペリエンス用のオーディオキューが追加され、audioCues.chatRequestSent
、audioCues.chatResponsePending
、および audioCues.chatResponseReceived
を介して有効にできます。
チャットアクセシビリティの改善
チャットの応答は、受信するとすぐにスクリーンリーダーに提供され、インラインおよびチャットパネルのアクセシビリティヘルプメニューには、期待されることと各機能の操作方法に関するより詳細な情報が含まれています。
設定エディターの代替テキストの改善
設定エディター (Preferences: Open Settings (UI) コマンドからアクセス可能) は、スクリーンリーダーでナビゲートする際の冗長性が軽減されました。特に、設定スコープスイッチャーは、ファイルパスではなく、スコープの実際の名前をアナウンスし、設定の説明の代替テキストは、生の Markdown フォーマットを含まないようにクリーンアップされました。
ワークベンチ
プレビューされたビデオの自動再生とループ
ビデオファイルの組み込みプレビューでビデオの自動再生とループを有効にできるようになりました。関連する設定は次のとおりです。
mediaPreview.video.autoPlay
— ビデオの自動再生を有効にします。自動再生されるビデオは自動的にミュートされます。mediaPreview.video.loop
— ビデオループを有効にします。
これらの設定はデフォルトでオフになっています。
エディターが読み取り専用の場合のヘルプの追加
前回のマイルストーンで VS Code に 読み取り専用モード が導入されたことにより、エディターはワークスペース構成により読み取り専用になる場合があります。
今月のマイルストーンでは、読み取り専用エディターで入力を試みた際のエディターの通知メッセージを強化し、場合によっては files.readonly
設定を変更するためのリンクを提供します。
デフォルトのファイルダイアログの場所
新しい設定 files.dialog.defaultPath
は、ファイルダイアログ (ファイルやフォルダーを開くまたは保存する場合など) が開くときに表示するデフォルトの場所を構成できます。このデフォルトは、他の場所が不明な場合、たとえば空の VS Code ウィンドウなどで、フォールバックとしてのみ使用されます。
タブのダブルクリックでエディターグループを最大化しないようにする
新しい設定 workbench.editor.doubleClickTabToToggleEditorGroupSizes
は、エディターグループのタブをダブルクリックしたときに、そのグループのサイズを最大化から復元に切り替えるのを無効にします。
固定幅タブの最小幅を制御する
新しい設定 workbench.editor.tabSizingFixedMinWidth
は、workbench.editor.tabSizing
が fixed
に設定されている場合のタブの最小サイズを制御します。固定タブ幅の詳細については、1.79 リリースノート を参照してください。
エディターグループの分割サイズ調整が 'auto' に変更されました
workbench.editor.splitSizing
設定の新しい値 auto
が新しいデフォルトです。このモードでは、エディターグループを分割すると、いずれのエディターグループもサイズ変更されていない場合にのみ、使用可能なサイズがすべてのエディターグループに均等に分配されます。それ以外の場合、分割されたエディターグループのスペースは半分に分割され、新しいエディターグループに配置されます。
この変更の目的は、分割時に作成したレイアウトを壊さないことですが、それ以外の場合はサイズを均等に分配するという以前のデフォルトの動作も維持することです。
検索の .gitignore 除外動作
search.useIgnoreFiles
が true
に設定されている場合、ワークスペースが Git リポジトリとして初期化されているかどうかに関係なく、ワークスペースの .gitignore
が尊重されるようになりました。
コメントの最大高さ
設定 comments.maxHeight
を使用すると、GitHub Pull Requests and Issues 拡張機能を使用する際にプルリクエストに対して表示されるコメントなど、コメントの最大高さ制限を無効にできます。
VS Code の問題のトラブルシューティング
VS Code の問題をトラブルシューティングするのに役立つ新しいコマンド Help: Troubleshoot Issue がコマンドパレットに追加されました。起動されたワークフローは、特別なトラブルシューティングプロファイルと VS Code の 拡張機能のバイセクト 機能を使用して、問題の原因を特定するのに役立ちます。拡張機能のバイセクトは、問題が再現するかどうかを示す間、インストールされている拡張機能をバイナリ検索で有効および無効にします。これにより、問題の原因となっている拡張機能を絞り込み、問題を報告する際に適切な情報を提供できるようになります。
Chromium サンドボックスを無効にする
たとえば、Linux で sudo
を使用して VS Code を起動したり、Windows の AppLocker 環境で管理者として起動したりするなど、昇格されたユーザーとして VS Code デスクトップを起動することが避けられないシナリオがある場合は、アプリケーションを期待どおりに動作させるために、--no-sandbox --disable-gpu-sandbox
コマンドラインオプションを指定して VS Code を起動する必要があります。
issue #184687 のフィードバックに基づいて、Chromium サンドボックスを無効にする必要がある場合に、より簡単にするための 2 つの新しい設定が追加されました。
-
アプリケーション内のすべてのプロセスの Chromium サンドボックスを無効にする新しいコマンドラインオプション
--disable-chromium-sandbox
。この新しいオプションは、--no-sandbox --disable-gpu-sandbox
の代替として使用できます。このオプションは、将来のリリースでランタイムによって追加される可能性のある新しいプロセスサンドボックスにも適用されます。 -
Chromium サンドボックスの無効化を起動間で永続化するには、次の手順を実行します。
- コマンドパレットを開きます (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
- Preferences: Configure Runtime Arguments コマンドを実行します。
- このコマンドは、ランタイム引数を構成するための
argv.json
ファイルを開きます。すでにいくつかのデフォルトの引数が表示されている場合があります。 "disable-chromium-sandbox": true
を追加します。- VS Code を再起動します。
注意: 問題が発生している場合を除き、この設定を使用しないでください!
エディター
選択範囲を縮小および展開するときにサブワードをスキップする
Expand および Shrink Selection コマンドは、サブワードをスキップするように構成できるようになりました。これは、editor.smartSelect.selectSubwords
設定を介して行われます。デフォルトでは、サブワードは選択されていますが、これを無効にできるようになりました。
true
-> Co|
deEditor は[Code]Editor
、次に[CodeEditor]
を選択false
-> Co|
deEditor は[CodeEditor]
を選択
この設定は、複数のカーソルを使用したり、異種単語に対して選択範囲の展開と縮小を頻繁に使用する場合に役立ちます。
JSX/TSX の CSS モジュールに対する Emmet サポートの改善
Emmet は、JSX/TSX ファイル用の新しい略語セットをサポートしています。JSX または TSX ファイルで ..test
と入力し、略語を展開すると、<div styleName={styles.test}></div>
行が追加されます。
属性名と値のプレフィックスは、emmet.syntaxProfiles
設定を使用して構成できます。emmet.syntaxProfiles
設定を次のように構成することにより
"emmet.syntaxProfiles": {
"jsx": {
"markup.attributes": {
"class*": "className",
},
"markup.valuePrefix": {
"class*": "myStyles"
}
}
}
{
サイズ変更可能なコンテンツホバー
コンテンツホバーコントロールのサイズを変更できるようになりました。コントロールの境界線にカーソルを合わせ、サッシュをドラッグしてホバーのサイズを変更できます。
ターミナル
画像サポート
前回のリリースでプレビューされたターミナルの画像が、デフォルトで有効になりました。ターミナルの画像は通常、画像ピクセルデータをテキストとしてエンコードし、特別なエスケープシーケンスを介してターミナルに書き込むことで機能します。現在サポートされているプロトコルは、sixel と、iTerm によって開拓されたインライン画像プロトコル です。
画像を手動でテストするには、libsixel リポジトリ から .six
サンプルファイルをダウンロードして cat
できます。

または、imgcat python パッケージ または imgcat スクリプト を .png、.gif、または .jpg ファイルで使用します。

この機能は、次の設定で無効にできます
"terminal.integrated.enableImages": false
複数行および範囲リンク形式
ファイルを見つけるために上方向にスキャンする必要があるリンクや、範囲 (行から行、または文字から文字) を持つリンクなど、新しいリンク形式のサポートが追加されました。
-
@@ git 範囲リンク

-
OCAML の Dune スタイル範囲リンク



-
ESLint スタイル複数行リンク

-
Ripgrep スタイル複数行リンク

非推奨の shell および shellArgs 設定が削除されました
設定 terminal.integrated.shell.*
および terminal.integrated.shellArgs.*
は、1 年以上前に ターミナルプロファイル に置き換えられ、削除されました。古い shell
および shellArgs
設定をまだ使用している場合は、移行に役立つ前後の例を次に示します。
// Before
{
"terminal.integrated.shell.windows": "pwsh.exe",
"terminal.integrated.shellArgs.windows": ["-Login"],
"terminal.integrated.shell.osx": "bash",
"terminal.integrated.shellArgs.osx": ["-l"],
}
// After
{
"terminal.integrated.profiles.windows": {
"PowerShell Login": {
// Source is a special property that will use VS Code's logic to detect
// the PowerShell or Git Bash executable.
"source": "PowerShell",
"args": ["-Login"],
"icon": "terminal-powershell"
},
},
"terminal.integrated.profiles.osx": {
// This will override the builtin bash profile
"bash": {
"path": "bash",
"args": ["-l"],
"icon": "terminal-bash"
}
}
}
テスト
ターミナル出力のサポート
以前は、Test Results ビューに表示されるテスト出力は、常に埋め込みテキストエディターに表示されていました。これにより、ターミナルで実行された場合に持っていた可能性のある色、スタイル、記号などの豊富なスタイルが削除されました。今回のリリースでは、実際の xterm.js ターミナルに出力を表示します。

テーマ: Codesong (vscode.dev でプレビュー)
Test Results ビューが完全に機能するようになったため、Show Test Output コマンドは、一時的なターミナルを作成する代わりに、Test Results ビューを開くようにリダイレクトされました。
ソース管理
リポジトリを閉じる機能の改善
以前は、ユーザーは Git: Close Repository コマンドまたはソース管理ビューの Close Repository アクションを使用してリポジトリを閉じることができましたが、(たとえば、閉じたリポジトリからファイルを開くなど) 特定のアクションは閉じたリポジトリを再度開いていました。今月のマイルストーンでは、リポジトリが閉じられているという事実がワークスペースごとに永続化されるように改善しました。ユーザーは、Git: Reopen Closed Repositories... コマンドを使用して、閉じたリポジトリを再度開くことができます。
ノートブック
リモート開発の保存パフォーマンスの向上
以前は、VS Code の Remote 拡張機能でノートブックを保存するには、ノートブック全体を拡張機能ホストに送信する必要があり、大きなノートブックや自動保存が有効になっている遅いネットワーク接続では遅くなる可能性がありました。ノートブックの変更のみを拡張機能ホストに送信することでパフォーマンスを向上させ、ノートブックの保存と実行を高速化しました。この機能はまだデフォルトで無効になっていますが、すぐに有効にできると確信しています。試してみるには、設定に "notebook.experimental.remoteSave": true
を追加してください。詳細については、issue #172345 を参照してください。
ノートブックグローバルツールバーの再構築
ノートブックエディターのグローバルツールバーは、ワークベンチツールバーを採用するように書き直され、ユーザーはツールバーアクションのカスタマイズ性を高めることができます。ユーザーは、ツールバーからアクションを右クリックして非表示にできるようになりました。ツールバー内のアクションを右クリックすると、そのアクションを非表示にするオプションと、メニューをリセットして非表示のアクションを元に戻すオプションが表示されます。
ツールバーは、always
、never
、および dynamic
の 3 つのラベル戦略すべてで引き続き動作します。notebook.globalToolbarShowLabel
設定を介してラベル戦略を変更できます。
テーマ: Monokai Pro (Filter Ristretto) (vscode.dev でプレビュー)
インタラクティブウィンドウのバックアップと復元
Python インタラクティブウィンドウは、ホットイグジット 機能と完全に統合され、VS Code のリロード間でエディターの状態を復元します。interactiveWindow.restore
設定は効果がなくなり、削除されました。
ホットイグジットが無効になっている場合は、VS Code を閉じるときに、エディターの状態を .ipynb
ファイルとして保存するオプションを提供するプロンプトが表示されます。
テーマ: Bearded Theme feat. Gold D Raynh (vscode.dev でプレビュー)
言語
Markdown プレビューから画像をコピー
Markdown プレビューの画像の新しいコンテキストメニューを使用すると、プレビューから画像をコピーして Markdown エディターに貼り付けることができます。画像をコピーするときは、プレビューエディターにフォーカスする必要があります。
貼り付けられた URL を Markdown リンクとしてフォーマットする Markdown
新しい markdown.editor.pasteUrlAsFormattedLink.enabled
設定 (デフォルト false
) を使用すると、Markdown リンクに自動的にフォーマットされたリンクを Markdown エディターに挿入できます。貼り付けられたリンクに置き換えるテキストを選択すると、選択したテキストが自動的にリンクのタイトルになります。テキストが選択されていない場合は、デフォルトのリンクタイトルが使用されます。この機能は、ワークスペース内のファイルだけでなく、外部ブラウザーリンクにも適用されます。
この新しい設定を機能させるには、editor.pasteAs.enabled
設定を有効にする必要があります。
リモート開発
Remote Development 拡張機能 を使用すると、Dev Container、SSH 経由のリモートマシン、または Remote Tunnels、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
新しい拡張機能の機能とバグ修正については、Remote Development リリースノート を参照してください。
リモートメニュー
今月のマイルストーンでは、必要な拡張機能をインストールすることにより、リモート接続 (SSH、Remote Tunnels、GitHub Codespaces など) をすばやくインストールして開始できるように、リモートメニューを更新しました。VS Code デスクトップからのリモート接続を開始するのに役立つ、ウェルカムページの Connect to... スタートエントリもあります。
vscode.dev のウェルカムページも更新し、Remote Tunnel に接続するためのスタートエントリを追加しました。
Tunnels 経由の WSL
前回のイテレーションでは、Remote Tunnels 経由で WSL に接続することをプレビューしました。この機能は、今回のイテレーションで安定版になりました。WSL がインストールされた Windows マシンで Remote Tunnel を実行している場合は、Remote Explorer から WSL に直接接続するオプションがあります。

テーマ: Codesong (vscode.dev でプレビュー)
この機能は、VS Code デスクトップと vscode.dev の両方で動作するようになりました。Windows デバイスですでにトンネルを実行している場合は、この機能を有効にするために VS Code を最新バージョンに更新してください。
拡張機能への貢献
GitHub Copilot
プロジェクトとノートブックを作成し、ワークスペース内のテキストを検索するのに役立つプレビュー専用のスラッシュコマンドをチャットビューに導入しました。
注意: チャットビュー、インラインチャット、およびスラッシュコマンド (例: /search
、/createWorkspace
) にアクセスするには、GitHub Copilot Chat 拡張機能をインストールする必要があります。
ワークスペースを作成する
/createWorkspace
スラッシュコマンドを使用して、一般的なプロジェクトタイプのワークスペースを Copilot に作成するように依頼できます。Copilot は、最初にリクエストのディレクトリ構造を生成します。
次に、ワークスペースを作成 ボタンを使用して、プロジェクトディレクトリを作成して新しいワークスペースとして開くことができます。

ノートブックを作成する
/createNotebook
スラッシュコマンドを使用して、要件に基づいて Jupyter ノートブックを作成するように Copilot に依頼できます。Copilot は、要件に基づいてノートブックの概要を生成します。
次に、ノートブックを作成 コマンドを使用して、ノートブックを作成し、提案された概要に基づいてコードセルに入力します。
検索パラメーターを生成する
ワークスペース検索で検索パラメーターを自動入力するように Copilot に依頼できます。これを行うには、/search
コマンドの後に、テキストで検索したい内容の説明を入力します。
これらのプレビューのスラッシュコマンドは、github.copilot.advanced
設定を次のように構成することで有効にできます
"github.copilot.advanced": {
"slashCommands": {
"createWorkspace": true,
"createNotebook": true,
"search": true
}
}
Copilot YouTube プレイリスト
YouTube の VS Code Copilot シリーズ に、PowerShell 用 Copilot を取り上げた新しい記事があります。シリーズを見逃した場合でも、言語固有 のトークや、開発に Copilot を使用する際の 効果的なプロンプト に関するガイダンスもご覧いただけます。
Python
Mypy 拡張機能
mypy を使用して Python の型チェックをサポートする Mypy Type Checker 拡張機能がプレリリースバージョンとしてプレビューで利用可能になりました。この新しい拡張機能は、現在のファイルだけでなく、コードベース全体でエラーと警告を提供します。また、より高速な型チェックのために dmypy を使用します。
この新しい拡張機能で問題が発生した場合、またはフィードバックを提供したい場合は、Mypy 拡張機能 GitHub リポジトリ に issue を提出してください。
Debugpy 拡張機能
Python 拡張機能から Python 2.7 および Python 3.6 のサポートが削除されたとき、Python の最新バージョンにコードベースをアップグレードできず、Python 拡張機能の最新バージョンでアプリケーションをデバッグする機能を失ったユーザーから多くのフィードバックが寄せられました。このソリューションに向けて取り組むために、Debugpy という別の Python デバッガー拡張機能を作成しました。デバッガーを Python 拡張機能から分離することで、(拡張機能の自動更新を無効にすることで) 古いバージョンのデバッガーを使用しながら、Python 拡張機能の最新バージョンを最終的に使用できるようになります。この拡張機能は、debugpy の最新バージョンを使用したプレリリースバージョンとしてプレビューで利用可能です。近い将来、古いバージョンの debugpy をサポートする予定です。
ぜひ試してみて、すべてが適切に動作するかどうかをお知らせください。私たちの計画は、この別の拡張機能を優先して、組み込みのデバッグ機能を非推奨にすることです。
Pylance のローカライズ
Pylance 拡張機能がローカライズされました! これは、Language Pack がインストールされ、VS Code でアクティブに設定されている場合、拡張機能からの設定、コマンド、およびその他のテキストが、優先言語に翻訳されることを意味します。
テストの検出と実行のリライト
今月は、実験としてテストリライトのロールアウトを継続しています。念のためですが、このリライトは、拡張機能の unittest と pytest の両方で、テストの検出と実行の背後にあるアーキテクチャを再設計します。リライトは現在、VS Code Insiders ユーザーの 100% でアクティブになっており、今月安定版に移行を開始します。リライトはまもなく採用されますが、今のところ、オプトインおよびオプトアウトするための設定 pythonTestAdapter
はまだ存在します。
pytest および unittest の動的な実行結果
新しい実験でロールアウトされているのは、pytest および unittest の動的な実行結果です。以前は、テスト結果はすべてのテストの実行が完了した後にのみ返されていましたが、この機能により、テスト結果が個別に配信されるため、テストの合格と失敗をリアルタイムで確認できます。
サードパーティライブラリのインデックス永続化
Pylance は、オートコンプリート、自動インポート、コードナビゲーションなどの IntelliSense 機能を有効にするために、環境にインストールされているサードパーティライブラリのインデックス作成を実行します。以前は、Pylance は VS Code でワークスペースを開くたびにこれらのライブラリのインデックスを作成していました。現在、Pylance はこれらのライブラリのインデックスを永続化し、反復的なインデックス作成プロセスの必要性を減らしています。
Python 3.7 サポートの非推奨化
Python 3.7 は、2023 年 6 月 27 日にサポート終了 (EOL) を迎えました。そのため、Python 拡張機能からの Python 3.7 の公式サポートは、3 か月後の拡張機能の 2023.18 リリース (VS Code の 2023 年 9 月リリースに対応) で終了します。Python 3.7 のサポートを積極的に削除する予定はありません。そのため、Python 拡張機能は、当面の間、Python 3.7 で非公式に動作し続けると予想されます。
Python の他のすべてのリリースが年次リリースケイデンスになったため、Python リリースが EOL に達すると、次の暦年の最初の Python 拡張機能リリースで公式サポートを停止する予定です。たとえば、Python 3.8 は 2024 年 10 月に EOL に達する予定であるため、2025 年の最初の Python 拡張機能リリースでは公式サポートを停止します。
GitHub Pull Requests and Issues
プルリクエストと issue の作業、作成、および管理を可能にする GitHub Pull Requests and Issues 拡張機能で、さらに進捗がありました。
- プルリクエストで最大 1000 件 (以前の 100 件から) のコメントスレッドをロードできます。
- 読み取り専用メッセージ用の新しい VS Code API 提案を使用すると、チェックアウトされていない diff から直接 PR をチェックアウトできます。
- ツリーとコメントのアバターは、正方形ではなく円です。
その他のハイライトについては、拡張機能の 0.68.0 リリースの変更ログ を確認してください。
プレビュー機能
TypeScript 5.2 のサポート
このアップデートには、今後の TypeScript 5.2 リリースのサポートが含まれています。TypeScript チームが現在取り組んでいる内容の詳細については、TypeScript 5.2 イテレーション計画 を参照してください。今後のツール機能のハイライトには、次のようなものがあります。
- 新しい 定数のインライン化 リファクタリング。
- シンボルを既存のファイルに移動できる新しい ファイルに移動 リファクタリング。
TypeScript 5.2 nightly ビルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。
新しい差分エディター
今月のイテレーションでは、差分エディターの書き換えが完了しました。この書き換えにより、いくつかの新機能を追加し、パフォーマンスを向上させ、いくつかのバグを修正することができました。
新しい diff エディターを試すには、設定に "diffEditor.experimental.useVersion2": true
を追加してください。新しい diff エディターはまだ実験段階ですが、将来のアップデートで現在の diff エディターを最終的に置き換える予定です。
ここで紹介する機能はすべて、新しい diff エディターが必要です。
変更のないリージョンを折りたたむ
新しい diff エディターで変更のないリージョンを非表示にするには、diffEditor.experimental.collapseUnchangedRegions
を使用します。この機能は、変更のないコードが大量に含まれる大きな差分を確認する際に役立ちます。
非表示行ブロックの境界線をドラッグまたはクリックすると、下または上からコードを表示できます。

挿入/削除マーカーを表示
挿入/削除マーカーは、行のどこに単語が挿入または削除されたかを示します。これは、1 行に挿入と削除の両方が含まれている場合に特に役立ちます。
挿入/削除マーカーを有効/無効にするには、diffEditor.experimental.showEmptyDecorations
を使用します。

装飾の改善
行全体の削除/挿入には、幅いっぱいの背景色が使用されるようになりました。これにより、ノイズが大幅に軽減されます。
これは、新しい diff エディターが変更を強調表示する方法の例です

これは、古い diff エディターが装飾をレンダリングする方法です(右側の 57 行目には幅いっぱいの背景色がないことに注意してください)

同期的な差分更新
新しい diff エディターで入力すると、変更はヒューリスティックに即座に適用され、しばらくすると非同期の差分計算がトリガーされます。古い diff エディターでは、変更は即座に適用されなかったため、入力時に目に見えるちらつきが発生していました。
新規 - 入力時に差分が即座に更新

旧 - 目に見えるちらつきがある

移動検出
この実験的な機能は、ファイル内で移動されたコードブロックを検出します。有効にするには diffEditor.experimental.showMoves
を使用してください。現時点では、単純な移動のみが検出されますが、将来的にはこの機能を改善する予定です。移動されたコードブロックが選択されると、ソースとターゲットの場所が揃えられ、それらの間の差分が表示されます。

移動検出はまだ実験的な機能であるため、今後のアップデートで大幅な変更がある可能性があります。
拡張機能の作成
SecretStorage API が keytar ではなく Electron API を使用するように
SecretStorage API は、パスワードやアクセストークンなどのシークレットを保存するための推奨される方法として長年使用されてきました。内部的には、OS のキーリングにシークレットを保存するために使用される抽象化レイヤーである keytar を使用していました。keytar の非推奨およびアーカイブ化のため、この問題に対する他のソリューションを探し、特にランタイムである Electron にソリューションを求めました。
今回のリリースでは、keytar から Electron の safeStorage API への移行を開始しました。この切り替えは、シークレットが keytar から取得され、Electron の safeStorage
API を介して復元されるため、ユーザーには透過的であるはずです。将来的には、この移行を削除して、keytar への依存を完全に取り除く予定です。
keytar 非推奨計画
しばらくの間、VS Code は、OS のキーリングにシークレットを保存するために使用される抽象化レイヤーである keytar に大きく依存していました。さらに、SecretStorage API の導入前に拡張機能が依存していた keytar shim を VS Code に含めていました。keytar 自体は 公式にアーカイブ されており、メンテナンスされていません... シークレットを保存するためにアーカイブされたソフトウェアに依存しないことで、適切なセキュリティ対策を推進するために、VS Code からこの shim を削除する計画を進めています。
この keytar shim をまだ使用している人気のある拡張機能の作者にはすでに直接連絡を取り、彼らはそれを使用しないように取り組んでいます。この変更による混乱を最小限に抑えるために、直接連絡を取っていない方々にも、ここだけでなく GitHub Discussions でもこの件についてお伝えしたいと思います。keytar への依存を取り除くにはかなりの作業が必要でしたが、拡張機能が安全な API を使用するようにするために、これが正しいことだと考えています。皆様にとって最良のニュースではないことは承知しておりますが、ご理解いただければ幸いです。
拡張機能で keytar を直接使用している場合は、いくつかの選択肢があります。
- (推奨) ExtensionContext で VS Code が提供する SecretStorage API を使用してください。この API はクロスプラットフォームであり、VS Code がサポートするすべてのプラットフォームで動作します。また、VS Code チームによってメンテナンスされており、今後もメンテナンスが継続され、長年にわたって VS Code API の一部となっています。
- (非推奨) keytar モジュールを拡張機能にバンドルすることができます。keytar はネイティブ Node モジュールであるため、サポートする各プラットフォームに対して プラットフォーム固有の拡張機能を公開する 必要があることに注意してください。
タイムライン:現在の計画では、この shim を VS Code Insiders から 8 月上旬に削除する予定です。つまり、2023 年 9 月の安定版リリースが、shim がない最初のリリースとなります。
この作業は issue #115215 で追跡されており、ご不明な点がございましたら、GitHub Discussions でお気軽にご質問ください。
ローカルファイルに対する vscode.fs.writeFile のパフォーマンスが向上
vscode.fs.writeFile
API を使用してファイルにデータを書き込む場合(推奨)、拡張機能ホストに対してローカルなファイルへの書き込み操作が大幅に高速化されました。
以前は、拡張機能ホストが書き込み操作を VS Code クライアントに委譲して実行していましたが、現在は操作が拡張機能ホスト内で直接実行されるようになり、ラウンドトリップが削減されました。
ツリーチェックボックス API
TreeItem
の checkboxState
API が最終決定されました。デフォルトでは、チェックボックスを持つツリーアイテムのチェック状態は VS Code によって管理されます。この動作は、TreeViewOptions
プロパティ manageCheckboxStateManually
を true
に設定することで変更できます。manageCheckboxStateManually
が設定されている場合、拡張機能は親および子チェックボックスのチェックとチェック解除の管理を担当します。
EnvironmentVariableCollection.description
この新しい API により、ターミナルタブのホバーでユーザーに表示される EnvironmentVariableCollection
の説明を指定して、変更内容を正確に説明できるようになりました。
// Example of what the Git extension could use
context.environmentVariableCollection.description =
'An explanation of what the environment changes do';
この API の動作は、組み込みの Git 拡張機能で確認できます。Git 拡張機能は、変更内容を説明するようになりました。

提案された API
すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。
- 最新の @vscode/dts を使用して、
npx @vscode/dts dev
を実行します。対応する d.ts
ファイルがワークスペースにダウンロードされます。
- これで、提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次期リリースで破壊的な変更が発生する可能性があり、既存の拡張機能を破壊することは決して望ましくありません。
ファイルシステムプロバイダーの読み取り専用メッセージ
registerFileSystemProvider
を使用する場合、ファイルシステムを単に読み取り専用としてマークする代わりに、読み取り専用メッセージを提供できます。ユーザーがそのプロバイダーのファイルを編集しようとすると、以下のメッセージがエディターに表示されます。

エンジニアリング
エクスポートされたシンボルの名前マングリング
昨年、コードサイズを削減するために、プライベートプロパティとメソッドの名前のマングリングを開始しました。現在では、エクスポートされたシンボル名もマングリングするようになり、メインのワークベンチ JavaScript ファイルのサイズがさらに 8% 削減されました。
名前マングリングのビルドステップにより、コア VS Code と組み込み拡張機能全体で合計 3.9 MB の JavaScript が節約されるようになりました。この削減により、ダウンロードが高速化され、VS Code のインストールサイズが削減され、VS Code を起動するたびにコードの読み込みが高速化されます。
Node.js、組み込み拡張機能、および Electron のチェックサム整合性チェック
ビルドの一部として、リモートサーバー用の Node.js や Marketplace および Electron からの組み込み拡張機能など、他の場所からバイナリリソースを利用しています。今回のマイルストーンでは、vscode
GitHub リポジトリにチェックインされた SHA256 チェックサムに対して検証することで、これらのバイナリリソースの整合性を確保します。
新しい Linux パフォーマンスマシン
私たちは VS Code のパフォーマンス、特にテキストエディターを開いて点滅するカーソルが表示されるまでの経過時間を非常に重視しています。その経過時間を監視するために、Windows および macOS で毎日のパフォーマンステストを実行しています。
今回のマイルストーンでは、Ubuntu 22 での起動時間をレポートする Linux マシンをテストセットに追加しました。

イベントエミッターの最適化
VS Code は、コードベース全体でイベントエミッターを広範囲に使用しています。このイテレーションでは、これらのエミッターを最適化し、起動時間とメモリ使用量がわずかに改善されました。
この改善の詳細については、issue #185789 を参照してください。
ターミナル pty ホストの改善
「Pty Host」プロセスは、ターミナルによって起動されたすべてのシェルプロセスを管理し、いくつかの改善が行われました。
- パフォーマンス
- pty ホストプロセスへの直接通信チャネルが追加されました。これによる最も重要な変更は、ターミナルの入力遅延の削減です。
- 再接続(ウィンドウのリロード)とプロセス復旧(再起動)のパフォーマンスは、不要な呼び出しを減らし、複数のターミナルが復元されるときにタスクを並列化することで改善されました。
- ターミナルの起動と再接続に関するパフォーマンスメトリクスを収集するようになり、開発者:起動パフォーマンス コマンドから表示できます。
- 診断
- ターミナル関連のログはすべて、ウィンドウ出力チャネルから新しい ターミナル出力チャネルに移動しました。
- トレースログレベルが Pty Host 出力チャネルでオンになっている場合、ターミナルはすべての RPC 呼び出しをログに記録します。これは、ターミナルの問題を診断するのに役立ちます。
ドキュメント
新しい C# トピック
C# 記事 の新しいセットを通じて、C# Dev Kit 拡張機能を使用した VS Code での C# 開発について学ぶことができます。そこでは、はじめに、拡張機能の言語機能(コードナビゲーション、リファクタリング、デバッグ)、および開発ライフサイクルを支援するトピック(プロジェクト および パッケージ 管理など)について説明しています。
Glob パターンリファレンス
VS Code には、独自の glob パターン 実装 があり、ファイルとフォルダーの検索フィルタリング、ファイルエクスプローラーのビューのカスタマイズなどの機能に使用されています。詳細については、新しい Glob パターンリファレンス を参照してください。
注目すべき修正
謝辞
最後になりましたが、VS Code のコントリビューターに心から感謝申し上げます。
Issue tracking
Issue tracking への貢献
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
プルリクエスト
vscode
への貢献
- @AlbertHilb: markdown-math 設定に
macros
エントリーを追加 PR #180458
- @antonioprudenzano (Antonio Prudenzano): 機能: #132598 Windows および macOS で翻訳されたビルドを実行している場合の通知を追加 PR #181191
- @cadinsl: ユーザーおよびワークスペースのタブを編集して、アクセシビリティのために名前のみを表示するように #184530 PR #184627
- @CGNonofr (Loïc Mangeonjean):
array.some
コールバックから副作用を削除 PR #184919
- @ChaseKnowlden: chore: inno setup の最小インストール可能バージョンを更新 PR #175818
- @cmtm (Chris Morin): git リポジトリにない場合でも gitignore ファイルを尊重 PR #183368
- @gjsjohnmurray (John Murray)
files.dialog.defaultPath
設定を実装 (fix #115730) PR #182908
- パネルタイトルバーにターミナルアイコンを正しく表示 (fix #183679) PR #183680
- Simple Browser で表示されたページからのダウンロードを許可 PR #185117
- @hermannloose (Hermann Loose): コメントパネルツリービューアイコンの色定義を修正 PR #185654
- @hsfzxjy: Fix #185858: タブタイトルをダブルクリックしたときにエディターグループの最大化を有効/無効にするオプションを追加 PR #185966
- @iifawzi (Fawzi Abdulfattah): 機能: ビデオの自動再生とループ再生のオプションサポートを追加 PR #184758
- @InigoMoreno (Iñigo Moreno): 空のカテゴリを許可するように argv.ts を更新 PR #181311
- @jacekkopecky (Jacek Kopecký): tabSizingFixedMinWidth 設定を追加 (#_185766) PR #186058
- @jeanp413 (Jean Pierre)
remote.autoForwardPortsSource
がマシン設定から尊重されない場合がある問題を修正 PR #184860
- ブラウザの vscode で xterm search addon が 2 回ロードされる問題を修正 PR #184922
- @jhunt-scottlogic (Joshua Hunt): Test Explorer フィルター UI PR #183192
- @jjaeggli (Jacob Jaeggli): エディター検索ウィジェットにダイアログロールを追加 PR #172979
- @joshaber (Josh Abernathy): トンネルファクトリがエラーをスローしたときにトンネルが削除されない問題を修正 PR #186566
- @kevalmiistry (Keval Mistry): 修正: マージ完了ボタンとコンフリクトアクションバーが重なる問題を修正 PR #184603
- @max06 (Flo): fish の ShellIntegration を復元 (#_184659) PR #184739
- @r3m0t (Tomer Chachamu): webview に vscode-context-menu-visible クラスを追加 PR #181433
- @russelldavis (Russell Davis): smartSelect でサブワードを無視するオプションを追加 PR #182571
- @tisilent (xie jialong 努力鸭): gutterOffsetX 範囲を更新 (dirtydiff , fold) PR #184339
- @weartist (Hans)
- 正しいリンクに調整 PR #184011
- Fix #182013 PR #184677
- Fix #185051 PR #185431
- Fix #153590 PR #185467
- Fix:#185359 PR #185718
- @yshaojun
- 修正: mergeEditor でカーソルが 1 列目に表示されない (#_183736) PR #184604
- 修正: インライン補完が表示されない (#_184108) PR #185215
vscode-emmet-helper
への貢献
- @iifawzi (Fawzi Abdulfattah): 修正: 連続するドットをノイズとしてマークし、Jinja 構文の省略形を無効にする PR #80
vscode-livepreview
への貢献
- @toyobayashi (Toyo Li): 外部ブラウザでのコンソール行番号を修正 PR #503
vscode-pull-request-github
への貢献
- @SKPG-Tech (Salvijus K.): ユーザー名が利用できない場合に null になる問題を修正 PR #4892