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: 新機能をいち早く試したいですか? nightly 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で、設定エディターの列挙設定オプションの説明が読み上げられるようになりました。files.autoSave
やeditor.accessibilitySupport
などの列挙設定で試してみてください。
ワークベンチ
読み取り専用モード
一部の開発シナリオでは、ワークスペースのフォルダーまたはファイルの一部を明示的に読み取り専用としてマークすると便利な場合があります。たとえば、フォルダーまたはファイルの内容が別のプロセス(Node.jsパッケージマネージャーによって管理されるnode_modules
フォルダーなど)によって管理されている場合、それらを読み取り専用としてマークすると、不注意による変更を回避できます。
このユースケースのために、エクスプローラーとテキストおよびノートブックエディターでファイルパスを読み取り専用としてマークするための新しい設定があります。
files.readonlyInclude
- 一致する場合にファイルを読み取り専用にするパスまたはglobパターン。files.readonlyExclude
-files.readonlyInclude
に一致する場合に、ファイルを読み取り専用からスキップするパスまたはglobパターン。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ブラウザーを使用してリモートに接続していて、インターネット接続が突然失われた場合、リモートインジケーターが更新されてそれが反映されます。
作業の継続
作業の継続機能を使用すると、ローカルGitリポジトリからGitHub Codespaceにアップグレードしたり、同じリポジトリの異なるマシン間を切り替えたりする場合など、同じリポジトリのVS Code開発環境間で作業中の変更を保存および取得できます。
1つの環境でHTTPリモートで構成され、別の環境でSSHリモートで構成されている場合でも、GitHubリポジトリの開発環境間で作業中の変更を転送できるようになりました。さらに、よりシームレスな移行のために、ソース管理ビューの状態設定など、追加のワークベンチの状態の転送を開始しました。
エディター
貼り付け形式
テキストエディターにファイルを貼り付ける場合、挿入する方法は複数考えられます。ファイルの絶対パスを指すようにしたい場合があります。現在のワークスペースに対する相対パスが必要な場合があります。または、Markdownに貼り付けるときにファイルへのMarkdownリンクを挿入するなど、現在のエディターの言語に固有のものを必要とする場合もあります。VS Codeの新しい「貼り付け形式」機能を使用すると、貼り付けられたコンテンツの挿入方法を制御できます。
貼り付け後、貼り付けられたコンテンツを挿入できる他の方法がある場合、VS Codeは小さな「貼り付け形式」コントロールを表示するようになりました。
「貼り付け形式」コントロールを開くには、それをクリックするか、⌘. (Windows、Linux Ctrl+.)キーボードショートカットを使用します。貼り付けセレクターは、入力を開始するか、挿入されたテキストの外にカーソルを移動するとすぐに消えます。"editor.pasteAs.showPasteSelector": "never"
を使用して、ドロップセレクターコントロールを完全に無効にすることもできます。
たとえば、ノートブックのMarkdownセルにコンテンツを貼り付けると、「貼り付け形式」コントロールを使用すると、次の間で切り替えることができます。
- 画像を添付ファイルとして挿入する
- Markdown画像参照を挿入する
- 相対パス(ワークスペース内のファイルの場合)を挿入する
- 絶対パスを挿入する
クリップボードの内容を貼り付ける前に貼り付け方法を選択する場合は、代わりに新しい貼り付け形式...コマンドを使用できます。これにより、コンテンツの貼り付け方法を選択できます。
クイックサジェストとスニペット
クイックサジェストとは、⌃Space (Windows、Linux Ctrl+Space)を押さなくても、入力時にVS Codeがサジェストを表示することを意味します。この機能は広く普及しており、すべてのサジェストセッションの約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とのブランチピッカー統合
vscode.devでブランチをチェックアウトしたり、VS CodeデスクトップのブランチピッカーからGitHub.comで開いたりできるようになりました。
下の短いビデオでは、ブランチピッカーのドロップダウンリストに表示される各ブランチの右側に、GitHubで開くまたはvscode.devでチェックアウトするためのボタンがあります。
類似性しきい値
Git statusは、類似性インデックス(ファイルのサイズと比較した追加/削除の数)を使用して、追加/削除のペアが名前変更と見なされるかどうかを判断します。git.similarityThreshold
設定を使用して類似性しきい値を構成できるようになりました。この設定は0
から100
の間の値を取ります。デフォルト値は50
です。
ノートブック
豊富なコンテンツ検索
検索コントロールから開いているノートブック内の豊富なコンテンツを検索できるようになりました。ノートブックが開いている場合、検索コントロールには、(生のソースファイルの内容を検索するのではなく)ノートブックエディターでの表示方法に基づいて結果が表示されます。これにより、ノートブック入力内のテキストを置換することもできます。
新しいノートブック検索トグルを使用すると、検索するセルのコンテンツのタイプをフィルタリングすることもできます。
改善されたセル出力インタラクション
新しいコンテキストキーnotebookOutputInputFocused
が追加され、セル出力内のテキストボックスにフォーカスがあるかどうかを判断できるようになりました。これにより、出力にフォーカスがある間、rawホットキー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画像リンクを挿入します。これは、スクリーンショットをクリップボードにコピーするためにCtrlキーを押しながらスクリーンショットを撮る場合にもmacOSで機能します。
いくつかの設定を使用して、この機能の動作をカスタマイズすることもできます。
markdown.copyFiles.destination
markdown.copyFiles.destination
設定は、新しいメディアファイルの作成場所を制御します。この設定は、現在のMarkdownドキュメントに一致するglobを画像宛先にマッピングします。画像宛先は、いくつかの単純な変数も使用できます。使用可能な変数については、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
という名前のファイルがあり、ワークスペースにimage.png
が既に存在するワークスペースのMarkdownドキュメントに貼り付けようとすると、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 with Lines(JSONL)ファイルの構文の強調表示
JSON with Linesは、改行文字で区切られたJSONオブジェクトのシーケンスを記述します。ファイル拡張子jsonl
が使用されている場合、VS Codeは構文の強調表示を提供します。
リモート開発
リモート開発拡張機能を使用すると、Dev Container、SSHまたはリモートトンネルを介したリモートマシン、またはWindows Subsystem for Linux(WSL)をフル機能の開発環境として使用できます。
ハイライトは次のとおりです。
- (リモートトンネル、Dev Container経由で)新しいリモート接続を、現在のVS Codeウィンドウまたは新しいVS Codeウィンドウで開きます。
- 転送されたポートを公開するためのワークフローが容易になりました。
- VS Code for the Web(vscode.dev)からのWSLへの接続の予備サポート。
新しい拡張機能とバグ修正の詳細については、リモート開発リリースノートを参照してください。
拡張機能への貢献
GitHub Copilot
Stable VS CodeでCopilot Chatを使用する
以前は、Copilot Chatを使用するにはVS Code Insidersを使用する必要がありました。VS Code 1.79以降、Stable VS CodeでもCopilot Chatを使用できます。それでも、GitHub Copilot Chat拡張機能をインストールする必要があります。
エディターチャット
エディターチャットを改善しました。特に、デフォルトモードを「livePreview」に変更しました。このモードでは、変更はドキュメントに直接適用され、埋め込みdiffビューで表示されます。以下の例を見てみましょう。
- 新しいプロパティが
IUserFriendlyStatusItemEntry
型に追加され、 - Copilotはそれに応じて
isUserFriendlyStatusItemEntry
チェックを更新しました。 - 応答は、埋め込みdiffビューを使用してエディターに表示されます。その右側は編集可能で、VS Codeの言語拡張機能によってチェックされます。
- これにより、応答のエラー(以下の
isMarkdownString
関数が存在しない)を見つけることができ、提案を受け入れる前に修正できます。
ノートブックの改善
今月はノートブックエディターでのチャットエクスペリエンスを改善しました。ノートブックドキュメントでCopilotを使用する場合、Copilotはノートブックコンテキストを使用して、より関連性の高い提案を提供できます。たとえば、コードの提案では、以前のセルで定義された変数またはモジュールを再作成または再インポートせずに使用します。
ノートブックセルを実行すると、Copilotはセル実行エラーの提案も提供するようになりました。これらを表示するには、セルステータスバーのCopilotを使用して修正アクションを選択します。
Copilotの提案はセル実行時に自動的に受け入れられるため、手動で受け入れる必要はありません。
GitHubプルリクエストとIssueの統合
GitHub Pull Requests and Issues拡張機能がインストールおよび有効になっており、レビュー スレッドを表示している場合、Copilot を使用してレビュー コメントを直接適用できるようになりました。これは、コメント メニューの AI による提案を適用 ボタンから実行できます。
実験的なクイック質問エクスペリエンス
テーマ: Panda Theme (プレビュー on vscode.dev)
このイテレーションでは、コンテキストを離れることなく、チャットを使用して簡単なプログラミングの質問をすることを試しました。チャットエクスペリエンスにアクセスできる場合は、次の設定でこの機能を有効にできます。
"chat.experimental.quickQuestion.enable": true
機能の概要
- Copilotに簡単な質問をします。
- ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L)でエクスペリエンスを切り替えます(状態は30秒間記憶されるため、簡単に表示、非表示、再表示できます)。
- チャットビューでの長文チャットに会話を継続するためのチャットで開くボタン。
チャットエントリの削除
チャットリクエストのXアイコンをクリックして、チャットリクエスト/レスポンスのペアを削除できるようになりました。
なぜこれを行うのですか? Copilotがトピックから外れたり、間違った応答を提供することがあります。質問をもう一度尋ねることができますが、セッションのチャット履歴から不適切な応答を削除すると、会話を軌道に乗せるのに役立つ場合もあります。各チャットリクエストに含めることができるコンテキストの量にも制限があるため、長い不適切な応答を削除すると、より有用な情報のためにコンテキスト予算を節約できる場合があります。
チャットセッションをサイドバーからエディターに移動する
チャット: エディターを開くコマンドを実行して、エディターでチャットセッションを開くことはすでに可能でしたが、サイドバーとエディターの間でチャットセッションを前後に移動することも可能になりました。チャットビューのタイトルまたはエディターのタイトルメニューの「...」メニューの下にエディターでセッションを開くおよびサイドバーでセッションを開くコマンドがあります。
チャットセッション履歴
チャットセッションが履歴に保存されるようになり、チャットビューのタイトルメニューの履歴を表示ボタンを選択して参照できます。履歴エントリを選択して、その会話をチャットエディターにロードし、中断したところからシームレスに続行できます。各行のXボタンをクリックして、履歴からセッションを削除できます。
チャットセッションをJSONファイルにエクスポートする
現在のフォーカスされたチャットセッションをJSONファイルにエクスポートするチャット: セッションをエクスポートコマンドを追加しました。次に、チャット: セッションをインポートコマンドを実行してこのセッションをインポートし、会話を続行できます。このファイルをリポジトリにチェックインしたり、他のユーザーと共有したり、後で参照するために会話を保存したりできます。インポートされたチャットセッションで会話を続行している場合、セッションを再度エクスポートしない限り、これらの新しいメッセージは保存されないことに注意してください。
コードブロックのナビゲーションとキーバインディング
チャット応答でコードブロックを操作しやすくするいくつかのコマンドとキーバインディングを追加しました。チャット: 次のコードブロック(⌥⌘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 をシャットダウンした後に Notebook を再度開いた場合でも、セルがまだ実行中である場合に、リモート Jupyter カーネルに対するセルの実行再開をサポートするようになりました。
たとえば、リモート Jupyter カーネルに対してモデルのトレーニングなど、長時間実行されるコードセクションを実行すると仮定します。これには数分以上かかる場合があるため、途中で VS Code をシャットダウンすることを決定するかもしれません。数分後、同じ Notebook を開いて VS Code を再起動すると、セルがまだ実行中である場合、この状態は Notebook セルに反映され、新しい出力はセル出力に表示されます。
一方、VS Code がシャットダウン中にセルの実行が完了した場合、その間に生成された出力は Notebook に保持されません。この方法での実行の再開と新しい出力の表示は、プレーンテキスト、HTML、画像などの単純な出力に限定されます。ウィジェットやその他のそのような複雑な出力の状態の復元はサポートされていません。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues拡張機能で、プルリクエストとissueの作業、作成、および管理ができるようになり、さらに進捗がありました。ハイライトは次のとおりです。
- チェックアウトされた PR の差分を表示するための 2 つの新しいアクション:ベースとプルリクエストヘッドを比較(読み取り専用)とプルリクエストヘッドとローカルを比較。
- 新しい設定
"githubPullRequests.pullPullRequestBranchBeforeCheckout"
を使用して、以前にチェックアウトした PR ブランチを再度チェックアウトするときに、そのブランチをプルしないようにすることができます。
その他のハイライトについては、拡張機能のchangelog for the 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 の Insiders バージョンでのみ有効になっています:
insiders.vscode.dev
。この機能は、現在github.dev
では無効になっています。
今後、これらの制限に対処し、Web 上での 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 プロジェクト内のすべてのファイルのリストを表示します。入力を開始して、目的のファイルをすばやく見つけることができます。
または、既存のファイルを選択...を使用して通常のファイルピッカーを使用してファイルを選択するか、新しいファイルパスを入力...を使用して作成する必要がある新しいファイルを指定できます。
この機能はまだ積極的に開発中ですので、ぜひ試してみてフィードバックをお寄せください!
Web用VS CodeにおけるWebAssemblies
vscode.devにプログラミング言語のサポートを追加するために、VS Code チームは、Web 用 VS Code で一般的なWebAssemblyを実行する方法を調査しています。このアプローチに興味があり、詳細を知りたい場合は、最近のVS Code と 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 提案 issue #176316に残してください。
静的ステータスバー項目
ステータスバー項目は、package.json#contributes/statusBarItems
を介して静的にコントリビュートできるようになりました。このコントリビューションポイントを使用すると、拡張機能はアクティベーションを遅延させ、ステータスバー項目が操作されたとき(たとえば、コマンドで)のみアクティベートできます。アクティベートされると、拡張機能はvscode.window.createStatusBarItem
API を介して静的ステータスバー項目にアクセスできます。
workspace.save および workspace.saveAs
Save Editor API 提案により、拡張機能はエディターをそのリソースに保存するか、ユーザーにリソースを提供するように要求するフローをトリガーできます。
保存のすべてのメソッドは、操作がキャンセルされた場合、結果のUri
またはundefined
を返します。パスが既に関連付けられていない限り、名前のないファイルは常にユーザーに宛先を尋ねます。
認証 authGetSessions 提案された API
複数の GitHub アカウントのサポートに近づくにつれて、拡張機能が特定のスコープセットに対してアクセス可能なすべてのセッションを取得できる、新しく提案された認証 API ができました。これらの API 追加の提案には、いくつかの特筆すべき点があります。
- 拡張機能がアクセスできる各アカウントのセッションを取得するための
vscode.authentication.getSessions
の導入。追加のアカウントをリクエストする場合は、{ createIfNone: true, clearSessionPreference: true }
を使用して、ユーザーにアカウントを選択するように要求します。 forceNewSession
プロパティは、{ sessionToRecreate: session }
オブジェクトを受け入れることができるようになり、使用する拡張機能は、再作成する正確なセッションを指定できます。- Auth Provider が実装する
createSession
関数は、再作成するセッション(forceNewSession
の値にtrue
が使用されている場合は、拡張機能のセッションプリファレンスを使用)で渡されるようになります。
GitHub 認証拡張機能で採用できるようにするには、まだ多くの作業が必要ですので、興味がある場合は、この提案を追跡する issue でフォローしてフィードバックを提供してください。
ウィンドウアクティビティ 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 は拡張機能ホストを再起動して、そのプロファイルに対して異なる拡張機能セットを実行するように処理します。
ただし、一部のカスタムエディターおよび Notebook エディターは、プロファイルを切り替えた後、必要な拡張機能がそのプロファイルにインストールされていないため、機能しなくなる可能性があります。エディターに未保存の変更がある場合、データが失われる可能性があります。修正として、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] 2023 年の http-equiv="X-UA-Compatible"
- 181889 treeView.reveal で expand: 3 を指定すると、最初のレベル 3 フォルダーのみが展開される
謝辞
最後になりましたが、VS Code のコントリビューターの皆様に心から感謝申し上げます。
Issue トラッキング
Issue トラッキングへの貢献
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @tamuratak (Takashi Tamura)
プルリクエスト
vscode
への貢献
- @akbyrd (Adam Byrd): msCompile problem matcher の問題を修正 PR #182167
- @ashgti (John Harrison): デバッグ出力プロンプトが「object Object」として表示されないように問題を修正 PR #181964
- @benibenj (Benjamin Simmonds): TreeView チェックボックスの状態が 0 に設定される問題を修正 PR #183342
- @bitekas (Viktor Korsun): Pseudoterminal onDidClose の例を修正 PR #180026
- @dan-petty (Daniel Petty): Windows で組み込みプロファイルのカスタムパスを指定できない問題を修正 PR #175464
- @dcourv (Dylan): #181207 を修正 - 拡張機能ビューアーの下部にパディングを追加 PR #181723
- @DoctorKrolic:
JSON Lines
言語定義を追加 PR #183035 - @dyedgreen (Tilman Roeder): 修正: フォルダーまたはワークスペースを開くときにパスを URI コンポーネントとしてエンコード PR #182398
- @ElectricRCAircraftGuy (Gabriel Staples): すべてのカラーテーマ: コメント docstring もコメントとして扱う PR #182162
- @gjsjohnmurray (John Murray)
security.restrictUNCAccess
設定の説明のスペルミスを修正 PR #182842- パスに親がない場合にワークスペースフォルダーピッカーでテキストが重複するのを防ぐ (#183418 を修正) PR #183427
- @hermannloose (Hermann Loose)
- 解決済みおよび未解決のコメントに個別の概要ルーラーの色を追加 PR #181520
- コメントアイコンの色の説明を修正 PR #181628
- @iAnujParajuli (Anuj Parajuli): #181652 html オーディオタグをオーディオファイルに追加 PR #183328
- @jacekkopecky (Jacek Kopecký)
- 固定幅タブの設定を追加 PR #181729
- 固定タブサイズ設定: 最後のタブが閉じられたときにタブ幅を復元 PR #183188
- @jackpunt (Ganesh)
- ファイル(複数可)を読み取り専用(非編集可能)としてマークする設定を追加PR #161716
- #181708 の isReadonly() の優先順位 PR #181955
- @jairbubbles (Julien Richard): 差分インラインモードで削除された行のコンテキストメニューを修正 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): 修正: 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
- #182702 を修正 PR #182705
- @ugultopu (Utku Gultopu): Git 拡張機能に類似性しきい値オプションを追加 PR #178266
- @vadimcn: ワークスペースの状態にブレークポイント ID を保持 PR #182704
- @Viijay-Kr (Vijaya Krishna): 修正: #169151 ブレークポイントがない場合はエディターホバーにフォールバック PR #181274
- @Yash-Singh1 (Yash Singh): feat: .vuerc を json ファイルとして PR #153017
- @yshaojun: 修正: unbalancedBracketScopes(#_168110) を追加して perl ブラケットペアを修正 PR #181203
vscode-css-languageservice
への貢献
- @romainmenke (Romain Menke): css ネスト: サポートを強化 PR #345
vscode-js-debug
への貢献
- @NotAndOr (notandor): ディレクトリジャンクションなしでユーザーデータディレクトリを指定してブラウザを起動。 PR #1656
vscode-pull-request-github
への貢献
- @kabel (Kevin Abel):
AuthProvider
enum を簡略化 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 lexer のハックを回避 PR #3887
- @spahnke (Sebastian Pahnke)
- @titouanmathis (Titouan Mathis): Webpack Plugin Fix CJS が ESM ファイルに注入される問題を修正 PR #3933