2023年5月 (バージョン 1.79)
更新 1.79.1: この更新プログラムは、このセキュリティ問題に対処します。
更新 1.79.2: この更新プログラムは、これらの問題に対処します。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Codeの2023年5月のリリースへようこそ。このバージョンには、皆さんに気に入っていただける多くの更新が含まれています。主なハイライトをいくつかご紹介します。
- 読み取り専用モード - ワークスペース内の特定のファイルとフォルダーを読み取り専用としてマークします。
- '貼り付け形式' オプション - 項目リンクをエディターに貼り付ける方法を選択します。
- 外部ファイルの自動コピー - ドラッグまたは貼り付けでMarkdownに新しいファイルをワークスペースに追加します。
- デフォルトのGitリポジトリブランチ名 - デフォルトとして「main」を使用するか、ユーザー設定で上書きします。
- ノートブックの豊富なコンテンツ検索 - ノートブックの出力に基づいて検索するか、セルタイプでフィルターします。
- JSXタグのリンクされた編集 - 開始タグと終了タグのJSXタグを同時に変更します。
- プレビュー: GitHub Copilot Chatの改善 - チャットセッション履歴を簡単に管理できます。インラインチャットの「ライブプレビュー」。
- Microsoft Build 2023でのVS Code - YouTubeプレイリストでセッションをチェックしてください。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
アクセシビリティ
詳細設定
スクリーンリーダーユーザーに、フォーカスされた機能とのインタラクション方法を知らせるために、追加のaccessibility.verbosity設定が追加されました。
GitHub Copilotについては、Copilotチャットビューとエディター内コードチャットのアクセシブルなヘルプメニューにアクセスする方法を説明するヒントがあります。
- accessibility.verbosity.panelChat
- accessibility.verbosity.inlineChat
これらのヘルプメニューは、何が期待できるか、入力ボックスから他の要素に移動する方法などについての情報を提供します。
その他の新しいverbosity設定は、特定のVS Code UIに関する情報を提供します
- accessibility.verbosity.keybindingsEditor- キーボードショートカットエディターにいるとき。
- accessibility.verbosity.notebook- ノートブックにいるとき。
accessibility.verbosity 設定はデフォルトで有効 (「true」に設定) ですが、個別に無効にすることができます。
設定エディター
macOSのVoiceOverが、設定エディターでenum設定オプションの説明を読み上げるようになりました。files.autoSave や editor.accessibilitySupport などのenum設定で試してみてください。

Workbench
読み取り専用モード
一部の開発シナリオでは、ワークスペースのフォルダーまたはファイルの一部を明示的に読み取り専用としてマークすると役立つ場合があります。たとえば、フォルダーまたはファイルの内容が別のプロセス (Node.jsパッケージマネージャーによって管理されるnode_modulesフォルダーなど) によって管理されている場合、それらを読み取り専用としてマークすることで、誤って変更されるのを防ぐことができます。
このユースケースでは、エクスプローラーおよびテキストエディターとノートブックエディターでファイルパスを読み取り専用としてマークするための新しい設定があります
- files.readonlyInclude- マッチした場合にファイルを読み取り専用にするパスまたはグロブパターン。
- files.readonlyExclude-- files.readonlyIncludeにマッチしてもファイルを読み取り専用にしないパスまたはグロブパターン。
- files.readonlyFromPermissions- ディスクに書き込み権限がないファイルが読み取り専用であるべきかどうか。
設定のルールに従って、パスが読み取り専用であると見なされる場合、エクスプローラーから変更 (例: 削除) することはできず、テキストエディターまたはノートブックエディターは読み取り専用になります。
読み取り専用モードをより一時的に切り替えるために、現在のセッションのみのモードを変更する新しいコマンドがあり、設定構成よりも優先されます
- セッションでアクティブエディターを読み取り専用に設定 - アクティブなエディターを読み取り専用としてマークします。
- セッションでアクティブエディターを書き込み可能に設定 - アクティブなエディターを書き込み可能としてマークします。
- セッションでアクティブエディターの読み取り専用を切り替える - 読み取り専用と書き込み可能を切り替えます。
- セッションでアクティブエディターの読み取り専用をリセット - セッションの状態をリセットします。
Windows UNCホスト許可リストの改善
重要なセキュリティ修正の一環として、VS CodeはUNCホストの許可リストを導入しました。このマイルストーンでは、WindowsユーザーがVS Codeでの日常業務でUNCパスを使用する際に報告された多くのユーザビリティの問題に対処しました。
ダイアログの改善
起動時にUNCホストを許可するための確認ダイアログが、チェックボックスを選択するとsecurity.allowedUNCHosts設定を更新し、ホストを追加するようになりました。

さらに、詳細情報ボタンをクリックしてもダイアログが閉じなくなりました。
新しいsecurity.restrictUNCAccess設定
新しい設定security.restrictUNCAccessを使用すると、ホストのUNC許可リストを無効にし、このセキュリティ修正前の動作に戻すことができます。システムが情報漏洩の脆弱性に再び脆弱になるため、この設定を変更することは強くお勧めしません。
新しいタブサイズオプションの修正
workbench.editor.tabSizing 設定に新しいオプション fixed が追加され、各タブの幅が均一になります。スペースが制限されると、タブは最小まで均等に縮小されます。新しい設定 workbench.editor.tabSizingFixedMaxWidth はタブの初期サイズを設定します。
このモードでは、マウスを使ってタブを素早く閉じても、タブの幅は安定しており、同じ場所をクリックして各タブを閉じることができます。その後、エディタータブ領域からマウスを離すと幅が調整されます。
ネットワーク品質表示
リモートマシンに接続している場合、VS Codeのリモート編集機能で最高の体験を得るには、低遅延で良好なネットワーク接続が必要です。このマイルストーンでは、遅延が非常に高い場合やネットワーク接続がオフラインになっているように見える場合にフィードバックを提供するために、ステータスバーのリモートインジケーターを更新しました。
高遅延 (Web、デスクトップ)
接続しているリモートへの遅延を定期的に測定します。特定のしきい値に達すると、リモートインジケーターが更新され、それが反映されます。

オフライン検出 (Webのみ)
Webブラウザを使用してリモートに接続しているときに、突然インターネット接続が失われた場合、リモートインジケーターが更新され、それが反映されます。

引き続き作業
引き続き作業機能を使用すると、同じリポジトリのVS Code開発環境間で作業中の変更を保存および取得できます。たとえば、ローカルのGitリポジトリからGitHub Codespaceにアップグレードする場合や、同じリポジトリで異なるマシンを切り替える場合などです。
GitHubリポジトリの作業中の変更を、一方の環境でHTTPリモートで構成され、もう一方の環境でSSHリモートで構成されていても、開発環境間で転送できるようになりました。さらに、ソース管理ビューの状態設定など、追加のワークベンチ状態の転送も開始し、よりシームレスな移行を実現しました。
Editor
名前を付けて貼り付け
ファイルをテキストエディターに貼り付ける際には、複数の挿入方法があります。ファイルの絶対パスを指定したい場合や、現在のワークスペースへの相対パスを指定したい場合があります。また、現在のエディターの言語に固有のものを指定したい場合もあります。たとえば、Markdownに貼り付ける際に、ファイルへのMarkdownリンクを挿入するような場合です。VS Codeの新しい「名前を付けて貼り付け」機能を使用すると、貼り付けたコンテンツがどのように挿入されるかを制御できます。
貼り付け後、VS Codeは、貼り付けたコンテンツを挿入する他の方法がある場合、小さな「名前を付けて貼り付け」コントロールを表示するようになりました。
「名前を付けて貼り付け」コントロールは、クリックするか、⌘. (Windows、Linux Ctrl+.) のキーボードショートカットを使用して開くことができます。テキストの入力開始または挿入されたテキストの外にカーソルを移動すると、貼り付けセレクターは消えます。"editor.pasteAs.showPasteSelector": "never" を使用して、ドロップセレクターコントロールを完全に無効にすることもできます。
たとえば、ノートブックのMarkdownセルにコンテンツを貼り付けると、「名前を付けて貼り付け」コントロールで次を切り替えることができます
- 画像を添付ファイルとして挿入する
- Markdown画像参照を挿入する
- 相対パスを挿入する (ワークスペース内のファイルの場合)
- 絶対パスを挿入する
クリップボードのコンテンツを実際に貼り付ける前に、どのように貼り付けるかを選択したい場合は、代わりに新しい名前を付けて貼り付け...コマンドを使用できます。これにより、コンテンツをどのように貼り付けるかを選択できます。

クイック提案とスニペット
クイック提案とは、VS Codeが⌃Space (Windows, Linux Ctrl+Space)を押さなくても、入力中に提案を表示することを意味します。この機能は非常に人気があり、すべての提案セッションの約90%が入力によって開始されます。多数の提案がTab (Enterや受け入れ文字の入力と比較して) を介して受け入れられます。
スニペットが挿入されているとき、Tab キーはスニペットのプレースホルダー間を移動するために使用されます。現在、スニペットが挿入されている間にクイック提案がアクティブになると、Tab キーは補完を受け入れるか、次のスニペットのプレースホルダーに移動することができます。この競合を解決するために、スニペットが挿入されたときにクイック提案を無効にする editor.suggest.snippetsPreventQuickSuggestions 設定があります。これはデフォルトで true に設定されており、この設定が存在する限り、混乱するというフィードバックを受けました。そのため、この設定のデフォルト値を false に変更し、スニペットのプレースホルダー内での入力がクイック提案をトリガーするようにしました。
次のキーストロークを使用できます。
- Tabを押して補完を受け入れます。
- Escapeを押してクイック提案を非表示にします。
- そして、提案がない場合の Tabは次のスニペットプレースホルダーに移動します。
ターミナル
fishシェル用の自動シェル統合
シェル統合とその強化されたユーザーエクスペリエンスは、fishシェルで自動的にアクティブ化されるようになりました。これを機能させるには、fishを更新する必要がある場合があります。

オーバーラインのサポート
ECMA-48で指定されているオーバーラインエスケープシーケンス (SGR 53, SGR 55) が、ターミナルでサポートされるようになりました。このシーケンスの最も一般的な用途は、ターミナルの最下行にあるアプリの「ステータスバー」の上に線を追加することです。

ソース管理
デフォルトのブランチ名
このマイルストーンから、VS Codeを使用して作成されたすべての新しいGitリポジトリは、デフォルトブランチとしてmainを設定します。デフォルトブランチに別の名前を付けたい場合は、git.defaultBranchName設定で変更できます。この設定が空の場合、VS CodeはGitで構成されたデフォルトブランチ名に委ねます。フォルダーをGitHubに公開する場合も、GitHubで構成されたデフォルトブランチ名が尊重されます。
vscode.devとGitHubとのブランチピッカー統合
VS Codeデスクトップのブランチピッカーから、vscode.devでブランチをチェックアウトしたり、GitHub.comで開いたりできるようになりました。
以下の短いビデオでは、ブランチピッカーのドロップダウンにリストされている各ブランチの右側に、GitHubで開く または vscode.devでチェックアウト のボタンがあります。
類似度しきい値
Git status は、追加/削除の数とファイルのサイズを比較した類似度インデックスを使用して、追加/削除のペアが名前変更と見なされるかどうかを判断します。git.similarityThreshold 設定で類似度しきい値を設定できるようになりました。この設定は 0 から 100 までの値を取ります。デフォルト値は 50 です。
ノートブック
豊富なコンテンツ検索
開いているノートブックで豊富なコンテンツを検索コントロールから検索できるようになりました。ノートブックが開いている場合、検索コントロールはノートブックエディターに表示される方法に基づいて結果を表示します (生のソースファイルの内容を検索するのではなく)。これにより、ノートブックの入力でテキストを置換することもできます。
新しいノートブック検索トグルを使用して、検索するセルコンテンツのタイプをフィルタリングすることもできます。
セル出力の操作の改善
新しいコンテキストキー notebookOutputInputFocused が追加され、セル出力内のテキストボックスがフォーカスされているかどうかを判断できるようになりました。これにより、出力がフォーカスされている間でも、生ホットキー a/b/j/k を安全に使用できます。入力ボックスにフォーカスすると、これらのホットキーがトリガーされなくなります。
実行時にフォーマット
ノートブックは、セルの実行時にセルをフォーマットできるようになりました。これは、セルの実行、すべて実行、上/下実行、およびカーネルと実行の組み合わせコマンドを使用してトリガーされます。この機能は、設定 "notebook.formatOnCellExecution": true を介して有効にできます。
保存時のコードアクション
ノートブックは、保存時にコードアクションを実行できるようになりました。コードアクションは、notebook.codeActionsOnSave 設定で指定できます。拡張機能の作成者は、セルレベルのコードアクションの標準的な型定義を使用してプロバイダーを定義したり、新しい notebook. プレフィックスを使用してノートブック全体を管理するコードアクションを定義したりできます。拡張機能がこの新しい設定をどのように使用できるかについては、clean-nb-imports-ext のサンプル拡張機能を参照してください。
言語
TypeScript 5.1
VS CodeはTypeScript 5.1.3を同梱するようになりました。このメジャーアップデートには、新しいTypeScript言語機能、パフォーマンスの向上、および多くの重要な改善とバグ修正が含まれています。TypeScript 5.1については、TypeScriptブログで読むことができます。
JSXタグのリンクされた編集
リンクされた編集機能では、JSXの開始タグを変更すると、VS Codeが対応する終了タグを自動的に更新します。これは大幅な時間短縮になります。
この機能はデフォルトでオフですが、設定で有効にできます。
"editor.linkedEditing": true
リンクされた編集の開始コマンドで、明示的にリンクされた編集を開始することもできます。
F2で一致するJSXタグの名前を変更
JSXタグで名前変更をトリガーすると、VS Codeはタグへのすべての参照を更新しようとせずに、一致するタグのみの名前を変更するようになりました。
これにはTypeScript 5.1以降が必要で、HTMLでの名前変更の動作と一致します。
この動作は、javascript.preferences.renameMatchingJsxTags および typescript.preferences.renameMatchingJsxTags を使用して無効にできます。
JSDoc @param 補完
JSDocコメントを作成する際、VS Codeは不足しているすべてのパラメーターの提案を表示するようになりました。

これにより、ドキュメントをすばやく入力できます。
JavaScriptファイルでは、@param 補完はパラメーターの型説明のプレースホルダーを作成します。
Markdownのドラッグ&ドロップまたは貼り付けで外部メディアファイルをワークスペースにコピーする
Markdownドキュメントに画像や動画を追加したいですか?まずファイルをワークスペースに手動でコピーしてからリンクを追加する時間を無駄にする代わりに、ファイルをMarkdownにドラッグ&ドロップまたは貼り付けるだけでよくなりました。ファイルが現在ワークスペースの一部ではない場合、VS Codeは自動的にファイルをワークスペースにコピーし、それへのリンクを挿入します。
これはクリップボード内の画像データにも最適です。たとえば、WindowsでSnipping Toolでスクリーンショットを撮った場合、Markdownファイルで貼り付けを押すと、VS Codeはクリップボードデータから新しい画像ファイルを作成し、新しいファイルへのMarkdown画像リンクを挿入します。これは、macOSでも、スクリーンショットを撮るときにCtrlキーを押したままクリップボードにコピーする場合に機能します。
いくつかの設定を使用して、この機能の動作をカスタマイズすることもできます。
markdown.copyFiles.destination
markdown.copyFiles.destination 設定は、新しいメディアファイルの作成場所を制御します。この設定は、現在のMarkdownドキュメントに一致するグロブを画像宛先にマッピングします。画像宛先では、いくつかの単純な変数も使用できます。利用可能な変数については、markdown.copyFiles.destination 設定の説明を参照してください。
たとえば、ワークスペースの/docs下のすべてのMarkdownファイルが、新しいメディアファイルを現在のファイルに固有のimagesディレクトリに配置するようにしたい場合、次のように記述できます。
"markdown.copyFiles.destination": {
  "/docs/**/*": "images/${documentBaseName}/"
}
これで、/docs/api/readme.mdに新しいファイルが貼り付けられると、画像ファイルは/docs/api/images/readme/image.pngに作成されます。
スニペットと同様の方法で変数変換に単純な正規表現を使用することもできます。たとえば、この変換はメディアファイルを作成するときにドキュメントファイル名の最初の文字のみを使用します。
"markdown.copyFiles.destination": {
  "/docs/**/*": "images/${documentBaseName/(.).*/$1/}/"
}
新しいファイルが /docs/api/readme.md に貼り付けられると、画像は /docs/api/images/r/image.png の下に作成されます。
markdown.copyFiles.overwriteBehavior
markdown.copyFiles.overwriteBehavior 設定は、新しく作成されたメディアファイルが既存のファイルを上書きするかどうかを制御します。
デフォルトでは、VS Codeは既存のファイルを上書きすることはありません。代わりに、image.pngというファイルがあり、それをワークスペース内のMarkdownドキュメントに貼り付けようとしたときに、image.pngがすでに存在する場合、VS Codeは代わりにimage-1.pngという新しいファイルを作成します。その後、別のimage.pngというファイルを貼り付けようとすると、代わりにimage-2.pngとして作成されます。
既存のファイルを新しいファイルで上書きしたい場合は、"markdown.copyFiles.overwriteBehavior": "overwrite" と設定します。これで、VS Codeは常に元のファイル名を使用し、そのパスにある既存のファイルをすべて上書きします。
ワークスペースへのファイルのコピーを無効にする
VS Code は、ファイルがまだワークスペースの一部でない場合にのみ、ワークスペースにファイルをコピーしようとします。さらに、現在コピーするのはメディアファイル (画像、ビデオ、オーディオ) のみです。
しかし、この新しい動作が煩わしいと感じる場合は、次のように設定することで、ドラッグ&ドロップと貼り付けの両方で無効にすることができます。
"markdown.editor.drop.copyIntoWorkspace": "never"
"markdown.editor.filePaste.copyIntoWorkspace": "never"
Markdownファイル内のHTMLパスに対するIntelliSense
多くのMarkdown方言では、生HTMLタグをMarkdownドキュメントで使用できます。このアップデートでは、VS CodeのMarkdown IntelliSense機能のほとんどを、これらのHTMLタグで使用されるファイルパスに拡張しました。これには以下のサポートが含まれます。
- パスの補完.
- リンク先のファイルに対するすべての参照を検索。
- ファイルが名前変更または移動されたときのファイルパスの自動更新。
- F2を使用したファイルの安全な名前変更。
- リンク先のファイルがワークスペースに存在することの検証。

Markdownに音声を挿入
音声ファイルをMarkdownドキュメントにドラッグ&ドロップまたはコピー&ペーストすると、VS Codeは<audio>要素を挿入するようになりました。
JSON Lines (JSONL) ファイルの構文ハイライト
JSON with Lines は、改行文字で区切られたJSONオブジェクトのシーケンスを記述します。ファイル拡張子 jsonl が使用されている場合、VS Codeは構文ハイライトを提供します。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシン、リモートトンネル、またはWindows 用 Linux サブシステム (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- 新しいリモート接続(リモートトンネル経由、開発コンテナへ)を現在のVS Codeウィンドウまたは新しいウィンドウで開きます。
- 転送されたポートを公開するためのより簡単なワークフロー。
- VS Code for the Web (vscode.dev) からWSLに接続するための予備的なサポート。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
拡張機能への貢献
GitHub Copilot
安定版VS CodeでCopilot Chatを使用
以前はCopilot Chatを使用するにはVS Code Insidersを使用する必要がありました。VS Code 1.79からは、安定版VS CodeでもCopilot Chatを使用できるようになりました。ただし、GitHub Copilot Chat拡張機能は引き続きインストールする必要があります。
エディターチャット
エディターチャットが改善され、特にデフォルトモードが「ライブプレビュー」に変更されました。このモードでは、変更がドキュメントに直接適用され、組み込みの差分ビューで表示されます。以下の例を見てみましょう。
- IUserFriendlyStatusItemEntry型に新しいプロパティが追加され、
- Copilot はそれに応じて isUserFriendlyStatusItemEntryチェックを更新しました。
- 返信は、埋め込みの差分ビューを使用してエディターに表示されます。右側は編集可能で、VS Codeの言語拡張機能によってチェックされます。
- これにより、返信のエラー (以下では isMarkdownString関数が存在しません) を特定し、提案を受け入れる前に修正できます。

ノートブックの改善
今月、ノートブックエディターでのチャットエクスペリエンスが改善されました。ノートブックドキュメントでCopilotを使用すると、Copilotはノートブックのコンテキストを使用して、より関連性の高い提案を提供できます。たとえば、コード提案は、以前のセルで定義された変数やモジュールを再作成したり再インポートしたりせずに使用します。
ノートブックセルを実行する際、Copilotはセルの実行失敗に対する提案も提供するようになりました。これらは、セルステータスバーのCopilotで修正アクションを選択することで表示できます。
Copilotの提案はセルの実行時に自動的に受け入れられるため、手動で受け入れる必要はありません。
GitHubプルリクエストと課題の統合
GitHubプルリクエストと課題拡張機能がインストールされ有効になっている場合、レビュースレッドを表示しているときに、Copilotを使用してレビューコメントを直接適用できるようになりました。これは、コメントメニューのAIで提案を適用ボタンから実行できます。
実験的なクイック質問体験
テーマ: パンダテーマ(vscode.devでプレビュー)
このイテレーションでは、コンテキストを離れることなくチャットを使用して簡単なプログラミングの質問をする実験を行いました。チャットエクスペリエンスにアクセスできる場合は、次の設定でこの機能を有効にできます。
"chat.experimental.quickQuestion.enable": true
機能概要
- Copilotに簡単な質問をする。
- ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L)でエクスペリエンスを切り替える (状態は30秒間記憶されるため、簡単に表示、非表示、再表示できます)。
- チャットビューで会話を長文チャットに続けるためのチャットで開くボタン。
チャットエントリを削除
チャットリクエストのXアイコンをクリックして、チャットのリクエスト/応答ペアを削除できるようになりました。

なぜこれが必要なのでしょうか?Copilotがトピック外または不正確な応答を提供することがあります。質問を再度行うこともできますが、セッションのチャット履歴から不要な応答を削除することで、会話を適切な方向に維持するのにも役立つ場合があります。各チャットリクエストに含めることができるコンテキストの量には制限があるため、長くて不適切な応答を削除することで、より有用な情報のためにコンテキストの予算を節約できる可能性があります。
チャットセッションをサイドバーからエディターに移動
チャット: エディターを開くコマンドを実行することで、チャットセッションをエディターで開くことはすでに可能でしたが、サイドバーとエディターの間でチャットセッションを双方向に移動することも可能になりました。セッションをエディターで開く および セッションをサイドバーで開く コマンドは、チャットビュータイトルまたはエディタータイトルの「...」メニューの下にあります。
チャットセッション履歴
チャットセッションが履歴に保存されるようになり、チャットビューのタイトルメニューにある履歴を表示ボタンを選択して閲覧できます。履歴エントリを選択すると、その会話がチャットエディターに読み込まれ、中断した場所からシームレスに会話を続けることができます。各行のXボタンをクリックして、履歴からセッションを削除できます。
チャットセッションをJSONファイルにエクスポート
現在フォーカスされているチャットセッションをJSONファイルにエクスポートするコマンド「Chat: Export Session」を追加しました。その後、「Chat: Import Session」コマンドを実行してこのセッションをインポートし、会話を続けることができます。このファイルをリポジトリにチェックインしたり、他の人と共有したり、後で参照するために会話を保存したりできます。インポートされたチャットセッションで会話を続ける場合、その新しいメッセージはセッションを再度エクスポートしない限り保存されないことに注意してください。
コードブロックのナビゲーションとキーバインディング
チャット応答内のコードブロックを操作しやすくするために、いくつかのコマンドとキーバインディングを追加しました。チャット: 次のコードブロック (⌥⌘PageDown (Windows、Linux Ctrl+Alt+PageDown)) と チャット: 前のコードブロック (⌥⌘PageUp (Windows、Linux Ctrl+Alt+PageUp)) は、現在のチャット応答の次または前のコードブロックにカーソルを移動します。コードブロックにフォーカスがある場合、コードブロックツールバーのコマンドはコマンドパレットからも呼び出すことができ、キーバインディングを割り当てることもできます。ターミナルで実行にはデフォルトでキーバインディング ⌃⌥Enter (Windows、Linux Ctrl+Alt+Enter) が割り当てられています。また、選択範囲がないコードブロックで通常のコピーキーバインディングを押すと、コピーコマンドが実行されるようになりました。
また、チャットウィンドウにフォーカスするキーバインディング (⌃⌘I (Windows、Linux Ctrl+Alt+I)) と、チャットセッションをクリアするキーバインディング () も追加しました。
Copilot YouTube プレイリスト
GitHub Copilotに関する詳細、ヒントとテクニック、ベストプラクティスについては、YouTubeのVS Code Copilotシリーズをご覧ください。そこには、GitHub Copilotの紹介、言語固有の使用法、開発にCopilotを使用する際の効果的なプロンプトに関するガイダンスが掲載されています。
Python
専用ターミナルでPythonファイルを実行
Python拡張機能は、エディター上部の実行ボタンまたはPython: ターミナルでPythonファイルを実行コマンドを使用して実行するファイルごとに新しいターミナルを作成し、そのファイルを再実行するたびにこのファイルの「専用」ターミナルを使い続けます。
同じファイルを別のターミナルで実行したい場合は、実行ボタンメニューの下にあるPython: 専用ターミナルでPythonファイルを実行を選択できます。

テストの発見と実行の書き換え
今月、私たちはテスト書き換えの展開を実験として開始しています。この書き換えは、拡張機能のunittestとpytestの両方におけるテストの発見と実行のアーキテクチャを再設計します。ユーザーに公開される追加機能はありませんが、バグの多い動作を減らし、今後新しい機能的な機会を開きます。書き換えは、実験pythonTestAdapterの背後で展開されており、settings.jsonでpython.experiments.optIntoを使用して有効/無効を切り替えることができます。最終的には、この設定を削除し、この新しいアーキテクチャを採用する予定です。この実験または書き換えに関するコメントや提案がある場合は、vscode-pythonリポジトリで共有してください。
Pylanceによる設定可能なインデックス作成制限
インデックス作成のファイル数制限を設定できる新しいPylance設定"python.analysis.userFileIndexingLimit"が追加されました。デフォルトは2000です。この設定は、非常に大規模なプロジェクトで作業しており、パフォーマンスを犠牲にしてIntelliSenseエクスペリエンスを向上させたい場合に役立ちます。
Jupyter
リモートJupyterカーネルに対するセルの実行を再開
Jupyter 拡張機能は、VS Codeをシャットダウンした後にノートブックを再度開いた場合でも、セルがまだ実行中であれば、リモートJupyterカーネルに対するセルの実行を再開できるようになりました。
例えば、モデルのトレーニングなど、リモートJupyterカーネルに対して長時間実行されるコードセクションを実行するとします。これには数分以上かかる場合があるため、その間VS Codeをシャットダウンすることに決めるかもしれません。数分後、同じノートブックが開かれた状態でVS Codeが再起動され、セルがまだ実行中であれば、その状態はノートブックセルに反映され、新しい出力はセル出力に表示されます。
一方、VS Codeのシャットダウン中にセルの実行が完了した場合、その間に生成された出力はノートブックに保存されません。このように実行を再開し、新しい出力を表示できるのは、プレーンテキスト、HTML、画像などの単純な出力に限定されます。ウィジェットやその他の複雑な出力の状態を復元することはサポートされていません。

GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 拡張機能の進捗がありました。この拡張機能を使用すると、プルリクエストや Issue の作成、管理、作業を行うことができます。主なハイライトは次のとおりです。
- チェックアウトしたPRの差分を表示する2つの新しいアクション: ベースとプルリクエストヘッドを比較 (読み取り専用) と プルリクエストヘッドとローカルを比較。
- 新しい設定 "githubPullRequests.pullPullRequestBranchBeforeCheckout"を使用して、以前チェックアウトしたPRブランチを再度チェックアウトするときにそのブランチをプルするのをオフにできます。
その他のハイライトについては、拡張機能の0.66.0リリース用の変更ログを確認してください。
プレビュー機能
insiders.vscode.dev上のプロジェクトワイドJS/TS IntelliSense
vscode.dev は、完全にブラウザで動作する軽量版のVS Codeです。このイテレーションでは、vscode.devのJavaScriptとTypeScriptのサポートを大幅に強化し、現在開いているファイルに限定されることなく、ワークスペース内のすべてのファイルを分析できるようになりました。これにより、コード内のナビゲーションが大幅に改善され、シンボルの定義に移動やすべての参照を検索ができるようになりました。また、tsconfig.json / jsconfig.json の設定が尊重されるようになり、IntelliSenseも改善されました。コード記述中の自動インポートもサポートするようになりました。
下の画像では、参照ビューにワークスペース内のITextDocumentへのすべての参照が表示されています。

これらの新しいIntelliSense機能は、ローカルマシンから開いたフォルダーや、vscode.devに組み込まれているGitHub Repositories拡張機能を使用して開いたGitHubリポジトリで動作します。
vscode.devでのJS/TS IntelliSenseにはまだいくつかの制限があることに注意してください。
- 現在、サードパーティライブラリに対するIntelliSenseサポートはありません。
- 現在、JavaScriptプロジェクトに対する自動型取得のサポートはありません。
- 上記の制限により、vscode.dev ではすべての入力エラーが無効になっています。
- プロジェクト全体のIntelliSenseは現在、vscode.devのInsider版 (insiders.vscode.dev) でのみ有効になっています。この機能は現在github.devでは無効になっています。
これらの制限には今後対処していく予定であり、ウェブでのJavaScriptとTypeScriptのサポートをさらに充実させることを楽しみにしています!
ターミナル内の画像
ターミナル内での画像に実験的なサポートが追加されました。ターミナル内の画像は通常、画像ピクセルデータをテキストとしてエンコードし、特殊なエスケープシーケンスを介してターミナルに書き込むことで機能します。現在サポートされているプロトコルは、Sixelと、iTermが先駆けたインライン画像プロトコルです。
この機能を有効にするには、以下を設定してください。
"terminal.integrated.experimentalImageSupport": true
有効にしたら、テストのために、libsixelリポジトリから.sixのサンプルファイルをダウンロードしてcatすることができます。

または、imgcat pythonパッケージまたはimgcatスクリプトをpng、gif、またはjpgファイルで使用します。

この機能の現在の制限事項は次のとおりです。
- シリアル化が機能しないため、ターミナルを再読み込みしても画像は保持されません (jerch/xterm-addon-image#47で追跡中)。
- 選択範囲をHTMLとしてコピーしても、選択された画像は含まれません (jerch/xterm-addon-image#50で追跡中)。
- アニメーションGIFは動作しません (jerch/xterm-addon-image#51で追跡中)。
- セルよりも短い画像は正しく機能しません。これはシーケンスの設計上の欠陥であり、XTermでも発生します。
TypeScript 5.2のサポート
このアップデートには、今後のTypeScript 5.2リリースに対するサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細は、TypeScript 5.2のイテレーション計画をご覧ください。今後の注目すべきツール機能のハイライトには、以下のようなものがあります。
- 新しいインライン定数リファクタリング。
- シンボルを既存のファイルに移動できる新しいファイルへの移動リファクタリング。
TypeScript 5.2のナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。
JavaScriptとTypeScriptのファイルへの移動リファクタリング
TypeScript 5.2ナイトリーのファイルへ移動リファクタリングにより、クラス、関数、または定数を既存のファイルに移動できます。これにより、シンボルへのすべての参照が自動的に更新され、必要に応じてインポートも更新されます。
ファイルへ移動を選択すると、VS Codeは現在のTypeScriptまたはJavaScriptプロジェクト内のすべてのファイルのリストを表示します。入力することで、目的のファイルをすばやく見つけることができます。
または、既存のファイルを選択... を使用して通常のファイルピッカーでファイルを選択したり、新しいファイルパスを入力... を使用して作成する新しいファイルを指定したりできます。
この機能は現在も積極的に開発中ですので、ぜひお試しいただき、フィードバックをお寄せください!
WebAssembly in VS Code for the Web
vscode.dev により多くのプログラミング言語サポートを追加するため、VS CodeチームはVS Code for the Webで一般的なWebAssemblyを実行する方法を調査してきました。このアプローチに関心があり、詳細を知りたい場合は、最近のVS Code and WebAssembliesブログ記事をご覧ください。
拡張機能作成
ローカルファイルのvscode.fsパフォーマンスの改善
vscode.fs API を使用してファイル (使用すべきです!) を操作する場合、拡張機能ホストにローカルなファイルに対する操作の解決がはるかに高速になりました。
以前は、拡張機能ホストはこれらの操作をVS Codeクライアントに実行を委任していましたが、現在は拡張機能ホスト内で直接実行され、ラウンドトリップを節約できます。
より厳密なステータスバーAPI
ステータスバー項目を作成するAPIであるcreateStatusBarItemは、拡張機能が識別子を渡すことを可能にします。この識別子は、ステータスバー項目を非表示にしたり表示したりするために使用されます。識別子は拡張機能に対して一意であるべきですが、これまでは強制されていませんでした。このリリースでは、これをもう少し厳密にし、同じ拡張機能によって同じ識別子で作成されたステータスバー項目は1つにマージされるようになりました。
タスク
タスク完了時にターミナルを閉じるというタスク表示オプションが確定されました。
提案されたAPI
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
- 最新の@vscode/dtsを使用し、npx @vscode/dts devを実行します。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
- これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
EnvironmentVariableCollection.description
この提案により、EnvironmentVariableCollection に説明を指定できるようになり、ターミナルタブのホバーでユーザーに表示され、変更が具体的に何をしているのかを説明します。
// Example of what the Git extension could use
context.environmentVariableCollection.description = 'Enables a Git authentication provider';

EnvironmentVariableMutator.options
この提案では、EnvironmentVariableMutator に提供できるオプションが追加され、環境変数の変更が適用される正確なタイミングを、プロセス作成時またはシェル統合スクリプト内 (シェル初期化スクリプトの実行後) のいずれかで指定できるようになります。
const collection = context.environmentVariableCollection;
// Apply only when the process is created
collection.replace('FOO', 'bar');
// Apply only during the shell integration script
collection.replace('FOO', 'bar', {
  applyAtProcessCreation: false,
  applyAtShellIntegration: true
});
// Apply twice, during process creation and the shell integration script
collection.replace('FOO', 'bar', {
  applyAtProcessCreation: true,
  applyAtShellIntegration: true
});
共有プロバイダー
共有API提案は、VS Codeでリソースを共有する方法を拡張機能に提供します。
現在、共有プロバイダーの結果は、トップレベルの共有... コマンドパレットアクションと、コマンドセンターの近くの新しいアイコンとして表示されます ("workbench.experimental.share.enabled": true と "window.commandCenter": true でオプトインした場合)。
API提案課題 #176316でフィードバックをお寄せください。
静的なステータスバー項目
ステータスバー項目は、package.json#contributes/statusBarItems を介して静的に貢献できるようになりました。この貢献ポイントにより、拡張機能はアクティベーションを遅らせ、たとえばコマンドでステータスバー項目が操作されたときにのみアクティベートできます。アクティベートされると、拡張機能は vscode.window.createStatusBarItem API を介して静的なステータスバー項目にアクセスできます。
workspace.save と workspace.saveAs
エディターの保存API提案は、拡張機能がエディターをリソースに保存するか、ユーザーにリソースを提供するように促すフローをトリガーできるようにします。
すべての保存メソッドは、操作がキャンセルされた場合、結果として得られる Uri または undefined を返します。パスが既に関連付けられている場合を除き、無題のファイルは常にユーザーに保存先を求めます。
Authentication authGetSessions 提案API
複数のGitHubアカウントサポートの実現に向けて近づく中、特定のスコープセットに対するすべてのアクセス可能なセッションを拡張機能が取得できる新しい提案された認証APIがあります。これらのAPI追加の提案には、いくつか注目すべき点があります。
- 拡張機能がアクセスできる各アカウントのセッションを取得するためのvscode.authentication.getSessionsの導入。追加のアカウントを要求したい場合は、{ createIfNone: true, clearSessionPreference: true }を使用してユーザーにアカウントを選択するように求めます。
- forceNewSessionプロパティは、- { sessionToRecreate: session }オブジェクトを受け取ることができるようになり、利用する拡張機能は再作成したい正確なセッションを指定できます。
- 認証プロバイダーが実装するcreateSession関数は、再作成するセッションを渡されるようになりました (forceNewSessionの値にtrueが使用されている場合、拡張機能のセッション設定が使用されます)。
GitHub認証拡張機能で採用できる状態にするには、まだ多くの作業が必要であるため、興味がある場合は、この提案を追跡する課題でフィードバックを提供できます。
ウィンドウアクティビティAPI
ウィンドウがアクティブまたは非アクティブになったときに拡張機能に通知するための新しいAPIが利用可能になりました。これは、リソースを節約するためにアイドル状態にできる永続的なリソースやプロセスを破棄または作成するために使用できます。
これは、既存のWindowState型に新しいactiveブール値が追加されることによって実装されます。
vscode.window.onDidChangeWindowState(state => {
  if (state.active && !longRunningProcess) {
    longRunningProcess = startLongRunningProcess();
  } else if (!state.active && longRunningProcess) {
    longRunningProcess.end();
    longRunningProcess = undefined;
  }
});
エンジニアリング
すべてのユーザーに対してElectronサンドボックスが有効に
Electronサンドボックスがすべてのユーザーに展開されることを発表できることを嬉しく思います。これは2020年初頭に始まった道のりであり、ついに終焉を迎えます。詳細については、VS Codeをプロセスサンドボックスに移行するというブログ記事を参照してください。
拡張機能ホストの再起動への参加
ワークベンチの特定のアクションにより、現在のウィンドウを再読み込みせずに拡張機能ホストが再起動する場合があります。たとえば、プロファイルを切り替えると、VS Codeはそのプロファイル用の異なる拡張機能セットの実行を処理するために拡張機能ホストを再起動します。
しかし、一部のカスタムエディターやノートブックエディターは、必要な拡張機能がそのプロファイルにインストールされていないため、プロファイルを切り替えた後に機能しなくなる可能性があります。エディターに未保存の変更がある場合、これによりデータが失われる可能性があります。修正として、VS Codeのコンポーネントは拡張機能ホストの再起動に参加できるようになり、拡張機能ホストが再起動する前に未保存の変更が保存されるようにします。
次のマイルストーンではこの体験をさらに発展させる予定ですので、ご期待ください!
Windows 8 および 8.1 のサポート終了
v1.77リリースノートで述べたように、v1.79はWindows 8 / Windows Server 2012 および Windows 8.1 / Windows Server 2012 R2 をサポートする最後のリリースです。詳細については、FAQを参照してください。
マイルストーンの自動化
すべてのGitHubリポジトリ全体で、マイルストーンの自動レプリケーションを実装しました。これにより、microsoft/vscodeで確立された月次のマイルストーンが、作成および維持される他のすべてのマイルストーンの基盤として機能します。
Microsoft BuildでのVS Code
Microsoft Build 2023をライブでご覧にならなかった方は、Microsoft Developer YouTubeチャンネルで基調講演やセッションを視聴できます。
VS Codeユーザーにとって特に興味深いセッションには、以下のものがあります。
- Microsoft Cloudによる開発者向け次世代AI
- Visual Studio Codeでどこからでも開発
- GitHub Copilotを最大限に活用するための実用的なテクニック
- クラウドとAIの力を開発ワークフローに注入する
注目すべき修正点
- 165933 [emmet] http-equiv="X-UA-Compatible" (2023年)
- 181889 treeView.reveal with expand: 3 only expands the first level 3 folder
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
vscodeへの貢献者
- @akbyrd (Adam Byrd): msCompileの問題マッチャーに関する問題を修正 PR #182167
- @ashgti (John Harrison): デバッグ出力プロンプトが 'object Object' として表示されない問題を修正 PR #181964
- @benibenj (Benjamin Simmonds): TreeView Checkbox State set to 0 fixed PR #183342
- @bitekas (Viktor Korsun): Fixing the Pseudoterminal onDidClose example PR #180026
- @dan-petty (Daniel Petty): Fix cannot specify custom path for built-in profiles on Windows PR #175464
- @dcourv (Dylan): Fixes #181207 - Add padding to extension viewer bottom PR #181723
- @DoctorKrolic: JSON Lines言語定義の追加 PR #183035
- @dyedgreen (Tilman Roeder): Fix: Encode paths as URI components when opening a folder or workspace PR #182398
- @ElectricRCAircraftGuy (Gabriel Staples): すべてのカラーテーマ: コメントドキュメント文字列もコメントとして扱う PR #182162
- @gjsjohnmurray (John Murray)
- security.restrictUNCAccess設定の説明におけるスペルミスを修正 PR #182842
- パスに親がない場合のワークスペースフォルダーピッカーでの重複テキストを防止 (fix #183418) PR #183427
 
- @hermannloose (Hermann Loose)
- 解決済みと未解決のコメントに別々の概要ルーラーの色を追加 PR #181520
- コメントアイコンの色説明を修正 PR #181628
 
- @iAnujParajuli (Anuj Parajuli): #181652 HTML audio タグをオーディオファイルに追加 PR #183328
- @jacekkopecky (Jacek Kopecký)
- 固定幅タブの設定を追加 PR #181729
- 固定タブサイズ: 最後のタブが閉じられたときにタブ幅を復元 PR #183188
 
- @jackpunt (ガネーシュ)
- ファイルを読み取り専用 (編集不可) にマークする設定を追加PR #161716
- isReadonly() の優先順位 (問題 #181708 向け) PR #181955
 
- @jairbubbles (Julien Richard): diffインラインモードで削除された行のコンテキストメニューを修正 PR #182542
- @jeanp413 (Jean Pierre)
- ITerminalService#getActiveOrCreateInstance が破棄されたターミナルを返す問題を修正 PR #180451
- リロード後にターミナルエディタが空になる問題を修正 PR #182121
- ターミナルがエディターの背景色を考慮しない問題を修正 PR #182557
- ターミナル検索動作の改善、結果が1000件を超える場合の修正 PR #182917
- escを押してもターミナル検索ウィジェットを非表示にできない問題を修正 PR #183090
- ターミナルが永続化されない問題を修正 PR #183516
 
- @Juneezee (Eng Zer Jun): refactor(userDataSync): indexOfをincludesに置き換え PR #182635
- @markw65
- タスク起動時の競合を修正 PR #180546
- _activeTasks を _executeTask と同期的にする PR #180617
 
- @max06 (Flo): Fix: shellIntegrationでbash-syntaxをfish-syntaxに変更 PR #181637
- @r3m0t (Tomer Chachamu)
- インタラクティブウィンドウ - 挿入ツールバーのためのスペースを残さない PR #181949
- インレイヒントとエディターコンテンツ間の合字を防止 (Fix #170449) PR #182379
 
- @rehmsen (Ole): デバッガーのステップ操作のために、Web上でもF10キーバインディングを追加。 PR #183510
- @soulshined (David Freer): PHPスニペットの生活の質と継続性 PR #174889
- @TheSylvester (Sylvester Wong): #181115 説明が提供されていない場合にスニペットボディを説明として使用するように追加 PR #181381
- @tisilent (xie jialong 努力鸭)
- innerWidth を修正 PR #180480
- 提供されたプロファイルアイコンを修正 PR #182615
- fix #182702 PR #182705
 
- @ugultopu (Utku Gultopu): Git拡張機能に類似度しきい値オプションを追加 PR #178266
- @vadimcn: ワークスペースの状態にブレークポイントIDを保持 PR #182704
- @Viijay-Kr (Vijaya Krishna): fix: #169151 ブレークポイントがない場合はエディターホバーにフォールバック PR #181274
- @Yash-Singh1 (Yash Singh): feat: .vuercをjsonファイルとして PR #153017
- @yshaojun: fix: unbalancedBracketScopes(#_168110) を追加してperlの括弧ペアを修正 PR #181203
vscode-css-languageserviceへの貢献者
- @romainmenke (Romain Menke): CSSネスティング: サポートを強化 PR #345
vscode-js-debugへの貢献者
- @NotAndOr (notandor): ディレクトリジャンクションなしで引数user-data-dirを指定してブラウザを起動。 PR #1656
vscode-pull-request-githubへの貢献者
- @kabel (Kevin Abel): AuthProviderenum を簡素化 PR #4779
- @SKPG-Tech (Salvijus K.): テンプレートに欠落しているインデックスを追加 PR #4822
- @unknovvn (Andzej Korovacki): checkoutExistingPullRequestBranchでチェックアウト前にフェッチするgit設定を使用 PR #4759
monaco-editorへのコントリビューション
- @dlitsman (Dmitry Litsman): 「マージンにグリフをレンダリングする」の例を拡張して、透過色に関する注記を追加。 PR #3945
- @dneto0 (David Neto): WGSLレクサーでのハックを回避 PR #3887
- @spahnke (Sebastian Pahnke)
- @titouanmathis (Titouan Mathis): Webpack Plugin Fix CJS being injected in ESM files PR #3933