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タグのリンクされた編集 - 開始タグと終了タグを同時に変更します。
- プレビュー: 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リモートで構成されている場合でも、開発環境間で転送できるようになりました。さらに、よりシームレスな移行のために、ソース管理ビューの状態設定など、追加のワークベンチ状態の転送を開始しました。
エディター
形式を選択して貼り付け
ファイルをテキストエディターに貼り付けるとき、複数の挿入方法があります。ファイルの絶対パスを指したい場合、現在のワークスペースからの相対パスを指したい場合、または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 shellの自動シェル統合
シェル統合とその強化されたユーザーエクスペリエンスが、fish shellで自動的にアクティブ化されるようになりました。これを利用するには、fishを更新する必要がある場合があります。
上線 (Overline) のサポート
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ブログでTypeScript 5.1について読むことができます。
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ツールでスクリーンショットを撮った場合、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
というファイルがあり、それを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方言では、Markdownドキュメントで生のHTMLタグを使用できます。今回の更新では、VS CodeのMarkdown IntelliSense機能のほとんどを、これらのHTMLタグで使用されるファイルパスに拡張しました。これには以下のサポートが含まれます
- パスの補完.
- リンクされたファイルへのすべての参照を検索。
- ファイルの名称変更または移動時のファイルパスの自動更新。
- F2を使用したファイルの安全な名称変更。
- リンクされたファイルがワークスペースに存在することの検証。
Markdownに音声を挿入
オーディオファイルをMarkdownドキュメントにドラッグ&ドロップまたはコピー&ペーストすると、VS Codeが<audio>
要素を挿入するようになりました。
JSON with Lines (JSONL) ファイルのシンタックスハイライト
JSON with Linesは、改行文字で区切られたJSONオブジェクトのシーケンスを記述します。ファイル拡張子jsonl
が使用されている場合、VS Codeはシンタックスハイライトを提供します。
リモート開発
Remote Development拡張機能を使用すると、開発コンテナー、SSH経由のリモートマシン、リモートトンネル、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- 新しいリモート接続 (リモートトンネル経由、開発コンテナーへ) を、現在のVS Codeウィンドウまたは新しいVS Codeウィンドウで開きます。
- 転送されたポートを公開するワークフローがより簡単に。
- Web版VS Code (vscode.dev) からWSLへの接続の暫定的なサポート。
Remote Developmentリリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。
拡張機能への貢献
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プルリクエストとIssuesの統合
GitHub Pull Requests and Issues拡張機能がインストールされ有効になっている場合、レビューのスレッドを表示中に、Copilotを使用してレビューコメントを直接適用できるようになりました。これは、コメントメニューのAIで提案を適用ボタンから実行できます。
実験的なクイック質問エクスペリエンス
テーマ: Panda Theme (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をシャットダウンした後にノートブックを再度開いた場合でも、セルがまだ実行中であれば、リモートJupyterカーネルに対するセルの実行を再開できるようになりました。
たとえば、リモートJupyterカーネルに対してモデルのトレーニングなどの長時間実行されるコードを実行しているとします。これは数分以上かかる可能性があるため、その間にVS Codeをシャットダウンすることに決めるかもしれません。数分後、同じノートブックが開かれた状態でVS Codeが再起動され、セルがまだ実行中であれば、この状態がノートブックセルに反映され、新しい出力がセル出力に表示されます。
一方、VS Codeがシャットダウン中にセルの実行が完了した場合、その間に生成された出力はノートブックに保持されません。このように実行を再開し、新しい出力を表示することは、プレーンテキスト、HTML、画像などの単純な出力に限定されます。ウィジェットやその他の複雑な出力の状態を復元することはサポートされていません。
GitHubプルリクエストとIssues
プルリクエストとIssueの作業、作成、管理ができるGitHub Pull Requests and Issues拡張機能について、さらに進展がありました。主なハイライトは次のとおりです
- チェックアウトされた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のInsidersバージョンである
insiders.vscode.dev
でのみ有効です。この機能は現在github.dev
では無効になっています。
今後これらの制限に対処し、Web上でのJavaScriptおよびTypeScriptサポートを継続的に強化していくことに期待しています!
ターミナル内の画像
ターミナル内の画像に対する実験的なサポートが追加されました。ターミナル内の画像は通常、画像ピクセルデータをテキストとしてエンコードし、特殊なエスケープシーケンスを介してターミナルに書き込むことで機能します。現在サポートされているプロトコルは、sixelとiTermが先駆けて導入したインライン画像プロトコルです。
この機能は設定で有効にできます
"terminal.integrated.experimentalImageSupport": true
有効にした後、テストするには、libsixelリポジトリから.six
のサンプルファイルをダウンロードしてcat
コマンドで表示できます
または、png、gif、jpgファイルと一緒にimgcat Pythonパッケージまたはimgcatスクリプトを使用できます
この機能の現在の制限事項は次のとおりです
- シリアル化が機能しないため、ターミナルをリロードしても画像は保持されません (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におけるWebAssembly
vscode.devにさらに多くのプログラミング言語サポートを追加するため、VS CodeチームはWeb版VS Codeで一般的なWebAssemblyを実行する方法を調査しています。このアプローチに興味があり、さらに詳しく知りたい場合は、最近のVS CodeとWebAssembliesのブログ記事を確認してください。
拡張機能作成
ローカルファイルに対するvscode.fsパフォーマンスの向上
vscode.fs
APIを使用してファイルを操作すると (そうすべきです!)、拡張ホストにローカルなファイルへの操作がはるかに高速に解決されるようになりました。
以前は、拡張ホストはこれらの操作を実行のためにVS Codeクライアントに委譲していましたが、現在は拡張ホスト内で直接実行されるため、ラウンドトリップが削減されます。
ステータスバーAPIの厳格化
ステータスバーアイテムを作成するAPIcreateStatusBarItem
は、拡張機能が識別子を渡すことを可能にします。この識別子は、ステータスバーアイテムの表示/非表示を制御するために使用されます。識別子は拡張機能に対して一意であるべきですが、これまでは強制されていませんでした。今回のリリースでこれをより厳格にし、同じ拡張機能によって同じ識別子で作成されたステータスバーアイテムは、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
});
共有プロバイダー
Share 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はそのプロファイル用の異なる拡張機能セットの実行を処理するために拡張機能ホストを再起動します。
しかし、一部のカスタムおよびノートブックエディターは、プロファイルを切り替えた後に、そのプロファイルに必要な拡張機能がインストールされていないために機能しなくなる場合があります。エディターに保存されていない変更がある場合、これによりデータ損失が発生する可能性があります。これを修正するために、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" in 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チェックボックスの状態が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): 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): 修正: shellIntegrationでbash構文をfish構文に変更 PR #181637
- @r3m0t (Tomer Chachamu)
- インタラクティブウィンドウ - 挿入ツールバーのためのスペースを空けない PR #181949
- インレイヒントとエディターコンテンツ間の合字を防止 (#170449を修正) PR #182379
- @rehmsen (Ole): デバッガーのステップ操作にF10キーバインディングを追加 (Webでも同様) PR #183510
- @soulshined (David Freer): PHPスニペットのQoLと継続性 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): 機能: .vuercをjsonファイルとして PR #153017
- @yshaojun: 修正: unbalancedBracketScopesを追加してperlの括弧ペアを修正(#_168110) PR #181203
vscode-css-languageservice
への貢献者
- @romainmenke (Romain Menke): css nesting : サポートを強化 PR #345
vscode-js-debug
への貢献者
- @NotAndOr (notandor): ディレクトリジャンクションなしでuser-data-dir引数を指定してブラウザを起動。 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レキサーのハックを避ける PR #3887
- @spahnke (Sebastian Pahnke)
- @titouanmathis (Titouan Mathis): Webpackプラグイン CJSがESMファイルに注入される問題を修正 PR #3933