2024年11月 (バージョン 1.96)
更新 1.96.1: この更新では、これらの問題が解決され、GitHub Copilot 無料プランが有効になります。
更新 1.96.2: この更新では、これらの問題が解決されます。
更新 1.96.3: この更新では、これらの問題が解決されます。
更新 1.96.4: この更新では、これらの問題が解決されます。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code の 2024 年 11 月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くの更新が含まれています。主なハイライトの一部を以下に示します。
- GitHub Copilot 無料 - GitHub Copilot 無料プランで Copilot を無料で利用できます
- 上書きモード - エディターで上書きモードと挿入モードを切り替えます
- 貼り付け時にインポートを追加 - コードの貼り付け時に不足している TS/JS インポートを自動的に追加します
- テストカバレッジ - 特定のテストでカバーされているコードをすばやくフィルタリングします
- ビューの移動 - プライマリサイドバーとセカンダリサイドバーの間でビューを簡単に移動します
- ターミナルの合字 - ターミナルで合字を使用します
- 拡張機能の許可リスト - 組織でインストールできる拡張機能を構成します
- Copilot でデバッグ - `copilot-debug` ターミナルコマンドを使用してデバッグセッションを開始します
- チャットコンテキスト - シンボルとフォルダーをコンテキストチャットと編集として追加します
- チャットから Copilot Edits に移動 - Copilot Edits に切り替えて、チャットからのコード提案を適用します
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の更新にアクセスしてください。Insiders: 新しい機能をできるだけ早く試したいですか? 夜間ビルドのInsidersをダウンロードして、最新の更新が利用可能になり次第すぐに試すことができます。
GitHub Copilot
GitHub Copilot 無料プラン
GitHub Copilot の全く新しい無料枠を発表できることを嬉しく思います。GitHub Copilot 無料プランにサインアップするだけで、必要なのは GitHub アカウントだけです。毎月、 completions とチャットインタラクションの回数が与えられ、これは毎月リセットされます。
VS Code 内から直接サインアップできます。Copilot セットアップガイドの手順に従ってください。
Copilot 無料プランの詳細と条件について詳しく学ぶことができます。
Copilot Edits
前回のマイルストーンで、自然言語を使用して複数のファイルを一度にすばやく編集できるCopilot Edits (現在プレビュー版) を導入しました。それ以来、エクスペリエンスの反復を続けています。Copilot Edits は、コマンドセンターの Copilot メニューを開き、[Open Copilot Edits] を選択するか、をトリガーすることで試すことができます。
進行状況とエディターコントロール
Copilot Edits は、さまざまなファイルで複数の変更を行うことができます。編集がストリーミングされるにつれて、その進行状況をより明確に確認できるようになりました。また、エディターオーバーレイコントロールを使用すると、すべての変更を簡単に循環して受け入れたり破棄したりできます。
チャットセッションを Copilot Edits に移動
コードへの変更のアイデアを検討するためにチャットビューを使用することがあります。個々のコードブロックを適用する代わりに、チャットセッションを Copilot Edits に移動して、セッションからのすべてのコード提案を適用できるようになりました。
作業セットの提案ファイル
Copilot Edits では、作業セットは Copilot Edits が変更を提案できるファイルを決定します。関連するファイルを作業セットに追加するのに役立つように、Git リポジトリの場合、Copilot Edits は、既に追加したファイルに基づいて追加のファイルを提案できるようになりました。たとえば、Copilot Edits は、既に追加したファイルとよく一緒に変更されるファイルを提案します。
Copilot は、作業セットのファイルを追加ボタンの横に提案ファイルを表示します。ファイルを追加を選択し、関連ファイルを選択して、提案ファイルのリストから選択することもできます。
再起動後に編集セッションを復元
編集セッションは、VS Code の再起動後に完全に復元されるようになりました。これには、作業セット、承認状態、および過去のすべての編集ステップのファイル状態が含まれます。
エクスプローラー、検索、エディターから作業セットに追加
検索ビューの検索結果やエクスプローラービューのファイルに対して、新しいCopilot Edits にファイルを追加コンテキストメニューアクションを使用して、Copilot Edits 作業セットにファイルを追加できます。さらに、エディターコンテキストメニューからテキスト選択を Copilot Edits にアタッチすることもできます。
Copilot でデバッグ
デバッグの構成は、特に新しいプロジェクトや言語を扱っている場合に難しい場合があります。このマイルストーンでは、VS Code を使用してプログラムをデバッグするのに役立つ新しい`copilot-debug` ターミナルコマンドを導入します。通常実行するコマンドの前に`copilot-debug`を付けることで使用できます。たとえば、通常`python foo.py`コマンドを使用してプログラムを実行する場合、`copilot-debug python foo.py`を実行してデバッグセッションを開始できます。
プログラムが終了すると、プログラムを再実行したり、プログラムのデバッグに使用された VS Code の起動構成を表示、保存、または再生成したりするオプションが表示されます。
テーマ: Codesong (vscode.devでプレビュー)
タスクのサポート
Copilot のデバッグ機能 ( `copilot-debug` および `/startDebugging` インテントを含む) は、デバッグ前にコンパイルステップが必要なコードに対して、必要に応じて `preLaunchTask` を生成するようになりました。これは、Rust や C++ などのコンパイル済み言語でよく見られます。
コンテキストを追加
Copilot Chat と Copilot Edits にシンボルとフォルダーをコンテキストとして含める新しい方法を追加し、ワークフロー中に関連情報を参照しやすくしました。
シンボル
シンボルは、アウトラインビューまたはパンくずリストからチャットビューにドラッグアンドドロップすることで、Copilot Chat と Copilot Edits に簡単にSを追加できるようになりました。
また、チャット入力にシンボル補完を導入しました。`#` の後にシンボル名を入力すると、最近作業したファイルからのシンボルの候補が表示されます。
プロジェクト全体でシンボルを参照するには、`#sym` を使用してグローバルシンボルピッカーを開くことができます。
フォルダー
フォルダーは、エクスプローラー、パンくずリスト、またはその他のビューから Copilot Chat にドラッグすることで、コンテキストとして追加できるようになりました。
フォルダーを Copilot Edits にドラッグすると、そのフォルダー内のすべてのファイルが作業セットに含まれます。
Copilot 使用状況グラフ
VS Code 拡張機能は、VS Code API を使用してCopilot の機能の上に構築できます。Runtime Status ビューで拡張機能の Copilot 使用状況のグラフを表示できるようになりました。このグラフは、過去 30 日間に拡張機能によって行われたチャットリクエストの数を示します。
コミットメッセージ生成のカスタム手順
Copilot は、変更に基づいてコミットメッセージを生成するのに役立ちます。このマイルストーンでは、コミットメッセージを生成する際のカスタム手順のサポートを追加しました。たとえば、コミットメッセージが特定の形式に従う必要がある場合、これをカスタム手順で記述できます。
github.copilot.chat.commitMessageGeneration.instructions 設定を使用して、カスタム手順を指定するか、カスタム手順を含むワークスペースのファイルを指定できます。これらの手順は、コミットメッセージの生成に使用されるプロンプトに追加されます。カスタム手順の使用方法に関する詳細情報を取得します。
インラインチャット
このマイルストーンでは、インラインチャットのユーザーエクスペリエンスをさらに改善しました。進行状況のレポートをより控えめなものにし、変更のストリーミング中に波線が非表示になり、検出されたコマンドがよりきれいにレンダリングされるようになりました。
また、擬似コードの検出を改善し続け、行がほとんど自然言語である場合にインラインチャットを続行できるヒントを表示するようになりました。この機能により、エディターに擬似コードを入力でき、それがインラインチャットのプロンプトとして使用されます。⌘I (Windows、Linux Ctrl+I) を押してこのフローをトリガーすることもできます。
さらに、空の行にインラインチャットのヒントを表示する新しい実験的な設定があります。この設定は、inlineChat.lineEmptyHint を介して有効にできます。デフォルトでは、この設定は無効になっています。
ターミナルチャット
ターミナルインラインチャットは、エディターインラインチャットに見た目と雰囲気を近づけるように刷新されました。
その他、注目すべき改善点をいくつか紹介します。
- ウィジェットのレイアウトと配置が改善され、全体的に動作が向上しました。
- モデルピッカーがあります。
- 下部のボタンがより一貫性を持つようになりました。
@workspace
のパフォーマンス向上
現在開いているワークスペースについて Copilot に質問するために`@workspace`を使用する場合、まずワークスペースを Copilot にコンテキストとして渡せる関連コードスニペットのセットに絞り込む必要があります。ワークスペースが GitHub リポジトリによってバックアップされている場合、GitHub コード検索を使用してこれらの関連スニペットをすばやく見つけることができます。ただし、コード検索インデックスはリポジトリのメインブランチを追跡するため、ローカルの変更やブランチ上ではそれに頼ることはできませんでした。
このマイルストーンでは、GitHub 検索の高速化の恩恵をブランチやプルリクエストにもたらす作業を行いました。これは、リポジトリのメインブランチに基づくリモートインデックスと、ローカルで変更されたファイルの検索の両方を行うことを意味します。次に、これらの結果を結合し、Copilot に高速で最新のスニペットのセットを提供します。GitHub コード検索とその有効化方法について詳しく読むことができます。
アクセシビリティ
コードアクションのアクセシビリティ信号
一部のコードアクションは完了に時間がかかる場合があります。たとえば、外部サービスを呼び出して画像の代替テキストを生成するクイックフィックスなどです。それらがいつトリガーされたか、またはいつ完全に適用されたかは明らかではない場合があります。そのため、コードアクションがトリガーされたか適用されたかを示すアクセシビリティ信号を追加しました。
これらの信号は、accessibility.signals.codeActionTriggered および accessibility.signals.codeActionApplied 設定で有効にできます。
REPL での自動フォーカス管理
REPL での作業時にアクセシビリティを向上させる新しい設定を導入しました。accessibility.replEditor.autoFocusReplExecution を使用すると、コードが実行されるたびにフォーカスを変更しない (none
)、入力ボックスに移動する (input
)、または最後に実行されたセルに移動する (lastExecution
) かどうかを指定できるようになりました。デフォルトでは、フォーカスは入力ボックスに移動します。
ワークベンチ
拡張機能の検索結果の改善
拡張機能ビューでフリーフォームテキストを使用して拡張機能を検索すると、インストール済みの拡張機能が検索結果の上部に表示されるようになりました。これにより、マーケットプレイスを検索する際に、インストール済みの拡張機能を見つけて管理しやすくなります。
拡張機能ビューから拡張機能をダウンロード
拡張機能ビューの拡張機能のコンテキストメニューにあるダウンロードアクションを使用して、VS Code から直接拡張機能をダウンロードできるようになりました。これは、拡張機能をインストールせずにダウンロードしたい場合に便利です。
拡張機能のディスク容量
拡張機能エディターで、ディスク上の拡張機能のメモリ使用量を確認できるようになりました。これは、拡張機能が使用しているディスク容量を理解するのに役立ちます。
エクスプローラーでの検索機能の改善
9 月のリリースでは、以前は利用できなかったプロジェクト全体でファイルをエクスプローラーで検索する機能が導入されました。ただし、この更新により、一時的にハイライトモードが削除され、特定のアクションが制限されました。
このリリースでは、ハイライトモードが復活しました。この機能により、ワークスペース全体でファイルやフォルダーを簡単に見つけられ、一致する結果がハイライト表示されて視認性が向上します。さらに、折りたたまれたフォルダーに新しい視覚的なインジケーターが導入され、一致がその中に隠されているかどうかが表示されます。
フィルター切り替えは引き続き利用可能で、一致しない項目を非表示にして、クエリに一致するファイルとフォルダーのみに集中できます。また、以前のリリースで無効にする必要があったすべてのコンテキストメニューアクションも再有効化しました。
検索コントロールを使用する際のユーザーエクスペリエンスも改善されました。ファイルエクスプローラーの最上部にスクロールすると、上部に余分なスペースが作成され、コントロールが検索結果を妨げないようにします。
プライマリサイドバーとセカンダリサイドバーの間でビューを移動
ドラッグアンドドロップまたはビューの移動コマンドを使用して、ビューコンテナーを別の場所に移動できました。ビューコンテナーの移動先コンテキストメニューアクションを直接使用して、プライマリサイドバー、セカンダリサイドバー、またはパネル領域の間で移動できるようになりました。
タイトル領域のナビゲーションコントロールを非表示
タイトル領域をできるだけきれいに保ちたい人もいます。タイトル領域の戻る/進むボタンを非表示にできる新しい設定workbench.navigationControl.enabledを追加しました。
この設定は、タイトル領域を右クリックして、[ナビゲーションコントロール] を選択することでもアクセスできます。
エディター
貼り付けとドラッグアンドドロップの動作を構成する
ファイルをテキストエディターにドラッグアンドドロップまたはコピーアンドペーストすると、VS Code はそのファイルに挿入する複数の方法を提供します。デフォルトでは、VS Code はファイルのワークスペース相対パスを挿入しようとします。ドロップ/ペーストコントロールを使用して、リソースの挿入方法を切り替えることができるようになりました。拡張機能は、Markdown のようにカスタマイズされた編集を提供することもでき、Markdown リンクを挿入する編集を提供します。
新しいeditor.pasteAs.preferences および editor.dropIntoEditor.preferences 設定を使用すると、デフォルトで使用する編集の種類を優先的に指定できるようになりました。たとえば、コピー/ペーストで常に貼り付けられたファイルの絶対パスを挿入したい場合は、次のように設定するだけです。
"editor.pasteAs.preferences": [
"uri.path.absolute"
]
これらの設定は、編集の種類の順序付けされたリストです。優先される種類の最初の一致する編集がデフォルトで適用されます。デフォルトの編集が適用された後でも、ドロップ/ペーストコントロールを使用して別の種類の編集に変更できます。
これらの新しい設定は、JavaScript と TypeScript の新しいコピーと貼り付けとインポートのサポートとうまく連携します。この機能は、JavaScript または TypeScript ファイル間でコードをコピーアンドペーストするときに、インポートを自動的に追加します。ワークフローを妨げないようにするため、デフォルトでは、貼り付けはプレーンテキストを挿入するだけで、`paste with imports` は貼り付けコントロールのオプションとして提供されるようにしました。ただし、VS Code で常にインポートを使用して貼り付けようとしたい場合は、次のように設定するだけです。
"editor.pasteAs.preferences": [
"text.updateImports"
]
これで、VS Code は可能な場合は常にインポートを使用して貼り付けようとし、インポートを使用して貼り付ける編集が利用できない場合はプレーンテキストの貼り付けに戻ります。現時点では、これは JavaScript と TypeScript でのみ機能しますが、時間とともに他の言語もサポートを採用することを期待しています。
最後に、`editor.action.pasteAs` キーバインディングを設定する際に、優先する貼り付けスタイルを指定できるようになりました。以下のキーバインディングは常に貼り付けとインポートの更新を試みます。
{
"key": "ctrl+shift+v",
"command": "editor.action.pasteAs",
"args": {
"preferences": ["text.updateImports"]
}
}
エディターの検索履歴を永続化
検索コントロールは、セッション間で検索履歴を永続化し、VS Code の再起動後も復元できるようになりました。検索履歴はワークスペースごとに保存され、editor.find.history 設定で無効にできます。
上書きモード
Vim キーマップをインストールしない限り、VS Code がエディターでのテキストの上書きをサポートしていなかったことをご存知でしたか?多くのご要望により、入力時にテキストを挿入するのではなく、エディターでテキストを上書きする上書きモードが追加されました。これに便利なシナリオは、Markdown テーブルを編集する際に、テーブルのセルの境界をきれいに揃えたい場合です。
このモードは、コマンド View: Toggle Overtype/Insert Mode またはキーボードの Insert キーを使用して切り替えることができます。上書きモードの場合、ステータスバーに OVR
インジケーターが表示されます。
上書きモード中のカーソルのスタイルは、editor.overtypeCursorStyle 設定を使用して変更できます。さらに、editor.overtypeOnPaste 設定があり、上書きモードでの貼り付けが上書きか挿入かを決定します。デフォルトの動作は、貼り付けられたテキストを挿入することです。
ソース管理
Git blame 情報 (実験的)
このマイルストーンでは、エディターの装飾とステータスバー項目を使用して blame 情報を表示する実験的なサポートが追加されました。git.blame.editorDecoration.enabled および git.blame.statusBarItem.enabled 設定を使用してこの機能を有効にできます。blame 情報にマウスオーバーすると、コミットの詳細が表示されます。
エディターとステータスバーに表示されるメッセージの形式は、git.blame.editorDecoration.template と git.blame.statusBarItem.template の設定でカスタマイズできます。最も一般的な情報には変数を使用できます。たとえば、次のテンプレートは、コミットの件名、作成者の名前、および作成者の日付を現在からの相対時間で表示します。
{
"git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}
エディターの装飾の色を調整したい場合は、git.blame.editorDecorationForeground
テーマカラーを使用してください。
この実験的な機能を試して、ご意見をお聞かせください。
ソース管理グラフのタイトルアクション
ユーザーからのフィードバックに基づいて、プルアクションとプッシュアクションをソース管理グラフビューのタイトルバーに戻しました。これらのアクションは、現在の履歴項目参照がソース管理グラフに表示されている場合に有効になります。
これらのアクション、またはソース管理グラフビューのタイトルバーのその他のアクションを使用しない場合は、タイトルバーを右クリックして非表示にすることができます。
ノートブック
セル間の選択ハイライト
選択ハイライトがノートブック内でサポートされるようになり、複数のセルにわたるテキスト選択に基づいたハイライトが可能になりました。これは、既存の設定 editor.selectionHighlight で制御されます。
複数カーソル: 検索一致のすべての出現箇所を選択
ノートブックは、検索一致のすべての出現箇所を選択のキーボードショートカットをサポートするようになりました。これは、コマンド ID notebook.selectAllFindMatches
で見つけることができ、デフォルトでキーストローク ⇧⌘L (Windows、Linux Ctrl+Shift+L) で使用できます。
Markdown のセクションでセルを実行
ノートブックでは、Markdown セルのセルツールバーにセクションでセルを実行アクションが公開されるようになりました。Markdown セルにヘッダーがある場合、セクションとその子セクション内のすべてのセルが実行されます。ヘッダーがない場合、可能であれば、周囲のセクションのすべてのセルが実行されます。
セル実行時間の詳細表示
セルステータスバー内の実行時間情報に、詳細表示を増やすオプションが追加されました。これは、notebook.cellExecutionTimeVerbosity 設定でオンにすることができ、実行時間だけでなく実行タイムスタンプも表示できます。
ターミナル
合字のサポート
GPU アクセラレーションを使用しているかどうかに関係なく、合字がターミナルでサポートされるようになりました。この機能は、terminal.integrated.fontLigatures の設定で有効にできます。
この機能を使用するには、合字をサポートするフォントも使用していることを確認してください terminal.integrated.fontFamily。
ターミナルタブをカスタマイズするための新しい変数
ターミナルタブに表示されるテキストは、変数のコレクションの使用を可能にする`terminal.integrated.tabs.title`および`terminal.integrated.tabs.description`設定によって決定されます。以下の新しい変数をサポートするようになりました。
-
${shellType}
- ターミナルで使用されているシェルの検出されたタイプ。これはデフォルト値に似ていますが、たとえば git コマンドを実行しても `git` には変更されません。 -
${shellCommand}
- ターミナルで実行されているコマンド。これはシェル統合が必要です。 -
${shellPromptInput}
- ターミナルで実行されているコマンド、または現在検出されているプロンプト入力。これはシェル統合が必要です。
最近のコマンド実行で履歴ソースファイルを表示
最近のコマンド実行シェル統合機能には、関連する場合は履歴ファイルを含む、コマンドのソースの全サイズのヘッダーと、それを開く便利なボタンが含まれるようになりました。
このコマンドのデフォルトのキーバインディングは Ctrl+Alt+R
です。
新しいサポートされるリンク形式
`/path/to/file.ext,
テスト
帰属カバレッジ
このマイルストーンでは、拡張機能がテストごとにカバレッジを提供できるようにする API を完成させました。これにより、特定のテストがどのコードを実行したかを正確に確認できます。帰属カバレッジが利用可能な場合、フィルターボタンはテストカバレッジビュー、エディターアクション、テストカバレッジツールバー (テスト: テストカバレッジツールバーコマンドで切り替える) で利用できます。または、単にテスト: テストでカバレッジをフィルターコマンドを使用するだけでも利用できます。
テーマ: Codesong (vscode.devでプレビュー)
インライン失敗メッセージの再設計
テスト失敗メッセージを、より目を引くように、しかし邪魔にならないように再設計しました。これは、SCM や Copilot Edits からの diff など、忙しいシナリオで特に役立ちます。失敗メッセージを選択すると、引き続きピークコントロールが開き、失敗の完全な詳細が表示されます。
連続実行 UI の改善
以前は、テストエクスプローラービューの「目」アイコンで切り替え可能な連続テスト実行のグローバル状態は、デフォルトの実行プロファイルセットで連続実行をオンまたはオフに切り替えていました。
連続実行 UI を再設計し、プロファイルごとに個別に連続実行をオンまたはオフに切り替えるドロップダウンメニューを含めました。インジケーターを選択すると、最後に使用した実行プロファイルのセットがオンまたはオフに切り替わります。
言語
TypeScript 5.7
JavaScript および TypeScript のサポートは、TypeScript 5.7 を使用するようになりました。この主要なアップデートには、多くの言語とツールの改善、重要なバグ修正、およびパフォーマンス最適化が含まれています。
TypeScript 5.7 のリリースに関するすべての情報は、TypeScript ブログで読むことができます。以下のセクションでは、いくつかのツールのハイライトも紹介しています。
JavaScript と TypeScript のインポート付き貼り付け
ファイル間でコードを移動した後にインポートを追加するのにうんざりしていませんか?TypeScript 5.7 以降のインポート付き貼り付け機能を試してください。JavaScript または TypeScript 間でコードをコピーして貼り付けるたびに、VS Code は貼り付けられたコードのインポートを追加できるようになりました。
インポートが追加されるだけでなく、貼り付けられたコードで使用されていたローカル変数に新しい export が追加されていることに注目してください!
この機能は時間を大幅に節約できると思いますが、既存のワークフローを妨げることにも配慮しています。そのため、デフォルトでは、コピー&ペーストは常に貼り付けられたテキストのみを挿入するようにしています。`paste with imports` の編集が利用可能な場合、貼り付けコントロールが表示され、`paste with imports` の編集を選択できます。
常にインポート付きで貼り付けることを好む場合は、新しい`editor.pasteAs.preferences` 設定を使用できます。
"editor.pasteAs.preferences": [
"text.updateImports"
]
編集が利用可能な場合、常にインポート付きで貼り付けを試みます。
利用可能な場合、インポート付きで貼り付けするキーバインディングを設定することもできます。
{
"key": "ctrl+shift+v",
"command": "editor.action.pasteAs",
"args": {
"preferences": ["text.updateImports"]
}
}
ご希望であれば、逆にインポート付き貼り付けをデフォルトにし、プレーンテキストとして貼り付けるキーバインディングを追加することもできます。
"editor.pasteAs.preferences": [
"text.updateImports"
]
{
"key": "ctrl+shift+v",
"command": "editor.action.pasteAs",
"args": {
"preferences": ["text.plain"]
}
}
最後に、`paste with imports` を完全に無効にしたい場合は、typescript.updateImportsOnPaste.enabled と javascript.updateImportsOnPaste.enabled を使用できます。
リモート開発
リモート開発拡張機能を使用すると、Dev Container、SSH またはリモートトンネルを介したリモートマシン、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
remote-ssh
Copilot チャット参加者- 強化されたセッションログ
これらの機能の詳細については、リモート開発リリースノートをご覧ください。
エンタープライズサポート
許可される拡張機能を構成する
extensions.allowed 設定を使用して、VS Code にインストールできる拡張機能を制御できるようになりました。この設定を使用すると、発行元、特定の拡張機能、およびバージョンによって許可またはブロックする拡張機能を指定できます。拡張機能またはバージョンがブロックされている場合、すでにインストールされていれば無効になります。次の種類の拡張機能セレクターを指定できます。
- 発行元からのすべての拡張機能を許可またはブロックする
- 特定の拡張機能を許可またはブロックする
- 特定の拡張機能のバージョンを許可する
- 特定の拡張機能のバージョンとプラットフォームを許可する
- 拡張機能の安定バージョンのみを許可する
- 発行元からの安定拡張機能バージョンのみを許可する
次の JSON スニペットは、さまざまな設定値の例を示しています。
"extensions.allowed": {
// Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
"microsoft": true,
// Allow all extensions from the 'github' publisher
"github": true,
// Allow prettier extension
"esbenp.prettier-vscode": true,
// Do not allow docker extension
"ms-azuretools.vscode-docker": false,
// Allow only version 3.0.0 of the eslint extension
"dbaeumer.vscode-eslint": ["3.0.0"],
// Allow multiple versions of the figma extension
"figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],
// Allow version 5.0.0 of the rust extension on Windows and macOS
"rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],
// Allow only stable versions of the GitHub Pull Requests extension
"github.vscode-pull-request-github": "stable",
// Allow only stable versions from redhat publisher
"redhat": "stable"
}
発行元 ID で発行元を指定します。キーにピリオド (.
) がない場合、それは発行元 ID と見なされます。キーにピリオドがある場合、それは拡張機能 ID と見なされます。現在、ワイルドカードの使用はサポートされていません。
異なる発行元 ID を持つ可能性があるにもかかわらず、Microsoft が発行したすべての拡張機能を参照するために、発行元 ID として `microsoft` を使用できます。
バージョン範囲はサポートされていません。拡張機能の複数のバージョンを許可する場合は、各バージョンを個別に指定する必要があります。プラットフォームによってバージョンをさらに制限するには、`@` 記号を使用してプラットフォームを指定します。たとえば、`"rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]`。詳細については、エンタープライズドキュメントを参照してください。
管理者は、Windows のグループポリシーを介してこの設定を構成することもできます。詳細については、エンタープライズドキュメントの「Windows のグループポリシー」セクションを参照してください。
VS Code をプリインストールされた拡張機能でセットアップする
VS Code を、一連のプリインストールされた拡張機能 (ブートストラップ) でセットアップできます。この機能は、VS Code がプリインストールされ、特定の拡張機能がユーザーにすぐに利用できるマシンイメージ、仮想マシン、またはクラウドワークステーションを準備する場合に役立ちます。
注: 拡張機能のプリインストールは現在、Windows でのみサポートされています。
拡張機能をブートストラップするには、次の手順を実行します。
-
VS Code インストールディレクトリに `bootstrap\extensions` フォルダーを作成します。
-
プリインストールしたい拡張機能のVSIX ファイルをダウンロードし、`bootstrap\extensions` フォルダーに配置します。
-
ユーザーがVS Codeを初めて起動すると、`bootstrap\extensions`フォルダー内のすべての拡張機能がバックグラウンドでサイレントインストールされます。
ユーザーはプリインストールされた拡張機能をアンインストールできます。拡張機能をアンインストールした後に VS Code を再起動しても、拡張機能は再インストールされません。
拡張機能への貢献
Python
Python Environments 拡張機能
このリリースでは、マーケットプレイスでプレビュー版が利用可能になった Python Environments 拡張機能を導入します。
この拡張機能は、Python 環境管理を簡素化し、環境の作成、削除、管理のための UI と、パッケージのインストールおよびアンインストール用のパッケージ管理を提供します。
さまざまな API を介して好みの環境マネージャーとシームレスに統合するように設計されており、デフォルトでグローバル Python インタープリター、venv、および Conda をサポートしています。開発者は、お気に入りの Python 環境マネージャーのサポートを追加し、拡張機能 UI と統合して、機能とユーザーエクスペリエンスを向上させるための拡張機能を構築できます。
Python Environments はマーケットプレイスからダウンロードでき、Python 拡張機能のプレリリースバージョンで使用できます。
Python テストの機能強化
- pytest の `--rootdir` 引数は、ワークスペース内の `python.testing.cwd` 設定の有無に基づいて動的に調整されるようになりました。
- テストデバッグセッションを再起動すると、指定されたテストのみが再実行されるようになりました。
- カバレッジサポートが `NoSource` 例外を処理するように更新されました。
- `pytest-describe` プラグインは、UI でのテスト検出と実行をサポートしています。
- テスト書き換えは、プロセス間通信に UDS の代わりに FIFO を利用するようになり、ユーザーは `pytest_socket` のような pytest プラグインを自身のテスト設計で活用できるようになりました。
- 書き換えがデフォルトステータスに近づいています: このリリースでは、テスト書き換えの最後の既知の問題が解決され、さらなる問題が発生しない限り、書き換え実験はオフになり、2025 年初めに書き換えがデフォルトに設定されます。
Python REPL の機能強化
- ネイティブ REPL へのスマート送信後、エディターにフォーカスを残す
- ネイティブ REPL のリロード後の処理を改善
- VS Code ターミナルで Python 3.13 のインデントエラーの問題を修正
Pylance「フル」言語サーバーモード
`python.analysis.languageServerMode` 設定は、`full` モードもサポートするようになり、Pylance の機能の完全な範囲と最も包括的な IntelliSense エクスペリエンスを活用できるようになりました。ただし、これはパフォーマンスの低下を伴うことに注意してください。特に大規模なコードベースでは、Pylance がリソースを大量に消費する可能性があるためです。
`python.analysis.languageServerMode` 設定は、それが `light`、`default`、または `full` のいずれに設定されているかに応じて、以下の設定のデフォルト値を変更するようになりました。
設定 | light | default | full |
---|---|---|---|
python.analysis.exclude | ["**"] | [] | [] |
python.analysis.useLibraryCodeForTypes | false | true | true |
python.analysis.enablePytestSupport | false | true | true |
python.analysis.indexing | false | true | true |
python.analysis.autoImportCompletions | false | false | true |
python.analysis.showOnlyDirectDependenciesInAutoImport | false | false | true |
python.analysis.packageIndexDepths | [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] |
[ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] |
{ "name": "", "depth": 4, "includeAllSymbols": true } |
python.analysis.regenerateStdLibIndices | false | false | true |
python.analysis.userFileIndexingLimit | 2000 | 2000 | -1 |
python.analysis.includeAliasesFromUserFiles | false | false | true |
python.analysis.functionReturnTypes | false | false | true |
python.analysis.pytestParameters | false | false | true |
python.analysis.supportRestructuredText | false | false | true |
python.analysis.supportDocstringTemplate | false | false | true |
TypeScript
TypeScript の展開可能なホバー (実験的)
このマイルストーンでは、TS サーバーから展開/縮小された情報を表示できるようになりました。拡張機能は、Expandable Hover API を使用して、エディターのホバーに `+` と `-` マーカーを表示し、より多くの情報またはより少ない情報を表示します。
実験的な設定は、typescript.experimental.expandableHover を使用して有効にできます。この設定を機能させるには、TypeScript バージョン 5.8 以降を使用する必要があります。`TypeScript: Select TypeScript Version...` コマンドを使用して TypeScript バージョンを変更できます。
Microsoft アカウントが MSAL (Windows で WAM をサポート) を使用するようになりました
Microsoft 認証の強力なセキュリティベースラインを確保するため、Microsoft アカウント拡張機能にMicrosoft 認証ライブラリを採用しました。
この作業の際立った機能の 1 つは、WAM (Web Account Manager...別名Broker) 統合です。簡単に言えば、Microsoft 認証フローのためにブラウザに移動する代わりに、OS に直接話しかけるようになりました。これは Microsoft 認証セッションを取得するための推奨される方法です。さらに、OS にすでにログインしているアカウントを活用できるため、高速です。
この新しいフローで問題が発生した場合はお知らせください。重大な問題が発生し、以前の Microsoft 認証動作に戻す必要がある場合は、microsoft-authentication.implementation (classic
に設定し、VS Code を再起動する) で行うことができますが、この設定は長くは存在しないことに注意してください。したがって、MSAL フローで問題が発生している場合は、イシューをオープンしてください。
拡張機能の作成
@vscode/chat-extension-utils
チャットと言語モデル拡張機能 API を数か月間利用できるようにして、拡張機能の作成者が GitHub Copilot と統合できるようにしました。しかし、LLM と連携し、高品質のチャット拡張機能を構築することは本質的に複雑であり、特にツール呼び出しを使用したい場合はなおさらです。
チャット参加者を可能な限り簡単に立ち上げて実行できるようにすることを目的とした npm パッケージ、@vscode/chat-extension-utils
を公開しました。これにより、チャット参加者がわずか数行のコードで実装できるように、自分でやらなければならないいくつかのことを引き継ぎます。このパッケージには、@vscode/prompt-tsx で使用するための便利な高品質の要素のコレクションも含まれています。
完全なドキュメントは`chat-extension-utils` リポジトリで確認でき、サンプルチャット拡張機能で実際に動作を確認できます。新しいLanguageModelTool API ドキュメントでもその使用方法について説明しています。
帰属カバレッジ API
テストカバレッジ API を使用すると、拡張機能はテストごとにカバレッジ情報を提供できるようになりました。この API を実装するには、`FileCoverage` の `includesTests?: TestItem[]` プロパティに、そのファイルでコードを実行したテストを示す値を設定し、`TestRunProfile.loadDetailedCoverageForTest` を実装してステートメントと宣言のカバレッジを提供します。
ユーザーにとってどのように表示されるかの例については、上記の帰属カバレッジセクションを参照してください。
JavaScript デバッグターミナルへの貢献
JavaScript デバッガーには、他の拡張機能が JavaScript デバッグターミナルの作成に参加するメカニズムが追加されました。これにより、Node.js 以外のフレームワークやランタイムでも、同じおなじみの場所でデバッグが可能になります。詳細については、JavaScript デバッガーのドキュメントを参照してください。
Node.js `fetch` API のプロキシサポート
グローバルな `fetch` 関数は、プロキシサポートが有効になりました (http.fetchAdditionalSupport)。これは、すでにプロキシサポートがあった `https` モジュールと似ています。
プレビュー機能
チャットコンテキストをアタッチするためにコードを貼り付ける
以前は、ファイルを Copilot Chat のコンテキストとしてすでにアタッチできました。コンテキストをより細かく制御するために、コードフラグメントを貼り付けてチャットのコンテキストとしてアタッチできるようになりました。これにより、必要なファイル情報と対応する行番号が追加されます。現在のワークスペースのファイルからのコードのみを貼り付けることができます。
これを試すには、いくつかのコードをコピーして、インラインチャット、クイックチャット、またはチャットビューに貼り付けます。表示される貼り付けコントロールを選択し、[貼り付けたコードのアタッチメント] を選択します。または、editor.pasteAs.preferences 設定を設定することもできます。
"editor.pasteAs.preferences": [
"chat.attach.text"
]
より多くのシェルに対するターミナルの補完機能
以前のイテレーションでは、`pwsh` のターミナル補完機能に対する実験的なサポートを追加しました。このリリースでは、これを他のシェルに拡張する作業を開始しました。現時点では特に `bash` と `zsh` を対象としていますが、この新しいアプローチは拡張ホスト API によって実現されているため、ほとんどのシェルに対して一般的なサポートを提供する予定です。
terminal.integrated.suggest.enabled および terminal.integrated.suggest.enableExtensionCompletions を設定することで、現在の作業中の機能を試すことができます。現在、`cd`、`code`、`code-insiders` の引数のみがサポートされています。
提案されたAPI
クイックピックでの提案値選択 API
`InputBox` では、「値選択」を設定でき、入力の一部またはすべてをプログラムで選択できるようになりました。このマイルストーンでは、QuickPick での値選択の提案 API を追加しました。
その例を以下に示します。
const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];
qp.items = [
{ label: '12345678', description: 'desc 1' },
{ label: '12345678', description: 'desc 2' },
{ label: '12345678', description: 'desc 3' }
];
qp.show();
valueSelectionInQuickPick の提案を試して、この GitHub イシューでご意見をお聞かせください!
提案されたネイティブウィンドウハンドルAPI
このマイルストーンでは、フォーカスされたウィンドウのネイティブウィンドウハンドルを取得するための新しい提案APIを追加しました。ネイティブウィンドウハンドルは、特定のウィンドウへのポインタを提供するOSの概念です。これは、ネイティブコードと対話していて、たとえばウィンドウの上にネイティブダイアログをレンダリングする必要がある場合に便利です。
declare module 'vscode' {
export namespace window {
/**
* Retrieves the native window handle of the current active window.
* This will be updated when the active window changes.
*/
export const nativeHandle: Uint8Array | undefined;
}
}
これは、Microsoft Authentication のMSAL の採用のために特に追加されました。これにより、ネイティブハンドルを OS に渡して、VS Code の上に認証ダイアログをレンダリングできるようにしました。
nativeWindowHandle の提案に対するユースケースやフィードバックがありましたら、この GitHub イシューでお知らせください!
エンジニアリング
vscode-unpkg サービスによる拡張機能更新の最適化
マーケットプレイスインフラストラクチャへの負荷を軽減するため、VS Code は新しく追加された `vscode-unpkg` サービスのエンドポイントを使用して拡張機能の更新をチェックするようになりました。このサービスは 10 分の TTL を持つサーバーサイドキャッシュを実装しており、マーケットプレイスへの直接リクエストの数を大幅に削減します。この最適化は、extensions.gallery.useUnpkgResourceApi 設定 (デフォルトで有効) で制御されます。
拡張機能の更新に問題がある場合は、extensions.gallery.useUnpkgResourceApi でこの機能を無効にし、直接マーケットプレイスのバージョンチェックに戻すことができます。
エディターにおける GPU アクセラレーションの基礎作業
ターミナルと同様に、エディターでの GPU アクセラレーションを有効にする作業を開始したことをお知らせします。この取り組みの目標は、主に入力遅延を減らし、スクロールパフォーマンスを向上させることで、全体的なコーディングエクスペリエンスを向上させることです。
これはまだ初期段階でテストする準備はできていませんが、これまでに達成された進捗状況の詳細を共有したいと考えていました。
- GPU レンダラーは、内部で WebGPU を使用しています。
- 現在は、パフォーマンスよりも機能の同等性と正確性に焦点を当てています。
- GPU アクセラレーションが有効になっている場合に、完全にサポートされていない行が DOM レンダリングに「フォールバック」できるようにするフォールバックメカニズムがあります。これは、早期に自己ホストでき、現在互換性のない行が代わりに DOM アプローチを使用して表示されることを意味します。現在フォールバックする行の例:200 文字を超える行、特定の Monaco デコレーション (例: 未使用変数のフェード) を含む行、折り返される行など。
- Monaco のインライン装飾は、文字を含む実際の要素をスタイリングできるため、CSS を使用してスタイリングされるため、この機能にとって大きな課題となりました。ほとんどのインライン装飾を破損したり API を変更したりせずにサポートするために使用しているアプローチは、これらの装飾に添付された CSS を検出し、次に一般的な CSS プロパティのサブセットをサポートし、すべてのスタイルがサポートされていない場合はフォールバックすることです。
機能が動作しているスクリーンショットを次に示します。ガターの黄色の線は、フォールバックレンダリングを使用している行を示していることに注意してください。この特定のケースでは、`dontShow` パラメーターが未使用としてインライン装飾を持っているため、フォールバックレンダリングを使用しています。
この作業を追跡するイシューは#221145 であり、進捗状況に関する頻繁な更新と詳細が提供されています。
macOS 10.15 の EOL 警告
VS Code デスクトップは、今後数か月のマイルストーンでElectron 33に更新されます。Electron 33 の更新により、VS Code デスクトップは macOS Catalina では動作しなくなります。このマイルストーンでは、影響を受けるプラットフォームのユーザーに移行を促す非推奨の通知を追加しました。前述の OS バージョンのユーザーは、追加情報についてFAQをご覧ください。
注目すべき修正点
- 233915 拡張機能ビューの拡張機能のコンテキストメニューにあるリンクをコピーアクションを使用して、拡張機能を他のユーザーと共有します。
- 231542 EBUSY エラーでファイルを保存できない、またはファイルデータが消去されることが頻繁に発生する
- 233304 `onDidChangeCheckboxState` が 1.95 で壊れている
- 232263 プロセス間呼び出しがバッチ処理されるようにツリービューを最適化する
- 156723 Wayland で実行しているときのドラッグアンドドロップサポートの修正
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
vscode
への貢献者
- @a-stewart (Anthony Stewart): サイドバーとパネルのタイトルおよびビューの間に境界線を追加するサポートを追加 PR #157318
- @aravind-n (Aravind Nidadavolu): fish シェル統合の実行順序を修正 PR #226589
- @BABA983 (BABA): markdownDescription で ShellIntegrationDecorationsEnabled を修正 PR #233387
- @BenLocal (benshi): Cli serve_web はパスプレフィックスを / に設定します
- /、コミット値の解析エラー PR #233986 - @BlackHole1 (Kevin Cui): fix: Windows で vscode-win32-x64 を使用すると vscode を開けない PR #233285
- @BugGambit (Fredrik Anfinsen): リンク 'foo,
' のサポートを追加 PR #231775 - @cachandlerdev: 拡張機能リンクをコピー PR #234210
- @CrafterKolyan (Nikolai Korolev): 拡張機能 API 用の QuickPick に値選択を追加するインターフェースを追加 PR #233275
- @davidmartos96 (David Martos): Fish 使用時の PATH プレペンドを修正 PR #232291
- @dibarbet (David Barbet): C# で補間トークンを文字列としてマークしない PR #232772
- @duncpro (Duncan): fix: 新しいファイル/フォルダ作成ボタンのクリック可能性 PR #232130
- @elias-pap (Elias Papavasileiou): feat: Vite のアイコンを追加 PR #234620
- @gjsjohnmurray (John Murray)
- 隠された出力ビューの表示を停止するために `workbench.view.showQuietly` 設定オブジェクトを追加 (fix #105270) PR #205225
- 「Go to Current History Item」の破損を修正 (fix #235063) PR #235067
- 参照ピッカーの変更後、`Go to Current History Item` を正しく有効にする (fix #235132) PR #235134
- @iisaduan (Isabel Duan): typescript organizeImports 設定を修正 PR #232676
- @jeanp413 (Jean Pierre): ブラウザで vscode web タブをリロードした後、古い extensionHost プロセスがすぐに終了しない問題を修正 PR #234944
- @Kannav02 (Kannav Sethi): 「インポートの整理」コマンドラベルを「インポートの最適化」に変更 PR #232869
- @LionelJouin (Lionel Jouin): Fix: go 文法アップデート (#_232142) PR #232335
- @LitoMore (LitoMore): Microsoft 関連のロゴを削除 PR #215758
- @Logicer16 (Logicer): activeOnStart の説明の文法を修正 PR #197536
- @RedCMD (RedCMD): YAML に `.winget` ファイル拡張子を追加 PR #232218
- @ribru17 (Riley Bruins): JSDoc の例を typescript コードとしてレンダリング PR #234143
- @sandersn (Nathan Shively-Sanders): copilot で copilotRelated を登録するのを元に戻す PR #233729
- @nickdiego (Nick Yamane): Wayland 使用時のドラッグアンドドロップサポートの修正 Chromium CL
vscode-emmet-helper
への貢献
- @onlurking (Diogo Felix): emmet に不足している HTML タグを追加 PR #90
vscode-eslint
への貢献者
- @MariaSolOs (Maria José Solano): 貢献方法の指示を更新 PR #1947
vscode-extension-samples
への貢献
- @olguzzar (Olivia Guzzardo): Chat チュートリアルを request.model を使用するように更新 PR #1125
- @phil294 (Philip Waritschlager): webview-codicons: codicons の依存関係を devDependencies から dependencies に移動 PR #1005
- @witsaint (gaodingqiang): fix: `lsp-embedded-language-service` cleaninterval args type PR #1126
`vscode-extension-telemetry` への貢献
- @kmagiera (Krzysztof Magiera): セッション ID メタデータを伝播 PR #215
vscode-hexeditor
への貢献
- @Antecer (Antecer): WYSIWYGコピーメソッドが必要です PR #540
- @Hexa3333 (Alp Yılmaz): 修正: DisplayContextSelection 読み取り違反 (#_547) PR #548
- @jogo-: CHANGELOG.md を更新 PR #549
- @tomilho (Tomás Silva): 修正: Caps Lock が有効な場合に Ctrl+F が機能しない PR #555
vscode-json-languageservice
への貢献
- @jeremyfiel (Jeremy Fiel): 修正:
then
の説明のタイプミス PR #251 - @Legend-Master (Tony): 大きな oneof バリデーションの遅延を修正 PR #247
- @sumimakito (Makito): feat(completion): スキーマからの詳細をサポート PR #243
vscode-jupyter
への貢献者
- @gjsjohnmurray (John Murray):
connor4312.esbuild-problem-matchers
の推奨を追加 PR #16195 - @pwang347 (Paul): カーネルの初期化後イベントのパブリック API を追加 PR #16214
vscode-mypy
への貢献
- @hamirmahal (Hamir Mahal): 修正:
npm audit
が報告する開発依存関係の問題に対処 PR #327 - @taesungh (Taesung Hwang):
ignorePatterns
のデフォルトにグローバル設定を使用 PR #325
vscode-python-debugger
への貢献者
vscode-python-tools-extension-template
への貢献
vscode-test-web
への貢献
- @Cecil0o0 (hj): VS Code のメインは npm に戻ったので、追いつくことができます PR #148
inno-updater
への貢献
- @BlackHole1 (Kevin Cui): 修正: silent が true の場合にダイアログが表示される PR #29
language-server-protocol
への貢献者
- @EwanDubashinski (Ivan Dubashinskii): PL/SQL 言語サーバーへのリンクを追加 PR #2057
- @gquerret (Gilles Querret): 言語サーバーリストに OpenEdge ABL を追加 PR #2056
- @orbitalquark: Textadept のクライアント実装へのリンクを追加 PR #2058