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 内からローカルサーバーポートを転送します。
- Sticky Scroll の更新 - エディターに合わせて水平スクロール、スコープ内の最終行表示、折りたたみ 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 Pull Request コメントコントロールにも拡張されました。
これは、ターミナルとターミナルのアクセシブルバッファー間の移動にも機能します。
ターミナルのアクセシブルバッファーのキーバインディングを更新
以前は、ターミナルのアクセシブルバッファーは Shift+Tab で開かれていました。これは一部のシェルでの既存のキーボードショートカットと競合していました。そのため、他のアクセシブルビューと合わせるために、このキーバインディングを削除し、⌘↓ (Windows, Linux Ctrl+Down) および ⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2) を採用しました。
アクセシブルビューでのアクション
アクセシブルビューのアクションにより、スクリーンリーダーユーザーは特定の機能に対して次/前
に移動したり、アクセシビリティの詳細表示を無効にしたりできます。これらのアクションはビューの便利なツールバー内にあり、現在のコンテキストを維持できます。
アクセシブルビューでシンボルへ移動
アクセシビリティヘルプダイアログおよび一部のアクセシブルビューに、コンテンツ内のより迅速なナビゲーションを可能にする Go to Symbol (⇧⌘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
に変更
エディター
スティッキースクロール
今回のイテレーションでは、エディターの上部で利用できる Sticky Scroll UI (表示: Sticky Scroll の切り替え) にいくつかの改善が加えられました。
- 既定では、エディターの水平スクロールバーがスクロールされると、Sticky Scroll も横にスクロールするようになりました。この機能は
editor.stickyScroll.scrollWithEditor
を無効にすることでオフにできます。 Shift
キーを押しながら Sticky Scroll の行にホバーすると、スコープの最終行を表示できます。Shift
キーを押しながら行をクリックすると、エディターのカーソルがスコープの最終行に移動します。- 折りたたみアイコンが Sticky Scroll のガターに追加されました。これらのアイコンのレンダリングは、エディターのガターでの折りたたみアイコンのレンダリングを制御する設定
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行のターミナルで一般的なレンダリング呼び出しをテストしたところ、以前は約10ミリ秒、書き換え後は約2ミリ秒かかりました。テストマシンでターミナルサイズを300x100に拡大すると、レンダリングにかかる時間は以前は約25-35ミリ秒、書き換え後は約4-5ミリ秒を記録しました。
より良い選択範囲のレンダリング
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 Text Format に自動的に逆コンパイルし、逆コンパイルされたモジュールをステップ実行したり、ブレークポイントを設定したりできるようになりました。
テーマ: Codesong (vscode.dev でプレビュー)
ソースマップ読み込みの改善
このリリースでは、ソースマップの読み込み方法に多くの改善が加えられました。
tsc
コマンドラインでコンパイルされたアプリケーションなど、一般的なケースでのソースマップの読み込みが3〜5倍高速になりました。- Hot module reloading from the 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 のインレイヒントに対しても 定義へ移動 を有効にする予定です。
リモート開発
Remote Development 拡張機能を使用すると、Dev Container、SSH 経由のリモートマシンまたは Remote Tunnels、あるいは Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- リモート - トンネル接続の信頼性の向上。
- 新しい WSL に Docker をインストール コマンド。
- 事前構築済み Dev Container のチュートリアル。
新しい拡張機能の機能とバグ修正については、Remote Development のリリースノートで確認できます。
拡張機能への貢献
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 は、ターミナルのコンテキストメニュー (プラットフォームに応じて 右クリック
または Shift
+ 右クリック
) で Copilot: これを説明 を選択することにより、現在のターミナル選択を説明できるようになりました。
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 などのサーバーサポートを終了することを意味します。現在、glibc 2.17 以降の互換性を維持するために、Linux サーバー向けにカスタムビルドの Node.js を提供しています。このサポートは、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 バックエンドに切り替えます。追加の詳細は、Chromium のバグレポートへのリンクも含まれている issue #190195 で確認できます。
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (スターボール)
- @ArturoDent (ArturoDent)
- @rperez030 (Roberto Perez)
プルリクエスト
vscode
への貢献者
- @0o001 (Mustafa Ateş Uzun): 修正: 文字列の誤字をローカライズ PR #191046
- @alphacoma18 (Alpha Romer Coma): マークダウンファイルでのサポートされているマークダウンリンター違反を修正 PR #190750
- @andyleejordan (Andy Jordan):
$IsWindows
をガード PR #190192 - @bandantonio (Antonio): 修正: マニフェストスキーマに不足している価格設定パラメーターを追加 PR #190293
- @ChaseKnowlden (Chase Knowlden): ウィンドウタイトルにフォーカスされたビューを追加 PR #190216
- @davedash (Dave Dash): Fish 統合: 文字列で -- を使用して位置の始まりを示す… PR #189994
- @demccormack (Daniel McCormack): set -u を使用する際の zsh および bash シェル統合を修正 PR #185425
- @floge07: 修正: トンネルリモートアドレスでアンダースコアを有効な文字として許可 PR #190904
- @gjsjohnmurray (John Murray): 最近壊れていた廃止された (置き換えられた) 拡張機能フォルダーのクリーンアップを修正 PR #189335
- @greenie (Joe Green): スクロールトップボタンの色の整合性を修正 PR #191034
- @hrkw00 (平川 亮介): standaloneLanguages.ts のコメントの誤字を修正 PR #189449
- @hsfzxjy (hsfzxjy)
- コンテキストキー notebookEditorCursorAtLineBoundary を追加 PR #187679
- getMultiSelectedEditorContexts で常に空でない選択範囲を尊重 PR #187704
- TestResultsViewContent.reveal の同時実行安全性を確保 PR #189756
- CommentThread を Ctrl+矢印でナビゲート可能に PR #189913
- 設定リストのオーバーフローを修正 PR #190721
- Markdown プレビューのネストされたリストスタイルを修正 PR #190936
- @jeanp413 (Jean Pierre)
- Codespace に再接続したときに設定されたデフォルトシェルが継続されない問題を修正 PR #181832
- Windows でフリーポートのクイックフィックスが機能しない問題を修正 PR #190900
- @kfrederix (Karel Frederix): リサイズオブザーバーのハンドラーを requestAnimationFrame() でラップ PR #183325
- @kon72 (Kon): 変更されていないすべての領域を折りたたむ/表示するコマンドを追加 PR #190451
- @lucasMarioza: colorizeElement で shadowDOM コンポーネントにスタイル要素が追加されることを確認 PR #190505
- @neeleshb (Neelesh Bodas)
- 拡張機能の装飾画像に空の alt テキストを追加 PR #190607
- タイトルバーから不正確なロールを削除。 PR #190608
- @rehmsen (Ole): Web と Electron のショートカットの一貫性を向上。 PR #191061
- @SevenOutman (Doma): コマンドパレットに「 Peek Call Hierarchy 」と「 Peek Type Hierarchy 」アクションを追加 PR #189607
- @songlinn: 修正: 変換イベントでの履歴の prev/next 表示を防ぐ PR #184014
- @timar07 (Timothy): 修正: xterm クイックフィックスが間違った場所に表示される #169162 PR #188693
- @Timmmm (Tim Hutt)
- 開発コンテナの Node バージョンを更新 PR #190346
- ターミナルリンク検出器で「.」を行:列セパレーターとしてサポート PR #190351
- @tisilent (YAYA 劉玉婷)
- 修正: ターミナル検索ウィジェットの調整 PR #179398
- TerminalFind 表示時に選択された値で検索 PR #190466
- @troy351: listWidget: 重複するロジックを削除 PR #191054
- @weartist (Hans)
- #185343 を修正 PR #185421
- 中央クリック時に固定されたタブが閉じないようにする設定を追加 ( #115734 を修正) PR #188592
- 修正: #188760 PR #189259
- 修正: #188751 PR #189616
- 「非表示の行」テキストをクリックして展開する機能をサポート #186406 PR #189657
- ファイルの含める/除外で Enter キーが押された後すぐに検索… PR #190473
- クイックオープンのタイトルバーボタンにカスタムホバーを追加 PR #191416
- @zardoy (Vitaly): typescript 既存ファイルへの移動クイックピックのパスマッチングを改善 PR #181231
vscode-css-languageservice
への貢献者
- @bentorkington: 非推奨メソッドへの参照を修正 PR #359
vscode-hexeditor
への貢献
vscode-js-debug
への貢献者
- @sunilsurana (Sunil Surana): .map ファイルの存在を確認してソースマップのルックアップを高速化 PR #1780
vscode-pull-request-github
への貢献者
- @tobbbe (Tobbe): タイトルからスラッシュをサニタイズ PR #5149
vscode-vsce
へのコントリビューション