2023年6月 (バージョン 1.80)
Update 1.80.1: このアップデートでは、これらの問題に対処しています。
Update 1.80.2: このアップデートでは、このセキュリティ問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の2023年6月リリースへようこそ。このバージョンには、気に入っていただけることを願う多くのアップデートが含まれています。主なハイライトは以下のとおりです。
- アクセシビリティの改善 - 画面読み上げ機能のサポートを向上させるアクセシブルビュー、Copilot のオーディオキュー。
- エディターグループとタブのリサイズを改善 - 最小タブサイズの設定、不要なエディターグループのリサイズを回避。
- 選択範囲を縮小・拡大する際にサブワードをスキップ - 選択にキャメルケースを使用するかどうかを制御。
- ターミナルでの画像サポート - 統合ターミナルで画像を直接表示。
- mypy と debugpy 用の Python 拡張機能 - VS Code での Python の型チェックとデバッグ用。
- WSL へのリモート接続 - トンネルを使用してリモートマシン上の WSL インスタンスに接続。
- プレビュー: GitHub Copilot のワークスペース/ノートブック作成 - プロジェクトやノートブックをすばやくスキャフォールド。
- 新しい VS Code の C# ドキュメント - C# Dev Kit 拡張機能を使用した C# 開発について学習。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
アクセシブルビュー
新しいコマンド「アクセシブルビューを開く」(⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2))により、スクリーンリーダーのユーザーは内容を1文字ずつ、1行ずつ検査できます。ホバーまたはチャットパネルの応答にフォーカスがあるときにこれを呼び出します。
アクセシビリティヘルプの改善
新しいコマンド「アクセシビリティヘルプを開く」(⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1))により、現在のコンテキストに基づいてヘルプメニューが開きます。現在、エディター、ターミナル、ノートブック、チャットパネル、インラインチャット機能に適用されます。
アクセシビリティヘルプメニューのヒントを無効にし、ヘルプメニュー内から追加のドキュメント (存在する場合) を開くことができます。
ノートブックのアクセシビリティヘルプ
ノートブックのエディターレイアウト、ナビゲーション、ノートブックとの対話に関する情報を提供する新しいアクセシビリティヘルプメニューが追加されました。
チャットのオーディオキュー
GitHub Copilot チャットエクスペリエンスにオーディオキューが追加されました。audioCues.chatRequestSent
、audioCues.chatResponsePending
、および audioCues.chatResponseReceived
を介して有効にできます。
チャットアクセシビリティの改善
チャット応答は、受信されるとすぐにスクリーンリーダーに提供され、インラインおよびチャットパネルのアクセシビリティヘルプメニューには、各機能で期待されることと操作方法に関するより詳細な情報が含まれています。
設定エディターの代替テキストの改善
設定エディター(設定: 設定 (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 リリースノートで詳しく説明されています。
エディターグループの分割サイズ設定が「自動」に変更されました
workbench.editor.splitSizing
設定の新しい値である auto
が新しいデフォルトとなりました。このモードでは、エディターグループを分割すると、どのエディターグループもサイズ変更されていない場合にのみ、利用可能なサイズがすべてのエディターグループに均等に分配されます。それ以外の場合、分割されたエディターグループのスペースは半分に分割され、新しいエディターグループに配置されます。
この変更の意図は、分割時に作成したレイアウトを壊さないようにしつつ、それ以外の場合はサイズを均等に分配する以前のデフォルト動作を維持することです。
gitignore 除外動作を検索する
search.useIgnoreFiles
が true
に設定されている場合、ワークスペースが Git リポジトリとして初期化されているかどうかに関わらず、ワークスペースの .gitignore
が尊重されるようになりました。
コメントの最大高さ
comments.maxHeight
設定を使用すると、GitHub Pull Requests and Issues 拡張機能を使用している場合にプルリクエストで表示されるコメントなどの最大高さ制限を無効にできます。
VS Code の問題のトラブルシューティング
コマンドパレットに新しいコマンド ヘルプ: 問題のトラブルシューティング が追加され、VS Code の問題のトラブルシューティングに役立ちます。起動されたワークフローは、特別なトラブルシューティングプロファイルと VS Code の拡張機能バイセクト機能を使用して、問題の原因を特定するのに役立ちます。拡張機能バイセクトは、バイナリ検索中にインストールされている拡張機能を有効/無効にし、問題が再現するかどうかを示します。これにより、問題の原因となる拡張機能が絞り込まれ、問題を報告する際に適切な情報を提供できるようになります。
Chromiumサンドボックスの無効化
VS Codeデスクトップを高権限ユーザーとして起動することが避けられないシナリオ、例えばLinuxでsudo
を使ってVS Codeを起動したり、WindowsのAppLocker環境で管理者として起動したりする場合、アプリケーションが期待どおりに動作するためには--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 を再起動します。
注: 問題が発生しない限り、この設定を使用しないでください!
エディター
選択範囲を縮小・拡大する際のサブワードのスキップ
「選択範囲の拡大」と「選択範囲の縮小」コマンドは、サブワードをスキップするように設定できるようになりました。これは、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"
}
}
}
そしてJSXまたはTSXファイルで..test
の略語を展開すると、代わりに<div className={myStyles.test}></div>
の略語が得られます。
サイズ変更可能なコンテンツホバー
コンテンツホバーコントロールのサイズを変更できるようになりました。コントロールの境界線にカーソルを合わせ、サッシをドラッグしてホバーのサイズを変更できます。
ターミナル
画像サポート
前回リリースでプレビューされたターミナル内の画像が、デフォルトで有効になりました。ターミナル内の画像は通常、画像ピクセルデータをテキストとしてエンコードし、特殊なエスケープシーケンスを介してターミナルに書き込むことで機能します。現在サポートされているプロトコルは、sixel と、iTerm が開拓したインライン画像プロトコルです。
画像をテストするには、libsixel リポジトリから .six
のサンプルファイルをダウンロードして cat
します。
または、.png、.gif、.jpg ファイルでimgcat python パッケージまたはimgcat スクリプトを使用します。
この機能は設定で無効にできます。
"terminal.integrated.enableImages": false
複数行および範囲リンク形式
新しいリンク形式がサポートされるようになりました。これには、ファイルを見つけるために上方向にスキャンする必要があるリンクや、範囲 (行から行、または文字から文字) を持つリンクが含まれます。
-
@@ git 範囲リンク
-
OCAML の Dune スタイルの範囲リンク
-
ESLint スタイルの複数行リンク
-
Ripgrep スタイルの複数行リンク
非推奨のシェルと 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"
}
}
}
テスト
ターミナル出力のサポート
以前は、テスト結果ビューに表示されるテスト出力は常に組み込みのテキストエディターに表示されていました。これにより、ターミナルで実行された場合に持っていた色、スタイル、記号などの豊富なスタイルが失われていました。このリリースでは、実際の xterm.js ターミナルに出力を表示します。
テーマ: Codesong (vscode.dev でプレビュー)
テスト結果ビューが完全に機能するようになったため、テスト出力の表示コマンドは、一時的なターミナルを作成する代わりにテスト結果ビューを開くようにリダイレクトされました。
ソース管理
リポジトリのクローズの改善
これまで、ユーザーはGit: リポジトリを閉じるコマンドまたはソース管理ビューのリポジトリを閉じるアクションを使用してリポジトリを閉じることができましたが、特定のアクション(例えば、閉じられたリポジトリからファイルを開くこと)を実行すると、閉じられたリポジトリが再び開いてしまうことがありました。このマイルストーンでは、いくつかの改善が行われ、リポジトリが閉じられたという事実がワークスペースごとに永続化されるようになりました。ユーザーはGit: 閉じられたリポジトリを再度開く...コマンドを使用して、閉じられたリポジトリを再度開くことができます。
ノートブック
リモート開発における保存パフォーマンスの向上
以前は、VS Code のリモート拡張機能でノートブックを保存するには、ノートブック全体を拡張機能ホストに送信する必要があり、大きなノートブックや自動保存が有効になっている低速なネットワーク接続では遅くなる可能性がありました。ノートブックの変更点のみを拡張機能ホストに送信するように変更することで、パフォーマンスが向上し、ノートブックの保存と実行が高速化されました。この機能はまだデフォルトでは無効になっていますが、まもなく有効にできると確信しています。試すには、設定に "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.editor.pasteUrlAsFormattedLink.enabled
設定(デフォルトfalse
)を使用すると、Markdownエディターに自動的にMarkdownリンクとしてフォーマットされたリンクを挿入できます。貼り付けられたリンクで置き換えるテキストを選択した場合、選択されたテキストが自動的にリンクのタイトルになります。テキストが選択されていない場合、デフォルトのリンクタイトルが設定されます。この機能は、外部ブラウザリンクとワークスペース内のファイルの両方に適用されます。
この新しい設定が機能するには、`editor.pasteAs.enabled` 設定を有効にする必要があります。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナ、SSH 経由のリモートマシンまたはリモートトンネル、あるいはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
リモート開発リリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。
リモートメニュー
今回のマイルストーンでは、リモートメニューを更新し、必要な拡張機能をインストールすることで、リモート接続(SSH、リモートトンネル、GitHub Codespacesなど)の迅速なインストールと開始を支援するエントリを追加しました。ウェルカムページには接続先...の開始エントリもあり、VS Codeデスクトップからリモート接続を開始するのに役立ちます。
vscode.dev のウェルカムページも更新され、リモートトンネルに接続するための開始エントリが追加されました。
トンネル経由のWSL
前回のイテレーションでは、リモートトンネル経由でのWSLへの接続をプレビューしました。この機能は今回のイテレーションで安定版となりました。WSLがインストールされたWindowsマシンでリモートトンネルを実行している場合、リモートエクスプローラーからWSLに直接接続するオプションが利用できます。
テーマ: Codesong (vscode.dev でプレビュー)
この機能は、VS Code デスクトップとvscode.devの両方で動作するようになりました。Windows デバイスで既にトンネルを実行している場合は、VS Code を最新バージョンに更新してこの機能を有効にしてください。
拡張機能への貢献
GitHub Copilot
チャットビューに、プロジェクトやノートブックを作成したり、ワークスペース内のテキストを検索したりするのに役立つ、プレビュー限定のスラッシュコマンドを導入しました。
注意: チャットビュー、インラインチャット、およびスラッシュコマンド(例:
/search
、/createWorkspace
)にアクセスするには、GitHub Copilot Chat 拡張機能をインストールする必要があります。
ワークスペースの作成
Copilot に /createWorkspace
スラッシュコマンドを使って一般的なプロジェクトタイプのワークスペースを作成するように依頼できます。Copilot はまず、リクエストのディレクトリ構造を生成します。
その後、ワークスペースを作成ボタンを使用して、プロジェクトディレクトリを新しいワークスペースとして作成し開くことができます。
ノートブックを作成する
Copilot に /createNotebook
スラッシュコマンドを使って、要件に基づいて Jupyter ノートブックを作成するように依頼できます。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 リポジトリで問題を提出できます。
Debugpy拡張機能
Python 拡張機能から Python 2.7 と Python 3.6 のサポートが削除された際、コードベースを最新バージョンの Python にアップグレードできず、最新バージョンの Python 拡張機能でアプリケーションをデバッグする機能が失われたユーザーから多くのフィードバックが寄せられました。この解決策に向けて、私たちはDebugpy という別の Python デバッガ拡張機能を作成しました。デバッガを Python 拡張機能から分離することで、最終的には Python 拡張機能の最新バージョンを使用しながら、デバッガの古いバージョンを使用できるようになります(拡張機能の自動更新を無効にすることで)。この拡張機能は、最新バージョンの debugpy を使用して、プレリリースバージョンとしてプレビューで利用可能です。近い将来、debugpy の古いバージョンもサポートする予定です。
試してみて、すべてが適切に機能するかどうかお知らせください。私たちの計画は、この別の拡張機能に有利な形で組み込みのデバッグ機能を非推奨にすることです。
Pylance のローカライズ
Pylance 拡張機能がローカライズされました!これは、言語パックをインストールして 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-06-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プルリクエストと課題
プルリクエストや課題の作業、作成、管理ができるGitHubプルリクエストと課題拡張機能は、さらに進歩しました。
- プルリクエストに最大1000件 (以前は100件) のコメントスレッドを読み込むことができます。
- 読み取り専用メッセージに関する新しい VS Code API 提案により、チェックアウトされていない差分から直接プルリクエストをチェックアウトできるようになりました。
- ツリーやコメントのアバターが、正方形ではなく円形になりました。
その他のハイライトについては、拡張機能の0.68.0 リリースの変更履歴をご覧ください。
プレビュー機能
TypeScript 5.2のサポート
このアップデートには、今後のTypeScript 5.2リリースに対するサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細については、TypeScript 5.2イテレーション計画を確認してください。今後のツール開発のハイライトは以下のとおりです。
- 新しいインライン定数リファクタリング。
- シンボルを既存のファイルに移動できる新しいファイルに移動リファクタリング。
TypeScript 5.2 nightly ビルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。
新しい差分エディター
今回のイテレーションで差分エディターの書き換えを完了しました。この書き換えにより、いくつかの新機能を追加し、パフォーマンスを向上させ、いくつかのバグを修正することができました。
新しい差分エディターを試すには、設定に "diffEditor.experimental.useVersion2": true
を追加してください。新しい差分エディターはまだ実験段階ですが、将来のアップデートで現在の差分エディターを置き換える予定です。
提示されているすべての機能は、新しい差分エディターが必要です。
変更されていない領域を折りたたむ
新しい差分エディターで変更されていない領域を非表示にするには、diffEditor.experimental.collapseUnchangedRegions
を使用します。この機能は、多くの変更されていないコードを含む大規模な差分をレビューする際に役立ちます。
非表示行ブロックの境界線は、ドラッグしたりクリックしたりすることで、下または上からコードを表示できます。
挿入/削除マーカーを表示する
挿入/削除マーカーは、行のどこに単語が挿入または削除されたかを示し、特に1行に挿入と削除の両方がある場合に役立ちます。
挿入/削除マーカーを有効/無効にするには、diffEditor.experimental.showEmptyDecorations
を使用します。
装飾の改善
全行削除/挿入は、全幅の背景色を持つようになりました。これにより、ノイズが大幅に削減されます。
これは、新しい差分エディターが変更をハイライト表示する方法の例です。
これは、古い差分エディターが装飾をレンダリングする方法です(右側の57行目が全幅の背景色を持っていないことに注目してください)。
同期差分更新
新しい差分エディターで入力すると、変更はヒューリスティックに即座に適用され、しばらく遅延してから非同期差分計算がトリガーされます。古い差分エディターでは、変更が即座に適用されず、入力時に目に見えるちらつきが発生していました。
新しいもの - 入力するとすぐに差分が更新されます。
古いもの - 目に見えるちらつきがあります。
移動検出
この実験的な機能は、ファイル内の移動したコードブロックを検出します。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議論でもこの件を伝達したいと思います。私たち自身もkeytarへの依存関係を削除するためにかなりの作業が必要だったため、これが最良のニュースではないことは承知していますが、拡張機能が安全なAPIを使用することを保証するためにこれは正しいことだと考えています。
拡張機能でkeytarを直接使用している場合、いくつかの選択肢があります。
- (推奨) VS Code が提供する ExtensionContext 上の SecretStorage API を使用します。この API はクロスプラットフォームであり、VS Code がサポートするすべてのプラットフォームで動作します。また、VS Code チームによってメンテナンスされており、今後もメンテナンスが継続され、長年にわたり VS Code API の一部となっています。
- (非推奨) keytar モジュールを拡張機能にバンドルすることもできます。keytar はネイティブの Node モジュールであるため、サポートしたいプラットフォームごとにプラットフォーム固有の拡張機能を公開する必要があることに注意してください。
タイムライン: 現在の計画では、この shim を 8月上旬に VS Code Insiders から削除する予定であり、これは 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 拡張機能で確認できます。これにより、変更が何をするのかが説明されるようになりました。
提案された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 で毎日パフォーマンス テストを実行しています。
今回のマイルストーンでは、テストセットに Linux マシンを追加し、Ubuntu 22 での起動時間を報告しました。
イベントエミッターの最適化
VS Code はコードベース全体でイベントエミッターを広範囲に使用しています。今回のイテレーションではこれらのエミッターを最適化し、起動時間とメモリ使用量をわずかに改善しました。
この改善の詳細については、issue #185789 をご覧ください。
ターミナル pty ホストの改善
「Pty ホスト」プロセスは、ターミナルによって起動されるすべてのシェルプロセスを管理し、いくつかの改善が行われました。
- パフォーマンス
- pty ホストプロセスへの直接通信チャネルが追加されました。これにより、ターミナルの入力レイテンシが大幅に削減されました。
- ウィンドウの再接続 (再読み込み) およびプロセスの復元 (再起動) のパフォーマンスは、不要な呼び出しを削減し、複数のターミナルが復元されるときにタスクを並列化することで改善されました。
- ターミナルの起動時および再接続時のパフォーマンスメトリクスを収集するようになりました。これらは開発者: 起動パフォーマンスコマンドから確認できます。
- 診断
- ターミナル関連のログはすべてウィンドウ出力チャネルから新しいターミナル出力チャネルに移動しました。
- トレースログレベルがPtyホスト出力チャネルで有効になっている場合、ターミナルはすべてのRPC呼び出しをログに記録し、ターミナルの問題を診断するのに役立ちます。
ドキュメント
新しいC#トピック
C# Dev Kit 拡張機能を使用した VS Code での C# 開発について、新しい一連のC# 記事で学ぶことができます。そこには、開始方法、拡張機能の言語機能(コードナビゲーション、リファクタリング、デバッグ)、およびプロジェクトとパッケージ管理などの開発ライフサイクルを支援するトピックが見つかります。
Globパターン参照
VS Code には独自の glob パターン実装があり、ファイルの検索やフォルダのフィルタリング、ファイルエクスプローラービューのカスタマイズなどの機能に使用されています。詳細については、新しいGlob パターンリファレンスをご覧ください。
注目すべき修正点
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
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 (ジョン・マレー)
- `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): feat: 動画の自動再生とループ再生をオプションでサポート追加 PR #184758
- @InigoMoreno (Iñigo Moreno): 空のカテゴリを許可するように argv.ts を更新 PR #181311
- @jacekkopecky (Jacek Kopecký): tabSizingFixedMinWidth 設定を追加 (#_185766) PR #186058
- @jeanp413 (ジャン・ピエール)
- 機械設定から
remote.autoForwardPortsSource
が尊重されない場合がある問題を修正 PR #184860 - ブラウザ版vscodeでxterm検索アドオンが二重に読み込まれる問題を修正 PR #184922
- 機械設定から
- @jhunt-scottlogic (Joshua Hunt): テストエクスプローラーフィルターUI PR #183192
- @jjaeggli (Jacob Jaeggli): エディターの検索ウィジェットにダイアログロールを追加 PR #172979
- @joshaber (Josh Abernathy): トンネルファクトリがエラーをスローした場合のトンネル削除を修正 PR #186566
- @kevalmiistry (Keval Mistry): FIX: コンフリクトアクションバーが「マージを完了」ボタンと重なる問題を修正 PR #184603
- @max06 (Flo): fish 用のシェル統合を復元 (#_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 (ハンス)
- 正しいリンクに調整 PR #184011
- Fix #182013 PR #184677
- Fix #185051 PR #185431
- Fix #153590 PR #185467
- 修正:#185359 PR #185718
- @yshaojun
- 修正: mergeEditor の 1 列目にカーソルが表示されない (#_183736) PR #184604
- 修正: インライン補完が表示されない (#_184108) PR #185215
vscode-emmet-helper
への貢献
- @iifawzi (Fawzi Abdulfattah): 修正: 連続するドットをノイズとしてマークし、Jinja 構文の略語を無効化 PR #80
vscode-livepreview
への貢献
- @toyobayashi (豊林): 外部ブラウザでのコンソール行番号を修正 PR #503
vscode-pull-request-github
への貢献者
- @SKPG-Tech (Salvijus K.): ユーザー名がない場合の null を修正 PR #4892