2023年8月 (バージョン 1.82)
更新 1.82.1: この更新プログラムは、このセキュリティの問題に対処しています。
更新 1.82.2: この更新プログラムは、これらのの問題に対処しています。
更新 1.82.3: この更新プログラムは、このセキュリティの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code の 2023 年 8 月リリースへようこそ。このバージョンでは多くの更新が行われており、気に入っていただけることを願っています。主なハイライトの一部を以下に示します。
- アクセシビリティの改善 - インライン補完のアクセシブルビューのサポート、キーバインドの更新。
- 組み込みのポート転送 - VS Code 内からローカルサーバーポートを転送します。
- スティッキースクロールの更新 - エディターに合わせて水平方向にスクロール、範囲内の最終行を表示、折りたたみ UI。
- 新しい差分エディター機能 - 移動したコードを検出、インラインビューとサイドバイサイドビューを動的に切り替え。
- コマンドセンターがデフォルトで表示されるようになりました - タイトルバーからファイルを素早く開いたり、コマンドを実行したりできます。
- ノートブック出力をコピー - セルの出力だけでなく、生成された画像も簡単にコピーできます。
- WebAssembly デバッグ - WASM コードを逆コンパイルしてステップ実行し、ブレークポイントを設定します。
- 新しい TypeScript リファクタリング - ファイルへの移動とインライン変数のリファクタリング。
- 新しい Python フォーマットのトピック - autopep8 や Black などのフォーマッターを統合する方法を学びます。
- プレビュー: GitHub Copilot - CreateWorkspace コマンドは、提案されたコードのファイル構造をプレビューします。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
ウィンドウタイトルにフォーカスされたビュー
window.title
設定に ${focusedView}
変数が追加され、ビューが現在フォーカスされている場合、タイトルバーにビューの名前が表示されるようになりました。
インライン補完のアクセシブルビュー
GitHub Copilot 拡張機能などからのインライン補完は、アクセシブルビューで検査できるようになりました。
ワークベンチ全体のナビゲーションの一貫性の向上
前回のイテレーションでは、入力コントロール (検索またはフィルター入力など) とその結果の間を移動する際のエクスペリエンスを、拡張機能ビュー、キーボードショートカットエディターなどのコンポーネント間で一貫させるために、⌘↓ (Windows, Linux Ctrl+Down) および ⌘↑ (Windows, Linux Ctrl+Up) を使用して改善しました。これは、設定エディターと GitHub プルリクエストコメントコントロールにも拡張されました。
これは、ターミナルとターミナルアクセシブルバッファー間の移動にも機能します。
ターミナルアクセシブルバッファーのキーバインドを更新
以前は、ターミナルアクセシブルバッファーは Shift+Tab で開かれていました。これは、一部のシェルで既存のキーボードショートカットと競合していました。そのため、他のアクセシブルビューと一致させるために、そのキーバインドを削除し、⌘↓ (Windows, Linux Ctrl+Down) および ⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2) を優先しました。
アクセシブルビューのアクション
アクセシブルビューのアクションにより、スクリーンリーダーのユーザーは、特定の機能の次/前
に移動したり、アクセシビリティの詳細設定を無効にしたりできます。これらのアクションは、現在のコンテキストを維持できるように、ビューの便利なツールバー内に存在します。
アクセシブルビューのシンボルへ移動
アクセシビリティヘルプダイアログと一部のアクセシブルビューに、コンテンツを素早く移動できるように**シンボルへ移動** (⇧⌘O (Windows, Linux Ctrl+Shift+O)) アクションが追加されました。
実行後にターミナルアクセシブルバッファーにフォーカス
ターミナルに terminal.integrated.focusAfterRun
設定が追加され、ユーザーは **ターミナル: アクティブなターミナルで選択したテキストを実行** が呼び出されたときに、ターミナルのアクセシブルバッファー (accessible-buffer
)、ターミナル自体 (terminal
)、または何も (none
) フォーカスするかどうかを指定できるようになりました。
ワークベンチ
組み込みのポート転送
VS Code には、組み込みのポート転送システムが搭載されました。この機能により、ローカルで実行されているサービスをインターネット経由で他の人やデバイスと共有できます。使用するには、パネル領域にある**ポート**ビュー (**ポート: ポートビューにフォーカス**) で**ポートを転送**ボタンを選択します。
テーマ: Codesong (vscode.dev でプレビュー)
ポート転送の詳細については、ポート転送ユーザーガイドを参照してください。
コマンドセンターがデフォルトで有効に
コマンドセンターは数ヶ月前に、VS Code を素早く見つけて操作する方法として導入されました。コマンドパレットでコマンドを見つけたり、タスクを実行したり、その他の素早い操作のための起動パッドとして使用できます。コマンドセンターをタイトルバーに表示する実験を行って、肯定的なフィードバックが得られたため、デフォルトで有効にすることにしました。
コマンドセンター、および戻る/進むボタンを使用したビデオを次に示します。
コマンドセンターには、VS Code 内のあらゆるものを見つける中心となる大きな可能性を見出しており、今後もさらなる改善にご期待ください!
注: コマンドセンターを非表示にしたい場合は、タイトルバーを右クリックし、ドロップダウンメニューのコマンドセンターエントリのチェックを外してください。
キーボードまたはマウスからのピン留めされたエディターの閉じ方を制御
新しい設定 workbench.editor.preventPinnedEditorClose
が追加され、ピン留めされたタブがエディターを閉じるためのキーボードショートカットまたはマウスの中クリックにどのように応答するかをより詳細に制御できるようになりました。デフォルトでは、ピン留めされたタブはキーボードまたはマウスの操作で閉じられません (デフォルト値 keyboardAndMouse
)。この設定は必要に応じて変更できます。
keyboardAndMouse
- ピン留めされたタブは、キーボードショートカットまたはマウスの中クリックでは閉じません (1.82.x
以降のデフォルト)。keyboard
- ピン留めされたタブは、キーボードショートカットでは閉じません (1.81.x
までのデフォルト)。mouse
- ピン留めされたタブは、マウスの中クリックでは閉じません。never
- ピン留めされたタブは、常にキーボードショートカットまたはマウスの中クリックで閉じます。
ステータスバーの新しいテーマカラーと更新されたテーマカラー
ステータスバーにはすでに多くのテーマカラーが用意されています。ホバー時の前景と背景のテーマを設定できるように、さらに多くの色が追加されました。
statusBarItem.errorHoverBackground
statusBarItem.errorHoverForeground
statusBarItem.warningHoverBackground
statusBarItem.warningHoverForeground
statusBarItem.remoteHoverBackground
statusBarItem.remoteHoverForeground
statusBarItem.offlineHoverBackground
statusBarItem.offlineHoverForeground
以下の2つの色名は、色がステータスバー全体に適用されず、リモートインジケーターのみに適用されるようになったため、更新されました。
statusBar.offlineBackground
がstatusBarItem.offlineBackground
に変更statusBar.offlineForeground
がstatusBarItem.offlineForeground
に変更
エディター
スティッキースクロール
今回のイテレーションでは、エディターの上部で利用できるスティッキースクロール UI にいくつかの改善が加えられました (**表示: スティッキースクロールを切り替える**)。
- 現在、デフォルトでは、エディターの水平スクロールバーがスクロールされると、スティッキースクロールが横方向にスクロールされます。この機能は、
editor.stickyScroll.scrollWithEditor
を無効にすることでオフにできます。 Shift
キーを押しながらスティッキースクロール行にカーソルを合わせると、スコープの最終行を表示できます。Shift
キーを押しながら行をクリックすると、エディターカーソルがスコープの最終行に移動します。- 折りたたみアイコンがスティッキースクロールガッターに追加されました。これらのアイコンのレンダリングは、エディターガッターの折りたたみアイコンのレンダリングを制御する設定
editor.showFoldingControls
に従います。
保存時に JSON をソート
JSON または JSONC (コメント付き JSON) ファイルを保存時にソートできるようになりました。この機能を有効にするには、設定 json.sortOnSave.enable
を使用します。
キーボードによるコードアクションとクイックフィックスのナビゲーション
利用可能なメニューオプションに対応するキーワードや文字を入力することで、クイックフィックス、コードアクション、またはソース管理メニュー ("アクション" コントロールを使用) を素早く移動できるようになりました。フィルターはあいまい一致を利用し、検索は最初の文字やプレフィックスに限定されず、ラベルテキスト全体も含まれます。
差分エディター
今回のリリースでは、新しい差分エディターをデフォルトで有効にしました。また、新しい差分エディターのいくつかの機能を改善し、多くのバグを修正しました。
移動したコードの検出
今回のイテレーションでは、移動したコード検出機能を洗練させました。これは "diffEditor.experimental.showMoves": true
を使用するか、差分エディターのコンテキストメニューで有効にできます。有効にすると、同じファイル内でコードブロックが1つの場所から別の場所に移動したことが検出され、コードブロックがどこに移動したかを示す矢印が描画されます。
コードの移動は、わずかに変更された場合でも検出されます。**比較**ボタンを使用して、移動前と移動後のブロックを比較できます。
変更されていないコードヘッダーを折りたたむ
"diffEditor.hideUnchangedRegions.enabled": true
を使用するか、エディターのコンテキストメニューでマップアイコンを選択して、変更されていないコードブロックの折りたたみを有効にします。
このリリースでは、折りたたまれたコードブロックのシンボルを示すパンくずリストが追加されました。パンくずリストの項目をクリックすると、選択した項目が表示されます。
動的なレイアウト
差分エディターの幅が狭すぎる場合、エディターは自動的にインラインビューに切り替わります。エディターが再び十分な幅になると、以前のレイアウトが復元されます。この動作を無効にするには、"diffEditor.useInlineViewWhenSpaceIsLimited": false
を設定します。
ボタンのトグル状態
差分エディターのボタンのトグルスタイルを更新し、より視覚的に分かりやすくしました。
古いトグルスタイル (トグルなしとトグルあり) と暗いトグルなしボタン
,
新しいトグルスタイル (トグルなしとトグルあり) と影付きのトグル背景
,
ターミナル
起動時のターミナルの復元方法を制御
新しい設定 terminal.integrated.hideOnStartup
は、アプリケーションの起動時にターミナルが自動的に作成されるかどうかを制御します。以下のオプションが利用可能です。
never
(デフォルト): 起動時にターミナルビューを非表示にしません。whenEmpty
: 永続的なセッションが復元されない場合にのみターミナルを非表示にします。always
: 永続的なセッションが復元されている場合でも、常にターミナルを非表示にします。
括弧付き貼り付けモードを無効にする
括弧付き貼り付けモードは、貼り付けたテキストを特別なシーケンスで囲むことで、シェルがその情報を使用できるようにするターミナルの機能です。この機能を有効にするシェルは適切にサポートするように意図されていますが、うまくいかない場合があり、その場合、貼り付け時に予期せず [201~
のようなテキストが表示されることがあります。この機能は明示的に無効にできるようになり、シェルが要求した場合でもこの機能は無効になります。
実行後のターミナルのフォーカス設定
ターミナルに terminal.integrated.focusAfterRun
設定が追加され、ユーザーは **ターミナル: アクティブなターミナルで選択したテキストを実行** が呼び出されたときにターミナルにフォーカスすべきかどうかを指定できるようになりました。他のオプションは、ターミナルのアクセシブルバッファー (accessible-buffer
) にフォーカスするか、何もフォーカスしない (none
) です。
サイズ変更可能な検索
ターミナルの検索コントロールは、エディターと同様に左側のサッシュを使用してサイズ変更できるようになりました。
サッシュにカーソルを合わせたりドラッグしたりして検索コントロールのサイズを変更すると、サッシュがハイライト表示されます。
GPU アクセラレーションが無効な場合の高速レンダリング
GPU アクセラレーションが無効な場合に使用される「DOM レンダラー」のパフォーマンスが、コンポーネントの書き換えにより大幅に改善されました。書き換えは、使用される DOM 要素の数を減らすことに焦点を当てており、ターミナルが大きくなるほど節約効果がはるかに優れています。
117 列 36 行のターミナルで一般的なレンダリング呼び出しをテストしたところ、以前は〜10msかかりましたが、現在は〜2msで完了します。テストマシンでターミナルサイズを 300x100 に増やした場合、レンダリングにかかる時間は以前は〜25-35msでしたが、現在は〜4-5msに短縮されました。
より良い選択レンダリング
GPUアクセラレーションがオフの場合、選択レンダリングはwebglレンダラーと同じになり、すべての背景がテーマの選択背景色に変更され、良好なコントラストと一貫性が確保されます。
薄暗いテキストの最小コントラスト比の半分を尊重
最小コントラスト比機能により、ターミナルは前景の色をより細かく制御し、特定のコントラスト比で表示されるようにすることができます。以前この機能に問題があったのは、薄暗いテキスト (CSI 2 m
) もコントラスト比を尊重するため、通常のテキストと同じくらい目立つように表示される可能性があったことです。PowerShell のオートコンプリートゴーストテキストは、これがうまく機能しなかった例です。
薄暗いテキストは、**半分**のコントラスト要件を持つようになりました。これは、テキストが最小コントラスト比を満たさない可能性があることを意味しますが、通常のテキストとは明らかに異なるため、より重要です。
フォーカスされていないときのカーソル表示を構成
ターミナルでフォーカスされていないときのカーソルの外観を terminal.integrated.cursorStyleInactive
で構成できるようになりました。これは既存の terminal.integrated.cursorStyle
のすべてのスタイルに加えて、outline
(デフォルト) と none
をサポートします。
ターミナル: 検出されたリンクを開く動作の改善
**検出されたリンクを開く**コマンド (⇧⌘G (Windows, Linux Ctrl+Shift+G)) の動作が変更され、リンクをターミナルバッファー全体で検索する機能が大幅に向上し、高いパフォーマンスを維持できるようになりました。以前は、ビューポートと少し上のリンクのみを提供し、残りのバッファーを検索するには最後に扱いにくい**より多くのリンクを表示**ボタンがありました。
ビューポート内のリンクはすぐに表示され、クイックピックをできるだけ早く表示できるようになりました。
クイックピックが表示されるとすぐに、ターミナルバッファーの残りの部分のリンクがバックグラウンドで検出されます。フィルタリングのために入力すると、VS Code はすべての結果を待ち、フィルタリングされた結果に含めます。
CodeQL.yml
がビューポート外にあったため、フィルターが入力されるまで含まれていなかったことに注目してください。
新しいリンク形式
以下の GNU スタイルのリンク形式がターミナルで検出されるようになりました。
sourcefile:lineno.column
sourcefile:line1-column1.column2
sourcefile:line1.column1-line2.column2
デバッグ
JavaScriptデバッガー
WebAssembly のデバッグ
JavaScript デバッガーは、WebAssembly モジュールを自動的に WebAssembly テキスト形式に逆コンパイルし、逆コンパイルされたモジュールをステップ実行したり、ブレークポイントを設定したりできるようになりました。
テーマ: Codesong (vscode.dev でプレビュー)
ソースマップの読み込みの改善
今回のリリースでは、ソースマップの読み込み方法が大幅に改善されました。
tsc
コマンドラインでコンパイルされたアプリケーションなど、いくつかの一般的なケースでのソースマップの読み込みが 3~5 倍高速になりました。- Vite 開発サーバーからのホットモジュールリロードがサポートされました。
- 認証済みエンドポイントからソースマップを自動的に読み込めるようになりました。
テスト
ステータスエリアの改善
テストビューのフィルタボックスの下にある「ステータスエリア」がより簡潔になり、最近実行されたテストを再実行するためのクリック可能なアクションも提供されるようになりました。再実行ボタンを Alt キーを押しながらクリックすると、代わりにそれらのテストがデバッグされます。
テスト出力におけるリンク検出のサポート
リンク検出がテスト出力が表示されるターミナルで実行されるようになりました。ファイル名、パス、URI がクリック可能になりました。
テストと関連付けられた出力のエクスペリエンスの改善
テスト拡張機能は、コンソール出力を特定のテストまたは場所と関連付けることができます。以前は、このように作成された各出力は、テスト結果ビューで独自のアイテムとして表示され、選択するとテキストエディターで開かれました。
現在、それらは適切なターミナルに表示され、出力メッセージに移動すると、そのテストの出力のターミナルが開かれ、メッセージが選択されます。
ノートブック
セル出力をコピー
セル出力メニューに、出力をシステムクリップボードにコピーするオプションが追加されました。画像出力の場合も、画像を右クリックして**出力のコピー**コマンドを選択することで、コンテキストメニューを使用できます。
テーマ: Bearded Theme feat. Gold D Raynh (vscode.dev でプレビュー)
言語
TypeScript 5.2
VS Code には TypeScript 5.2.2 が搭載されました。この大規模なアップデートにより、新しい TypeScript 言語機能、パフォーマンスの向上、多くの重要な改善とバグ修正が行われます。TypeScript 5.2 の詳細については、TypeScript ブログを参照してください。
ファイルへの移動リファクタリング
JavaScript と TypeScript の**ファイルへ移動**リファクタリングにより、クラス、関数、または定数を既存のファイルに移動できます。これにより、シンボルへのすべての参照が自動的に更新され、必要に応じてインポートも更新されます。
**ファイルへ移動**を選択すると、VS Code は現在の TypeScript または JavaScript プロジェクトのすべてのファイルのリストを表示します。目的のファイルを素早く絞り込むために、入力を開始できます。
または、**既存のファイルを選択...** を使用して通常のファイルピッカーでファイルを選択するか、**新しいファイルパスを入力...** を使用して作成する新しいファイルを指定できます。
インライン変数リファクタリング
JavaScript および TypeScript の**インライン変数**リファクタリングは、変数のすべての出現箇所をその定数値で置き換えます。
このリファクタリングは、既存のコードを書き換える際に最も役立つことがよくあります。例えば、変数が宣言されてすぐに返される場合、インライン変数を使用して余分な宣言を削除し、値を直接返すことができます。
function add(a, b) {
const result = a + b;
return result;
}
result
に対して inline variable
を実行した後
function add(a, b) {
return a + b;
}
クリック可能なパラメーターヒント
パラメーターヒントをクリックすると、パラメーター宣言に素早くジャンプできるようになりました。インレイヒントをオンにした後、
"editor.inlayHints.enabled": "on",
"typescript.inlayHints.parameterNames.enabled": "all",
"javascript.inlayHints.parameterNames.enabled": "all"
Ctrl/Cmd
を押しながらパラメーター名をクリックすると、そのパラメーターの宣言にジャンプします。
今後のリリースでは、他の JavaScript および TypeScript のインレイヒントに対して**定義へ移動**を有効にする予定です。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシンまたはリモートトンネル、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- リモート - トンネル接続の信頼性の向上。
- 新しい**WSL に Docker をインストール**コマンド。
- 事前ビルドされた開発コンテナーのチュートリアルガイド。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
拡張機能への貢献
GitHub Copilot
チャットビューからワークスペースを作成
GitHub Copilot Chat 拡張機能の安定版ビルドで、自然言語の記述から /createWorkspace
を使用してワークスペースを作成できるようになりました。
さらに、以下の改善も行いました。
- 提案されたワークスペースが、チャットの応答でファイルツリーとしてレンダリングされるようになりました。
- ファイルをクリックして、エディターで読み取り専用のプレビューを開くことができます。
- Copilot の最初の提案が完全に正しくなかった場合でも、フォローアップの質問をすることで、Copilot が反復処理して改善するのを手助けできます。
インラインチャットで名前のないエディターでコーディングを開始
名前のないテキストエディターを開くと、⌘I (Windows, Linux Ctrl+I) を介してインラインチャットセッションを開始する方法のヒントが表示されるようになりました。スクリーンリーダーのユーザーは、このヒントを聞き、accessibility.verbosity.untitledHint
設定で無効にすることを選択できます。
クイックチャットの改善
数ヶ月前にクイックチャットを導入し、VS Code に合うエクスペリエンスを提供するために迅速に反復処理してきました。
今回のイテレーションのハイライト
- よりコンパクトな UX。
- フォーカスが失われてもクイックチャットが開いたままになるようになりました。
- ウィンドウのサイズを変更するためのサッシュと「スクロールして拡大」動作。
- **クイックチャットを開く**がコマンドセンターに移動しました。
全体として、UX はコマンドパレットのような他の「クイックオープン」エクスペリエンスに合わせてよりコンパクトになりました (パディングが全体的に少なくなり、ユーザーと Copilot のアイコンが小さくなり、ボタンがタイトルバーではなくインラインになりました)。
デフォルトでは、質問をすると、クイックチャットは画面スペースを最小限に抑えるために、その質問と回答に焦点を合わせるようにサイズ変更されます。これは、Copilot に素早く質問したい場合に役立つと考えています。会話の履歴は引き続き利用でき、上にスクロールして過去に戻ることができます。
この動的な高さのため、より多くのスペースまたは少ないスペースが必要な場合にウィンドウのサイズを変更する方法も提供したかったのです。ウィンドウサイズを調整するオプションは2つあります。1つ目は「スクロールして拡大」と呼ぶものです。クイックチャットウィンドウが短い回答で小さい場合でも、以前の長い回答を見たい場合、上にスクロールすると、クイックチャットは最大高さまで拡大します。
クイックチャットの高さは、次のいずれかの操作で最後の質問と回答のみを表示するようにリセットできます。
- クイックチャットを閉じて30秒待つ。
- 別の質問をするか、
/clear
を実行する (/clear
はチャット履歴を完全に消去することに注意してください)。 - 下部のサッシュをダブルクリックする。
サッシュといえば...クイックチャットの下部にもサッシュがあり、クイックチャットの高さを手動で調整するために使用できます。サッシュを使用すると、デフォルトの動的な動作をオプトアウトし、「この高さをリセットされるまでここに固定したい」と言っていることになります。
注: 動的な動作に戻したい場合は、サッシュをダブルクリックするか、チャットで
/clear
と入力してください (/clear
はチャット履歴を消去します)。
最後に、コマンドセンターの**クイックチャットを開く**オプションからクイックチャットを起動できます。
ターミナルの選択を説明
Copilot は、ターミナルのコンテキストメニューで**Copilot: これを説明する**を選択することで (プラットフォームに応じて右クリック
またはShift
+ 右クリック
)、現在のターミナルの選択を説明する機能が追加されました。
**Copilot: これを説明する**コマンドはチャットビューを表示し、Copilot が詳細な説明を返します。
設定の自然言語検索
設定エディターで、GitHub Copilot Chat を使用した自然言語検索が可能になりました。
自然言語検索の結果は現在、キーワード一致の結果の下に配置され、類似度スコアの降順で並べられていますが、来月には順序を修正し、目次グループごとに検索結果が配置されるようにする予定です。
自然言語検索は現在 Copilot の埋め込みに依存しています。したがって、自然言語検索の結果は、埋め込みが利用可能になる前、つまり GitHub Copilot Chat 拡張機能がアクティブ化されてから数秒間は、設定エディターに表示されません。
テーマ: Light Pink (vscode.dev でプレビュー)
Python
新しい Python フォーマットの記事
Python フォーマットに関する新しい専用トピックが追加されました。ここでは、autopep8 や Black などのデフォルトフォーマッターを設定し、さまざまな設定でカスタマイズする方法を学習できます。
環境変数を使用したターミナルアクティベーション
Python 拡張機能に、明示的なアクティベーションコマンドを実行せずに、ターミナルで選択した環境をアクティベートする新しいアクティベーションメカニズムが追加されました。今月、これを実験として展開し、デフォルトのエクスペリエンスとする予定です。この新しいアプローチでは、環境変数を使用してターミナルをアクティベートします。これはターミナル起動時に暗黙的に行われるため、特に conda 環境ではより高速になります。これを試すには、以下の**ユーザー**設定を追加してください: "python.experiments.optInto": ["pythonTerminalEnvVarActivation"]
。
この実験に関するご意見やご提案がございましたら、vscode-python issue #11039 までお気軽にお寄せください。
既存の .venv 環境を再作成または使用
.venv
フォルダーをすでに含むワークスペースで作業している場合、**Python: 環境の作成**コマンドが更新され、既存の環境を再作成または使用するオプションが追加されました。環境を再作成することを選択した場合、現在の .venv
は削除され、新しい .venv
という名前の環境を再作成できます。その後、**Python: 環境の作成**フローに従って、この新しい環境をカスタマイズし、好みのインタープリターを選択し、インストールする依存関係ファイルを指定できます。環境が削除できない場合 (たとえば、アクティブであるためなど)、手動で環境を削除するように求められます。
または、既存の環境を使用することを選択した場合、その環境がワークスペースに選択されます。
プレビュー機能
クイックアクセステキスト検索
ワークスペース検索結果をクイックアクセスメニューに表示する実験を行っています。これを試すには、**検索: クイックテキスト検索 (実験的)**を実行します。このコマンドは、検索クエリを受け入れるようにクイックオープンを設定します。いくつかのテキストを入力して、さまざまなワークスペースファイルからの一致を確認してください。
フォーカスされていないエディターとターミナルを薄暗く表示
現在フォーカスされていないエディターとターミナルを薄暗く表示する新しい実験的機能が追加されました。この機能の目的は、通常の点滅するカーソルと比較して、テキストがどこに行くのかをはるかに明確にすることです。
上の画像は、フォーカスされていない機能が有効になっており、不透明度が 0.5 に設定されているため、terminalService.ts
のエディターがフォーカスされていることがより明確になっています。
これは accessibility.dimUnfocused.enabled
を使用して有効にでき、薄暗くする量は accessibility.dimUnfocused.opacity
で制御されます。
この機能は現在エディターとターミナルのみをカバーしていますが、将来的にユーザーがどのビューを薄暗く表示するかを自分で構成できるように拡張する予定です。
拡張機能作成
バッチ範囲フォーマットのサポート
DocumentRangeFormattingEditProvider
API がバッチフォーマットをサポートするようになりました。これは、拡張機能がオプションで、複数の範囲を一度に渡して呼び出されることをサポートしていることをエディターに通知できることを意味します。これにより、フォーマットプロバイダーへの呼び出しの数が減り、パフォーマンスが向上します。
バッチフォーマットに参加するには、プロバイダーは新しいオプション関数である provideDocumentRangesFormattingEdits を実装する必要があります。
ワークスペースフォルダーにスコープされた EnvironmentVariableCollection
EnvironmentVariableCollection
API が、特定のワークスペースフォルダーにスコープされた新しいコレクションを作成できるようになり、これは「グローバル」コレクションに追加して適用されます。
// Get a scoped collection for the first workspace folder
const scoped = context.environmentVariableCollection.getScoped({
workspaceFolder: workspace.workspaceFolders[0]
});
scoped.replace('SCOPED', '1');
// Only terminals created in the first workspace folder will have SCOPED=1 set
Python 拡張機能は、このメカニズムを使用して、マルチルートワークスペースでターミナルが属するフォルダーに応じて異なる仮想環境を設定します。
EnvironmentVariableMutator が適用されるタイミングを構成する
EnvironmentVariableCollection
API に、シェル初期化スクリプトの後に実行されるシェル統合スクリプト内で変更を適用する機能が追加されました。これはシェル統合が有効になっている場合にのみ機能するため、変更はシェル作成時と、重要であればシェル統合内でも適用できます。
context.environmentVariableCollection.prepend('PATH', '/my/custom/path', {
applyAtProcessCreation: true,
applyAtShellIntegration: true
});
この機能は、問題の変数がシェル初期化スクリプトによって変更される可能性がある場合に役立ちます。
提案されたAPI
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新の@vscode/dtsを使用し、
npx @vscode/dts dev
を実行します。これにより、対応するd.ts
ファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
TestMessage とコントリビューションポイントの contextValue
ユーザーがメッセージに対してアクションを実行する際に表示される TestMessage
に contextValue
を指定できるようになりました。さらに、testing/message/context
と testing/message/content
という 2 つの新しいメニュー貢献ポイントが利用可能になりました。前者はテスト結果ツリービューのメッセージに表示され、後者はエディターのメッセージの上に表示されます。
contextValue
の詳細については、issue #190277 を参照してください。
ターミナルコンテキストメニューの寄与
拡張機能が独自のコンテキストメニューアクションをターミナルに統合できるように、2つの新しいメニューが提案されています。
terminal/context
- ターミナルコンテキストメニューterminal/title/context
- ターミナルタブのコンテキストメニュー
ターミナルコマンド実行をリッスン
長らく要望されていた、拡張機能がターミナルコマンド実行 API をリッスンする機能の初期提案がテスト用に利用可能になりました。この API はシェル統合を使用して実装されており、シェル統合が有効で機能しているターミナルでのみ発生します。
export interface TerminalExecutedCommand {
/**
* The {@link Terminal} the command was executed in.
*/
terminal: Terminal;
/**
* The full command line that was executed, including both the command and the arguments.
*/
commandLine: string | undefined;
/**
* The current working directory that was reported by the shell. This will be a {@link Uri}
* if the string reported by the shell can reliably be mapped to the connected machine.
*/
cwd: Uri | string | undefined;
/**
* The exit code reported by the shell.
*/
exitCode: number | undefined;
/**
* The output of the command when it has finished executing. This is the plain text shown in
* the terminal buffer and does not include raw escape sequences. Depending on the shell
* setup, this may include the command line as part of the output.
*/
output: string | undefined;
}
export namespace window {
/**
* An event that is emitted when a terminal with shell integration activated has completed
* executing a command.
*
* Note that this event will not fire if the executed command exits the shell, listen to
* {@link onDidCloseTerminal} to handle that case.
*/
export const onDidExecuteTerminalCommand: Event<TerminalExecutedCommand>;
}
この API の形式は最終的なものではありませんが、基本的な考え方は同じままです。
以下は、git push
コマンドの成功をリッスンし、拡張機能の更新をトリガーする使用例です。
const disposables = [];
disposables.push(
window.onDidExecuteTerminalCommand(command => {
if (command.commandLine.startsWith('git push') && command.exitCode === 0) {
refreshState();
}
})
);
function refreshState() {
/* ... */
}
ターミナル選択アクセス
ターミナル選択にアクセスするための単純な提案 API
export interface Terminal {
/**
* The selected text of the terminal or undefined if there is no selection.
*/
readonly selection: string | undefined;
}
この API は、最終決定される前に対応する変更イベントが含まれる可能性が高く、API 名は、それが単純な文字列であり、TextEditor.selection
のような Range
ベースではないことをより明確にするために変更される可能性があります。
ターミナルクイックフィックスの進捗
ターミナルクイックフィックスの提案は、ターミナルコマンドではなく、通常の VS Code コマンドをトリガーできるようになりました。この変更により、ターミナルコマンドのインターフェース名も変更する必要がありました。
export interface TerminalQuickFixProvider {
/**
* Provides terminal quick fixes
* @param commandMatchResult The command match result for which to provide quick fixes
* @param token A cancellation token indicating the result is no longer needed
* @return Terminal quick fix(es) if any
*/
provideTerminalQuickFixes(
commandMatchResult: TerminalCommandMatchResult,
token: CancellationToken
): ProviderResult<
SingleOrMany<TerminalQuickFixExecuteTerminalCommand | TerminalQuickFixOpener | Command>
>;
}
export class TerminalQuickFixExecuteTerminalCommand {
/**
* The terminal command to run
*/
terminalCommand: string;
constructor(terminalCommand: string);
}
エンジニアリング
Electron 25 の更新
今回のマイルストーンでは、Electron 25 の更新を安定版ユーザーにリリースします。この更新には、Chromium 114.0.5735.289
と Node.js 18.15.0
が含まれています。Insiders ビルドでセルフホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。
Node.js の更新ハイライト
デスクトップアプリケーションにバンドルされている Node.js と、サーバーにバンドルされているスタンドアロン実行可能ファイルが v16 -> v18 に更新されました。これはメジャーバージョンのバンプであるため、いくつかの動作と互換性の変更点があります。
-
OS からの DNS 結果の順序はソートされなくなりました。この変更をまだ採用していない可能性のある拡張機能を壊さないように、ローカルとサーバーの両方のシナリオで、拡張機能ホストに
--dns-result-order=ipv4first
を追加しました。今後は、拡張機能がsocket.connect
API の autoSelectFamily オプションを使用して、結果順序の変更に対応することをお勧めします。 -
公式 Node.js リポジトリからの Linux 用プレビルドバイナリは、glibc 2.28 以降に基づいた Linux ディストリビューションと互換性があります。これは、Ubuntu 18、CentOS 7、RHEL 7 などのサーバーからのサポートを打ち切ることを意味します。現在、Linux サーバー向けに Node.js のカスタムビルドを提供しており、glibc 2.17 以降の互換性を維持しています。このサポートは、CentOS 7 イメージで新しい Node.js バージョンをビルドできなくなった場合、今後の更新で変更されるため、この変更の影響を受けるサーバーユーザーは OS バージョンを更新することをお勧めします。
Chromium の更新ハイライト
- Mesa バージョンアップグレード後、Chromium のシェーダーコンパイルが壊れ、アプリケーション UI にアーティファクトが発生する可能性があります。この問題はissue #190437で追跡されており、Chromium のバグレポートへのリンクも含まれています。この問題は、
--verbose
で実行し、ログでERROR:shared_context_state.cc(81)] Skia shader compilation error
という行を探すことで特定できます。この問題の影響を受ける場合は、現在の回避策は~/.config/Code/GPUCache
にある GPU キャッシュを削除することです。 - Chromium が webgl の SwiftShader バックエンドを使用すると、Windows と Linux の両方で統合ターミナルのパフォーマンスが低下するようです。回避策として、
GL_RENDERER
文字列に基づいて影響を受けるユーザーを検出し、ターミナルの DOM バックエンドに切り替えます。詳細については、issue #190195 を参照してください。この問題には、Chromium のバグレポートへのリンクも含まれています。
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
- @gjsjohnmurray (ジョン・マレー)
- @IllusionMH (アンドリー・ディエイフ)
- @starball5 (スターボール)
- @ArturoDent (アルトゥーロ・デント)
- @rperez030 (ロベルト・ペレス)
プルリクエスト
vscode
への貢献者
- @0o001 (ムスタファ・アテシュ・ウズン): fix: 文字列のタイプミスをローカライズ PR #191046
- @alphacoma18 (アルファ・ロマー・コマ): Markdown ファイルでサポートされている markdown-lint 違反を修正 PR #190750
- @andyleejordan (アンディ・ジョーダン):
$IsWindows
のガード PR #190192 - @bandantonio (アントニオ): fix: マニフェストスキーマに不足していた pricing パラメーターを追加 PR #190293
- @ChaseKnowlden (チェイス・ノウルデン):ウィンドウタイトルにフォーカスされたビューを追加 PR #190216
- @davedash (デイブ・ダッシュ): Fish 統合: 位置指定パラメーターの開始を示すために文字列で -- を使用... PR #189994
- @demccormack (ダニエル・マコーマック): set -u 使用時の zsh と bash シェル統合の修正 PR #185425
- @floge07: fix: トンネルリモートアドレスにアンダースコアを有効な文字として許可 PR #190904
- @gjsjohnmurray (ジョン・マレー): 古い (廃止された) 拡張機能フォルダーの最近壊れたクリーンアップを修正 PR #189335
- @greenie (ジョー・グリーン): スクロールトップボタンの色の整合性を修正 PR #191034
- @hrkw00 (平川 亮介): standaloneLanguages.ts のコメントのタイプミスを修正 PR #189449
- @hsfzxjy (hsfzxjy)
- context key notebookEditorCursorAtLineBoundary を追加 PR #187679
- getMultiSelectedEditorContexts で常に空でない選択を尊重する PR #187704
- TestResultsViewContent.reveal の同時実行安全性を確保 PR #189756
- CommentThread を Ctrl+矢印でナビゲート可能にする PR #189913
- 設定リストのオーバーフローを修正 PR #190721
- Markdown プレビューでの入れ子リストのスタイルを修正 PR #190936
- @jeanp413 (ジャン・ピエール)
- Codespace に再接続したときに、構成されたデフォルトシェルが使用されない継続を修正 PR #181832
- Windows で空きポートクイックフィックスが機能しない問題を修正 PR #190900
- @kfrederix (カレル・フレデリックス): requestAnimationFrame() でリサイズオブザーバーのハンドラーをラップする PR #183325
- @kon72 (コン): すべての変更されていない領域を折りたたむ/表示するコマンドを追加 PR #190451
- @lucasMarioza: colorizeElement でスタイル要素が shadowDOM コンポーネントに追加されることを確認 PR #190505
- @neeleshb (ニーレッシュ・ボダス)
- 拡張機能の装飾画像に空の alt テキストを追加 PR #190607
- タイトルバーから誤ったロールを削除 PR #190608
- @rehmsen (オレ): Web と Electron のショートカットの一貫性を高める。 PR #191061
- @SevenOutman (ドーマ): コマンドパレットに「コール階層をピーク」と「型階層をピーク」アクションを追加 PR #189607
- @songlinn: fix: 作成イベントでの履歴表示の進む/戻るを防止 PR #184014
- @timar07 (ティモシー): fix: xterm quick fix appears in wrong spot #169162 PR #188693
- @Timmmm (ティム・ハット)
- dev コンテナーのノードバージョンを更新 PR #190346
- ターミナルリンク検出で row:column セパレーターとして . をサポート PR #190351
- @tisilent (YAYA 劉玉婷)
- fix:ターミナル検索ウィジェットの調整 PR #179398
- TerminalFind を表示するときに、選択した値で検索する PR #190466
- @troy351: listWidget: 余分なロジックを削除 PR #191054
- @weartist (ハンス)
- #185343 を修正 PR #185421
- 中央クリックでピン留めされたタブが閉じられないようにする設定を追加 (fix #115734) PR #188592
- Fix: #188760 PR #189259
- Fix: #188751 PR #189616
- 「隠れた行」テキストをクリックして展開する #186406 をサポート PR #189657
- ファイルに含める/除外するために Enter を押した直後に検索… PR #190473
- クイックオープンタイトルバーボタンのカスタムホバーを追加 PR #191416
- @zardoy (ヴィタリー): typescript 既存のファイルへの移動クイックピックのパスマッチングの改善 PR #181231
vscode-css-languageservice
への貢献者
- @bentorkington: 非推奨メソッドへの参照を修正 PR #359
vscode-hexeditor
への貢献
vscode-js-debug
への貢献者
- @sunilsurana (スニル・スラナ): .map ファイルの存在を確認することでソースマップの検索を高速化 PR #1780
vscode-pull-request-github
への貢献者
- @tobbbe (トッベ): タイトルからスラッシュをサニタイズ PR #5149
vscode-vsce
へのコントリビューション