2024年2月 (バージョン 1.87)

アップデート 1.87.1: このアップデートでは、以下のissueに対処しています。

アップデート 1.87.2: このアップデートでは、このセキュリティissueに対処しています。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap

Visual Studio Code の 2024 年 2 月リリースへようこそ。このバージョンには多くのアップデートが含まれており、きっと気に入っていただけると思います。主なハイライトをいくつかご紹介します。

これらのリリースノートをオンラインで読む場合は、Updates (code.visualstudio.com) にアクセスしてください。Insiders: 最新機能をいち早く試したいですか? nightly Insiders ビルドをダウンロードして、最新のアップデートをいち早くお試しください。

ユーザー補助

エディターでの音声入力の使用

VS Code Speech 拡張機能をインストールしていれば、音声を使ってエディターに直接入力できるようになりました。

エディターの音声入力を開始および停止するための新しいコマンドを追加しました: Voice: Start Dictation in Editor (⌥⌘V (Windows, Linux Ctrl+Alt+V)) および Voice: Stop Dictation in Editor (Escape)。

開始コマンドのキーバインド (⌥⌘V (Windows, Linux Ctrl+Alt+V)) を押し続けると、キーを離すとすぐに音声認識が停止するトランシーバー モードを有効にできます。

注: 音声入力は、SCM コミット入力ボックスやプルリクエストのレビュー時のコメント入力フィールドなど、リッチエディターが使用されている他の場所でも機能します。

音声認識で複数の言語をサポート

VS Code Speech 拡張機能を使用する場合、accessibility.voice.speechLanguage 設定を使用して、サポートされている 26 の言語から 1 つを選択できるようになりました。

音声拡張機能の各言語は、独自の拡張機能として提供されます。音声認識を初めて開始すると、選択した各言語の拡張機能のインストールが表示されます。

ユーザー補助シグナル

ユーザー補助シグナルには、以前はオーディオキューと呼ばれていたサウンドと、以前はアラートと呼ばれていたアナウンスの両方が含まれます。

コマンド Help: List Signal Sounds および Help: List Signal Announcements を使用すると、ユーザーは利用可能なシグナルを表示して構成できます。この新しい構成への移行は自動的に行われます。

以前

"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false

以後

"accessibility.signals.clear": {
    "sound": "auto | on | off",
    "announcement" (optional): "auto | off"
}

ワークベンチ

リリースノートのインタラクティブ設定

新機能の利用をより簡単にするために、リリースノートから直接設定を有効または表示できるようになりました。VS Code 内からリリースノートを表示すると (Show Release Notes コマンド)、一部の設定に歯車アイコンが表示されていることに気付くでしょう。設定または歯車アイコンを選択すると、すぐに設定を操作できます。

Example of an interactive setting in release notes

言語モデルへのアクセスにおける透明性と制御

今回のイテレーションでは、拡張機能が GitHub Copilot Chat の言語モデルを使用できるようにする提案された API を導入しました。モデルへのアクセスにおける最大限の透明性と制御を提供するために、次の機能を追加しました。

認証アクセスを管理するように言語モデルのアクセスを管理

言語モデルへのアクセス管理は、VS Code での GitHub アカウントまたは Microsoft アカウント (または AuthenticationProvider モデルを活用するもの) へのアクセス管理と非常によく似ていることがわかりました。これらの類似性のため、言語モデルへのアクセスにも VS Code の認証スタックを活用しました。

拡張機能が別の拡張機能の言語モデルにアクセスしようとすると、一度限りのアクセス許可プロンプトが表示され、永続化されます: 言語モデルのアクセスを要求する拡張機能を示すモーダルダイアログ

アクセスが許可されると、アカウントメニューのアカウントへのアクセスを管理するのと同じ場所で、そのアクセスを管理できるようになります。

Manage trusted extensions options in the account menu

"信頼できる拡張機能の管理" を選択すると、アクセスを管理できるクイックピックが表示されます。

Manage trusted extensions quick pick

初期作業が完了したので、エクスペリエンスを可能な限りスムーズかつ明確になるように引き続き改良していきます。

拡張機能の言語モデル使用状況を追跡

拡張機能エディターとランタイム拡張機能エディターで、拡張機能の言語モデルの使用状況を追跡できます。次の画像は、GitHub Copilot Chat 言語モデルに対する Copilot Chat サンプル拡張機能によるリクエスト数を示しています。

Tracking language model usage in extension editor

Tracking language model usage in running extensions editor

エディター

エディターのスティッキー スクロール

今回のイテレーションでは、エディターでスティッキー スクロールをデフォルトで有効にしています。これは設定 editor.stickyScroll.enabled を使用して変更できます。

また、エディターのスティッキー ウィジェット内に表示できる最大行数を 10 行から 20 行に増やしました。最大行数は設定 editor.stickyScroll.maxLineCount で構成できます。

複数カーソルのインライン補完

今回のイテレーションでは、複数カーソルのインライン補完のサポートを追加しました。これで、インライン補完がプライマリカーソルとセカンダリカーソルの両方の位置でプレビューおよび適用されるようになりました。

マルチ diff エディターでのリファクタリングプレビュー

リファクタリングプレビューを使用すると、コードリファクタリングによって適用される変更を確認できます。リファクタリングプレビューの変更は、マルチ diff エディターに表示されるようになり、すべての変更を一目で確認し、以前のバージョンと比較することが容易になります。

ターミナル

コマンド実行時間を追跡

ターミナルの実行時間が追跡されるようになり、シェル統合が有効になっている場合、コマンドホバーに詳細が表示されるようになりました。

Hovering the terminal command shows how long it took in milliseconds

ズームイン、ズームアウト、リセットを行う新しいコマンド

ターミナルのフォントサイズをズームイン、ズームアウト、およびリセットするための新しいコマンドがあります。これらはデフォルトではバインドされていませんが、好みのキーバインドにバインドできます。

  • Terminal: Increase Font Size (workbench.action.terminal.fontZoomIn)
  • Terminal: Decrease Font Size (workbench.action.terminal.fontZoomOut)
  • Terminal: Reset Font Size (workbench.action.terminal.fontZoomReset)

ソース管理

ウィンドウタイトルにリポジトリまたはブランチ名を含める

ユーザーは、window.title 設定を使用してウィンドウタイトルをカスタマイズできます。今回のイテレーションでは、この設定で使用できる 2 つの新しい変数 ${activeRepositoryName}${activeRepositoryBranchName} を追加しました。これらの変数は、それぞれアクティブなリポジトリの名前とアクティブなブランチに置き換えられます。

コミット入力検証の改善

今回のイテレーションでは、言語診断を使用してコミットメッセージの作成のための入力検証を改善することを検討しました。言語診断を使用すると、入力検証の警告を解決するために呼び出すことができるコードアクションを表面化できます。git.inputValidationSubjectLength および git.inputValidationLength 設定に基づいて、空白文字を削除したり、行をハードラップしたりするコードアクションを追加しました。今後さらに多くのコードアクションを追加する予定です。

有効にするには、git.inputValidation 設定を切り替えます。デフォルトで有効にする前に解決すべき問題がいくつかありますが、それまでの間、ご自由に有効にしてフィードバックをお寄せください。

Incoming/Outgoing の変更設定管理

ソース管理ビューの Incoming/Outgoing セクションの改良を続けています。今回のイテレーションでは、ユーザーが scm.showIncomingChangesscm.showOutgoingChanges、および scm.showChangesSummary 設定をより簡単に切り替えることができる "Incoming/Outgoing" セパレーターに設定アクションを追加しました。これらのアクションは、ソース管理ビューのタイトルバーの ... メニューの Incoming & Outgoing メニューでも使用できます。

すべての未変更エディターを閉じるコマンド

エディターの管理を支援するために、コマンドパレットに Close All Unmodified Editors コマンドを追加しました。これにより、未変更のファイルを持つすべてのエディターが閉じられます。このコマンドは、未保存の変更があるエディターは閉じません。

ノートブック

ノートブックのインデント設定

notebook.editorOptionsCustomizations 設定を介して、ノートブック固有のインデント設定をサポートするようになりました。この設定により、ユーザーは editor.tabSizeeditor.indentSize、および editor.insertSpaces 設定を介して、ノートブックの特定のインデントスタイルを設定できます。

また、ユーザーはノートブックエディターの現在のインデント設定を示す Notebook Indentation というステータスバーエントリに気付くでしょう。このエントリにはクイックピックメニューがあり、設定エディターを開かなくてもインデント設定を管理できます。これは、エディターでも使用できるのと同じクイックピックメニューです。

デバッグ

新しい BreakpointMode のサポート

VS Code は、さまざまな 'モード' のブレークポイントを設定できるデバッグアダプタープロトコル (DAP) に新しい機能を追加しました。この機能は、ネイティブコードのデバッガーで、たとえばハードウェアブレークポイントとソフトウェアブレークポイントを設定するために一般的に使用される場合があります。ブレークポイントのモードは、コンテキストメニューの Edit Mode アクションで変更できます。

Breakpoint context menu now has an 'Edit Mode...' option to change the breakpoint mode

リモート開発

Remote Development extensions を使用すると、Dev Container、SSH 経由のリモートマシンまたは Remote Tunnels、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

ハイライトは次のとおりです。

  • GitHub Copilot Chat は、ワークスペースに開発コンテナー構成ファイルを追加するときに、テンプレートと機能を提案します。

これらの機能の詳細については、Remote Development release notes を参照してください。

VS Code のさまざまなリモート開発機能の概要については、最近公開された Remote development with Visual Studio Code Learn path を見逃さないでください。

拡張機能への貢献

GitHub Copilot

名前変更候補

Copilot による名前変更候補を段階的に展開しています。エディターでシンボル名を変更すると、GitHub Copilot はコードに基づいて、そのシンボルの新しい名前の候補リストを提案します。

インラインチャットのユーザー補助ビュー

インラインチャットにユーザー補助ビューが追加され、ユーザー補助 diff ビューアーと同様にコード変更が表示されるようになりました。ユーザー補助ビューは、スクリーンリーダーモードを使用すると有効になります。inlineChat.accessibleDiffView 設定を使用して、常にオンまたはオフに構成することもできます。

また、変更チャンクは、キーボードで F7 および Shift+F7 キーバインドでナビゲートできるようになりました。

インラインチャットのデフォルトモード

ライブプレビュー モードを廃止し、ライブ をインラインチャットのデフォルトモードにしました。これは、候補がエディターに直接適用され、変更がインライン diff で強調表示されることを意味します。

マイクロフォンアイコンが常に表示される

Copilot Chat で音声認識を開始するためのマイクロフォンアイコンが常に表示されるようになりました。VS Code Speech 拡張機能がまだインストールされていない場合、アイコンを選択すると、最初に拡張機能をインストールして音声テキスト変換機能を有効にするように求められます。

Microphone icon in chat input

この機能に興味がない場合、またはキーボードショートカット経由でのみ使用したい場合は、コンテキストメニューから機能を非表示にできます。

Hide microphone icon in chat input

エージェントおよびスラッシュコマンドの音声サポート

VS Code Speech 拡張機能を使用して音声でチャット入力フィールドに入力すると、「at workspace」や「slash fix」などのフレーズが、それぞれのエージェントおよびスラッシュコマンドに変換されるようになりました。これは、チャットビューとインラインチャットの両方で機能します。

どこでもトランシーバーモード

VS Code Speech 拡張機能を使用する場合、コマンド Voice: Start Voice Chat (⌘I (Windows, Linux Ctrl+I)) はどこでも機能し、フォーカスがある場所に応じて音声チャットを表示します (エディターではインラインチャット、それ以外の場合はパネルチャット)。

トランシーバーモードを有効にするには、キーバインドを押し続けます。キーを離すまで音声認識がアクティブになり、その後リクエストが自動的に送信されます。

カーソル位置に基づく Copilot: Explain This

以前は、チャットで Explain This と入力するには、最初にアクティブなエディターで説明するテキストを選択する必要がありました。カーソルを識別子に置くことで、Copilot に識別子の定義を確認させることもできます。定義が別のファイルにある場合、これにはリッチ言語サポートが利用可能である必要があります。

プレビュー: #codebase 変数

今回のイテレーションでは、GitHub Copilot Chat の プレリリース バージョンで、#codebase という新しいチャット変数を導入しました。この変数は、クエリに基づいて、ワークスペースコンテキストを Copilot または会話相手に提供するために使用できます。

この例では、#codebase は最初に @workspace に質問し、次にその応答を @terminal に尋ねている質問に追加していると考えることができます。

これはプレビュー機能であるため、#codebase はこの変数の最終的な名前ではないかもしれませんが、意図は、チャット参加者にワークスペースコンテキストを含めるための何らかの方法を提供することです。

繰り返しますが、これは GitHub Copilot Chat のプレリリースバージョンのみです。ご意見や使用方法をお知らせください!

ターミナルワークスペースコンテキスト

ターミナルは、ワークスペースコンテキストを自動的にプルインしなくなりました。これには時間がかかる場合があります。代わりに、#codebase 変数を使用して明示的に含める必要があります。

ターミナルチャットの場所

ターミナルチャットエクスペリエンスを制御する新しい設定 github.copilot.chat.terminalChatLocation があります。デフォルト値は chatView で、以前の動作を好む場合は quickChat に構成できます。

Jupyter

ローカルで実行されている Jupyter サーバーの言語サーバーサポート

ローカルの Jupyter サーバーに接続する場合、以前は Jupyter 拡張機能は、これらの Jupyter サーバーをリモートとして扱っていました。その結果、Pylance 拡張機能は、インストールされているパッケージを検出できませんでした。

Failed language features for remote Jupyter Servers

今回のイテレーションでは、Jupyter 拡張機能は、接続されている Jupyter サーバーがローカルかリモートかを検出します。これにより、Pylance 拡張機能は、(ローカル Python 環境内の) インストールされているパッケージに基づいて、より豊富な言語機能を提供できます。

Language features for remote Jupyter Servers

Python

Python REPL のシェル統合

WSL 拡張機能 を介して、Mac、Linux、および Windows で Python REPL のシェル統合が有効になりました。Python REPL でコマンドを実行すると、色付きの円の装飾子がコマンドが成功したか失敗したかを示します。さらに、Python REPL の Terminal: Run Recent Command… コマンドもサポートしており、REPL のコマンド履歴を表示して利用できます。

Terminal: Run Recent Command を介してアクセスできる、すべてのオペレーティングシステムの Python のシェルファイル履歴もサポートするようになりました。

最初のコマンドが無視されるリスクの軽減

以前は、多くの Python REPL ユーザーが Python REPL への最初のコマンド (たとえば、Shift+Enter を使用) で問題が発生していることに気付きました。Python コマンドが無視されて Python REPL に送信されなかったり、Python REPL 自体ではなく Python REPL を起動するシェルにコマンドが複数回貼り付けられたりしました。この動作は、特に Windows ユーザーや古いマシンで作業しているユーザーに発生しました。

今回のイテレーションでは、この動作が発生するリスクを軽減し、減らすための取り組みを行いました。ユーザーは、VS Code 内の最初の REPL インスタンスに Python コマンドを送信したときに、最初のコマンドが失われる発生頻度が少なくなりました。

不足しているインポートを追加するための改善

Pylance 拡張機能は、不足しているインポートを追加するための Add Imports コードアクションを提供します。Pylance のプレリリースバージョンでは、このコードアクションを改善しました。Pylance は、次の基準に基づいて優先順位付けされた、信頼性の高い上位 3 つのインポートオプションのみを表示するためにヒューリスティックを使用するようになりました。最も最近使用されたインポート、同じモジュールのシンボル、標準ライブラリのシンボル、ユーザーモジュールのシンボル、サードパーティパッケージのシンボル、最後にモジュール名とシンボル名でソート。

さらに、2 つの新しいコードアクションが導入されました。Search for additional import matches は、不足しているインポートシンボルにプレフィックス一致するインポートオプションを検索できるクイックピックメニューを表示し、Change spelling は、タイプミスによる不足しているインポートのインポート候補を提供します。

python.analysis.addImport.heuristics 設定を使用して、この動作を有効にできます。これを新しいデフォルトの動作にし、将来のリリースで設定を非推奨にする予定です。

Django または Flask アプリをデバッグするときにブラウザーを自動的に開く

Python Debugger extension を使用すると、Python Web アプリケーションの開発とテストがより便利になりました!launch.json 構成で autoStartBrowser: true を設定することで、Django または Flask アプリでデバッガーを開始するときにブラウザーを自動的に開くようにできます。

{
  "name": "Python Debugger: Flask",
  "type": "debugpy",
  "request": "launch",
  "module": "flask",
  "env": {
    "FLASK_APP": "hello_app.webapp",
    "FLASK_DEBUG": "1"
  },
  "args": ["run"],
  "jinja": true,
  "autoStartBrowser": true
}

シンボリックリンクされたワークスペースでの Pytest のバグ修正

シンボリックリンクを持つワークスペースで pytest テストが正しく機能するようにするバグ修正を実装しました。テストの書き換えでは、シンボリックリンクの場所からのテストは、シンボリックリンクパスによって参照され、正しく実行されます。

GitHub Pull Requests

GitHub Pull Requests 拡張機能でさらに進展がありました。これにより、プルリクエストと issue の作業、作成、および管理が可能になります。新機能には以下が含まれます。

  • "GitHub Pull Requests and Issues" から "GitHub Pull Requests" に名前が変更されました。
  • マージまたはスカッシュコミットに関連付けられたメールは、マージ/スカッシュ時に選択できます。
  • 設定 githubPullRequests.labelCreated を使用して、作成された PR に自動的に追加されるラベルを構成できます。
  • "オーナーレベル" の PR テンプレートがサポートされるようになりました。
  • プロジェクトは、PR および issue の作成時に追加できます。

その他のハイライトについては、拡張機能の changelog for the 0.82.0 リリースを確認してください。

プレビュー機能

拡張機能作成者向け: @vscode/l10n-dev および Azure AI Translator のプレビュー

今回のイテレーションでは、Azure AI Translator を使用して文字列を翻訳できる新しいコマンド、@vscode/l10n-dev のサブコマンドを導入しました。

文字列をエクスポートし、Azure AI Translator インスタンスを作成した後、AZURE_TRANSLATOR_KEY および AZURE_TRANSLATOR_REGION 環境変数を設定すると、次のコマンドを実行して Azure AI Translator を使用して翻訳を生成できます。

npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json

Azure AI Translator は無料プランを提供しています。拡張機能作成者がさまざまな言語を話す多くのユーザーをより簡単にサポートできるようにツールを提供するのは良い機会だと考えました。これらは機械翻訳であるため、必ずしも完璧ではない可能性があることに注意してください。言語を話す人からのより洗練された翻訳への良い出発点になる可能性があります (可能な場合)。

詳細については、Azure AI Translator 統合に関する l10n-dev ドキュメント を参照してください。

拡張機能の作成

拡張機能のテストカバレッジ

拡張機能の test CLI を使用している拡張機能作成者は、@vscode/test-cli パッケージの最新バージョンに更新することで、テストカバレッジを生成できます。

カバレッジは、テストの実行時に --coverage フラグを渡すことでコマンドラインで生成でき、VS Code UI では Run with Coverage アクションを使用して生成できます。

launch.json のテスト構成

launch.json 構成でテスト構成ファイルを参照できるようになりました。

{
    "type": "extensionHost",
    "request": "launch",
    "name": "My extension tests",
+   "testConfiguration": "${workspaceFolder}/.vscode-test.js",
-   "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},

以前に必要だったさまざまな args は自動的に生成されますが、渡された追加の引数は VS Code のコマンドラインに追加されます。

Issue Reporter での追加データの貢献

前回のイテレーションでは、workbench.action.openIssueReporter コマンドに data および uri のフィールドを追加しました。これにより、拡張機能はより多くの事前入力された情報を使用して、ネイティブ issue reporter を直接開くことができるようになりました。

Help: Reporter Issues... を介して通常の issue reporter フローをナビゲートする個別のケースで、拡張機能がこの恩恵を受けることができるように、拡張機能はカスタムコマンド (openIssueReporter を呼び出す) と issue/reporter へのメニュー貢献ポイントを貢献できます。

package.jsoncontributes の貢献されたコマンドとメニューの例

"commands": [
    {
        "command": "extension.myCommand",
        "title": "Report Issue"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

API および openIssueReporter コマンドの更新または変更については、issue #196863 を購読してください。

提案された API

チャットおよび言語モデル API の最終段階

拡張機能がチャットビューに貢献し、言語モデルを一般的に使用できるようにするサポートに取り組んでいます。現在、次の API の最終段階にあり、フィードバックをお待ちしています。

チャット拡張機能を構築する方法と、拡張機能ガイドで言語モデルを使用する方法の詳細をご覧ください。

FindFiles2 API

既存の workspace.FindFiles API の改良版である新しい提案された拡張機能 API を追加しました。新しい workspace.FindFiles2 API は、ワークスペースファイル検索を可能にする新しいオプションを導入します。

  • files.exclude および search.exclude 設定を尊重する
  • 無視ファイルを尊重する
  • あいまい検索を実行する
  • シンボリックリンクをたどる

新しい API を こちら で確認できます。

FindFiles2 は仮の名前であり、この機能は将来 FindFiles の代替オーバーロードとして提供される可能性があることに注意してください。

Test Coverage API

今回のイテレーションでは、Test Coverage API とエディター内エクスペリエンスが機能完了状態になりました。拡張機能作成者は、VS Code 1.88 リリースでの予測される最終決定前に、それらを試してフィードバックを提供することをお勧めします。

Extension Pack for Java は、すでに Test Coverage API を採用しています。開発者は、Java テストを実行してカバレッジ結果をすでに確認できます。Run Test With Coverage ボタンを選択し、Test Explorer ビューの Test Coverage パネルを表示することで、テストカバレッジにアクセスできるようになりました。Extension Pack for Java を使用したテストカバレッジの詳細については、チームの 12月 および 1月 のアップデートを参照してください。

API はここに含めるには長すぎますが、非常に簡単であると考えており、issue #123713 の提案に関するご意見をお待ちしております。

Debug Visualizer API

変数の可視化機能を拡張機能が提供できるようにする新しいAPIが追加されました。これらの可視化機能は、新しいエディターを開くなどのコマンドを実行するアクション、またはデバッグビューにインラインで埋め込まれ、データのデフォルト表示の代わりとなるツリー構造のいずれかになります。

新しいAPIはこちらで確認できます。

新しいシンボル名のプロバイダーAPI

このAPIにより、ユーザーがシンボルの名前を変更したいときに、拡張機能が名前の候補を提供できるようになります。

注目すべき修正

  • 184046 ターミナルでリンクが完全に機能しなくなることがある

ありがとうございました

最後になりましたが、VS Codeのコントリビューターの皆様に心から感謝申し上げます

Issue追跡

Issue追跡への貢献

プルリクエスト

vscodeへの貢献

vscode-black-formatterへの貢献

vscode-hexeditorへの貢献

  • @deitry (Dmitry Vornychev): プラグインの説明を修正 PR #480
  • @jogo-
    • 符号付き int64 の前に符号なしを表示 PR #482
    • データインスペクターに ASCII 文字を表示 PR #483
    • ステータスオフセットと選択範囲を 10 進数と 16 進数で表示 PR #486
    • データインスペクターに ULEB128 および SLEB128 を表示 PR #488
    • CHANGELOG.md のタイプミスを修正 PR #489
  • @liudonghua123 (liudonghua): 一般的な CJK エンコーディング(簡体字中国語の gb18030、繁体字中国語の big5、韓国語の euc-kr、日本語の euc-jp)のデータ型サポートを追加 PR #465

vscode-isortへの貢献

vscode-languageserver-nodeへの貢献

vscode-pull-request-githubへの貢献

language-server-protocolへの貢献

node-ptyへの貢献