に参加して、VS Code の AI 支援開発について学びましょう。

2022年8月 (バージョン 1.71)

アップデート 1.71.1: このアップデートでは、こちらのセキュリティ問題に対処しています。

アップデート 1.71.2: このアップデートでは、こちらの問題に対処しています。

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


Visual Studio Code 2022年8月リリースへようこそ。8月はVS Codeの多くのエンジニアが休暇を取る時期ですが、このバージョンにも皆さんに気に入っていただける多くのアップデートがあります。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

Workbench

マージエディターの改善

競合のあるファイルからのマージエディターのオープン

競合のあるファイルでは、テキストエディターとマージエディターを切り替えるためのマージエディターで開くボタンが自動的に表示されるようになりました。

マージエディターを開いてもファイルは変更されない

VS Codeは、マージエディターで結果ファイルを開いても(競合する領域がベースに置き換えられていた動作から変更され)、結果ファイルを変更しなくなりました。代わりに、競合マーカーはファイルに残りますが、結果ビューでは非表示になります。チェックボックスを使用して、競合マーカーをどちらかのサイド、両サイドの組み合わせ、またはチェックを外すことでベースに置き換えることができます。

以前の競合デコレーターの復元

古いインライン競合デコレーターは無効化されなくなったため、マージエディターとインライン体験を併用できます。マージエディターが開くと、エディターツールバーの1クリックで以前の体験に戻ることができます。

ソース管理ビューのファイル名の横にある同じアイコンをクリックすると、マージエディターを完全にスキップできます。

ただし、新しい体験と古い体験はいつでも切り替えることができ、並行して使用することも可能です。

チェックボックスの改善

競合がビューポートよりも大きい場合でも、競合のチェックボックスが常に表示されるようになりました。未処理の競合のチェックボックスを強調するために色が使用されます。

差分アルゴリズムの改善

競合の品質を向上させるために、代替の差分アルゴリズムの調査を開始しました。新しい実験的な差分アルゴリズムは、次の設定で有効にできます。

"mergeEditor.diffAlgorithm": "experimental",

この新しいアルゴリズムはまだパフォーマンス最適化されていませんが、多くのエッジケースでマージエディターの体験を向上させます。

今後の展望

このリリースでは、マージエディターの最も重要なUX問題に焦点を当て、多くのバグを修正しました。新しいマージエディターにまだ混乱している場合は、ぜひご意見をお聞かせください!リポジトリに新しい問題を作成し、スクリーンショットとマージエディターの状態(JSONとしてマージエディターの状態をコピーコマンドを使用)を共有してください。これまでにいただいたすべてのフィードバックに感謝しており、さらなるフィードバックは、誰もがマージエディターの体験を素晴らしいものにするのに役立ちます。

今後の作業では、独立したベースビュー競合の最小化、差分アルゴリズムの改良、およびその他の改善に焦点を当てます。

FFmpegコーデックのサポート

VS Codeの一部として提供されるFFmpeg共有ライブラリは、これまでFLACコーデックのみをサポートしていました。このリリースでは、ライブラリが以下のコーデックとコンテナのリストをサポートするように更新されました。これにより、ノートブックから、またはWebviewにオーディオとビデオを埋め込む拡張機能によって、より多くのオーディオおよびビデオファイルを再生できるようになります。

  • Vorbis
  • Flac
  • H.264
  • VP8
  • WAV
  • MP3
  • Ogg

テーマ: fairyfloss (vscode.devでプレビュー)

エクスプローラーでの名前変更選択の改善

ファイルの名前変更アクションを開始した後、F2キーを押すと、ファイル名、選択全体、ファイル拡張子の間を切り替えることができ、より柔軟なキーボードのみの操作が可能になります。

角丸ボタン

すべてのボタンのデザインを、当社のデザイン美学により合うように、わずかに角丸に更新しました。

An example of a button with rounded corners

テーマ: Material Theme Palenight High Contrast

Windowsでのウィンドウコントロールオーバーレイ

リリース1.68では、VS Codeは実験的なフラグの背後でElectronのウィンドウコントロールオーバーレイ機能サポートを採用し、デフォルトではオフでした。この機能に関するVS Codeに影響する残りの問題を解決し、Windowsのすべてのユーザーに対してデフォルトで有効にすることができました。

ウィンドウコントロールオーバーレイ機能により、Windows 11のVS Codeユーザーはスナップレイアウトを選択して、VS Codeをデスクトップに配置できます。

Windows Snap Layouts control in the right of the VS Code title bar

ツリービューの展開モード

ツリーノードがシングルクリックで展開するか、ダブルクリックで展開するかを制御する設定Workbench > Tree: Expand Mode (workbench.tree.expandMode) は、拡張機能によって提供されるツリービューでも尊重されるようになりました。

Editor

スティッキースクロール

スティッキースクロールは、ビューポートの上部に現在のスコープを表示します。この機能はもはや実験的なものではなく、設定でeditor.stickyScroll.enabledを介して有効にできます。さらなる改善点として以下があります。

  • Editor > Sticky Scroll: Max Line Count (editor.stickyScroll.maxLineCount) 設定で、表示する最大行数を設定できます。デフォルトの最大値は5行です。
  • スティッキースクロール内でCtrl/Cmd + クリックを使用して、定義に移動できます。

新しいコードアクションコントロール

コードアクションコントロールを完全に刷新しました。コードアクションのシンプルなメニューではなく、目的のコードアクションを見つけやすくするカスタムコントロールになりました。

The new Code Action control showing Quick Fixes and refactorings

新しいコントロールにより、VS Codeは追加情報を表示することもできます。たとえば、無効なコードアクションにマウスオーバーすると、無効になっている理由を知ることができます。

Hovering over a disabled Code Action to understand why it is disabled

次のコマンドのキーバインディングを変更することで、コードアクションリストをナビゲートするために使用されるキーボードショートカットをカスタマイズすることもできます。

  • selectNextCodeAction
  • selectPrevCodeAction
  • acceptSelectedCodeAction

今後、新しいコードアクションUIは、さらなるUX改善のための素晴らしい基盤を提供します。何か提案があれば、ぜひお知らせください!

サジェストのマッチングの設定

IntelliSenseのフィルタリングを設定するための新しい設定があります。デフォルトでは、最初の文字は単語の開始と一致する必要があります。たとえば、cconsoleまたはWebContextと一致しますが、descriptionとは一致しません。editor.suggest.matchOnWordStartOnly設定はこの動作を変更します。無効にすると、フィルタリングは任意の組み合わせを考慮します。これにより、結果が多くなりますが、フィルタリングはマッチング品質によって行われます。

以下の短いビデオでは、matchOnWordStartOnlyが無効になっている場合、「dir」のサジェストに「mkdir」や「makedirs」などの項目がより多く含まれていることがわかります。

ソース管理

コミットアクションボタンの改善

ユーザーは、git.postCommitCommand設定を使用して、コミット操作の成功後に実行される二次アクション(例: pullsync)をグローバルに制御できます。今回のマイルストーンでは、リポジトリごとに最後に実行された二次アクションを記憶できるようにする新しい設定git.rememberPostCommitCommandを追加しました。

ターミナル

シェル統合の改善

このリリースでは、シェル統合に以下の改善が加えられました。

  • Fishシェル統合は、実験的な手動インストールのみで利用可能です。インストール方法については、シェル統合のドキュメントを参照してください。
  • Windows版Git Bashシェル統合は、実験的な手動インストールのみで利用可能です。詳細については、手動インストールのセクションを参照してください。
  • 一般的な代替カレントワーキングディレクトリシーケンスのサポート: OSC 6 ; scheme://<cwd> STOSC 1337 ; CurrentDir=<cwd> STOSC 9 ; 9 ; <cwd> ST
  • さまざまなシェル統合のエッジケースのより良い処理。

スムーズスクロール

ターミナルはスムーズスクロールをサポートするようになりました。これは、エディターやリストと同様に、スクロール後に自分の位置を確認しやすくするために、短期間スクロールをアニメーション化します。スムーズスクロールを有効にするには、以下を設定してください。

"terminal.integrated.smoothScrolling": true

下線スタイルと色

下線スタイルと色は、元々kittyターミナルによって開拓されたエスケープシーケンスを使用してサポートされるようになりました。対応するプログラムの場合、これらの新しい下線は、VS Codeターミナルにこれらのシーケンスを送信する限り、自動的に点灯するはずです。

The terminal can now display straight, double, curly, dotted, and dashed underlines in any color

この変更には、GPUアクセラレーションが有効になっている場合の下線レンダリングの改善が含まれており、長いディセンダーを持つグリフと下線が重なることを回避します。

An example showing that characters with descenders such as 'g' and 'p' no longer overlap with underlines

ConPTYの未解決の問題により、下線スタイルと色は現在Windowsではサポートされていません。

レンダリングの改善

ターミナルレンダリングにいくつかの改善が加えられました。

  • ワークベンチが拡大または縮小されたときに、まれにぼやけを引き起こす長年のバグが修正されました!

    Text is now more crisp as canvas is no longer stretched, which caused anti-aliasing to look poorly

  • 最小コントラスト比が有効になっていて、比率を満たすためにテキストの輝度を反転する必要がある場合でも、テキストの色相が維持されるようになりました。

    Bold yellow text on red in some themes will now display as dark yellow instead dark grey

  • 新しいテーマキーterminal.inactiveSelectionBackgroundが利用可能になり、ターミナルがフォーカスされているかどうかにかかわらず、異なる選択背景色を表示してエディターとの整合性を高めることができます。

    Most themes now dim the selection background color when not focused

  • カスタムPowerlineグリフのレンダリングは、エッジのクリッピングが改善されました。これは半円文字で最も顕著で、今は滑らかな曲線になるはずです。

    Powerline glyphs are no longer cut off on the edges

タスク

ウィンドウリロード時の再接続

監視タスクは、ウィンドウのリロード時に再接続されるようになり、VS Codeのアップデートや拡張機能の状態変更時に中断することなく作業を継続できます。タスクの再接続はデフォルトで有効になっていますが、task.reconnection設定で無効にすることができます。

デバッグ

launch.jsonのsuppressMultipleSessionWarningオプション

起動構成でデバッグを開始しようとしたときに、その構成のデバッグセッションがすでにアクティブになっている場合、VS Codeは2番目のインスタンスを開始する前に警告ダイアログを表示します。これは誤って行われやすく、通常は意図したことではありません。ただし、同じ構成の複数のインスタンスを実行することがワークフローの一部である場合は、launch.json構成ファイルに"suppressMultipleSessionWarning": trueを追加することで、この警告を無効にできます。

コメント

フィルタリング

コメントビューに新しいフィルターが追加され、コメントテキストや解決済み/未解決の状態でフィルター処理できるようになりました。

エディターの装飾

コメントエディターのガター装飾は、codiconsを使用し、新しいスタイルになりました。

言語

TypeScript 4.8

VS CodeにはTypeScript 4.8.2が同梱されるようになりました。このメジャーアップデートでは、型チェックと推論の言語機能が改善されています。ツール面でも、いくつかのパフォーマンス向上とバグ修正が期待できます!

このアップデートの詳細については、TypeScript 4.8の発表をご覧ください。

TypeScriptライブストリーム

VS CodeのTypeScriptに関するライブストリームを見逃した場合は、Matt Pocockとの最近の2つのセッションをご覧ください。

VS Code livestreams page

拡張機能への貢献

Jupyter

ノートブックでの画像貼り付け

Jupyter拡張機能により、ユーザーはノートブック内のMarkdownセルにスクリーンショットや画像ファイルを貼り付けることができるようになりました。現在、image/png MIMEタイプのみがサポートされています。この機能を使用するには、以下の設定を追加/有効にしてください。

"ipynb.experimental.pasteImages.enabled": true
"editor.experimental.pasteActions.enabled": true

PylanceによるJupyter NotebooksのIntelliSenseの改善

言語サーバープロトコルの更新によりノートブックサポートが追加されたため、Pylanceを使用すると、Pythonカーネルを使用するJupyter NotebooksのIntelliSenseサポートが大幅に向上しました。

ノートブックファイルでPythonコードを記述する際のオートコンプリートオプションが改善されるだけでなく、変数抽出、メソッド抽出、シンボル名変更などのリファクタリング機能、および自動インポートやセマンティックハイライトも使用できるようになります。

テーマ: Horizon Extended (vscode.devでプレビュー)

ライブプレビュー

Live Preview拡張機能が、マルチルートワークスペースを正式にサポートするようになりました!以前から技術的にはマルチルートワークスペースでLive Previewを使用できましたが、現在はよりクリーンな実装でサポートされています。

Live Preview拡張機能は、マルチルートワークスペースの各ルートに対して新しいサーバーを起動するようになりました。したがって、プロジェクトのルートを基準としたリンク(/で始まるリンク)は、マルチルートワークスペースをプレビューする際に正しく機能します。

テーマ: GitHub Dark Dimmed (vscode.devでプレビュー)

Live Previewのステータスバーインジケーター(右下隅にあります)にマウスカーソルを合わせると、拡張機能によって開かれたサーバーを表示できます。下の画像では、各ワークスペース(ポート3000と3002)に対してサーバーが起動されており、開いているどのワークスペースにも属さないファイル(ポート3004)に対して別のサーバーが生成されています。

Live Preview multi-root ports displayed from the Status bar indicator

Live Preview拡張機能をインストールして、今すぐお試しください!📡✨🔎

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能は、プルリクエストとイシューの作業、作成、管理を可能にするもので、さらに進展がありました。このリリースのハイライトは以下のとおりです。

  • プルリクエストの通知。
  • レビューコメントは、プルリクエストの概要から直接解決済み/未解決にできます。

その他のハイライトについては、拡張機能の0.50.0リリースに関する変更履歴をご覧ください。

リモート開発

リモート開発拡張機能の作業が続けられています。これにより、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

新しい拡張機能の機能とバグ修正については、Remote Developmentリリースノートをご覧ください。

プレビュー機能

ファイルの移動や名前変更時に、Markdown内のリンクや画像を誤って壊してしまうことにうんざりしていませんか?新しいmarkdown.experimental.updateLinksOnFileMove.enabled設定をお試しください!

この新しい実験的な設定を有効にすると、VS Codeエクスプローラーでファイルを移動または名前変更したときに、Markdown内のリンクや画像が自動的に更新されます。

この新しい動作は、markdown.experimental.updateLinksOnFileMove.enabled設定を使用して有効にできます。markdown.experimental.updateLinksOnFileMove.externalFileGlobsを使用して、影響を受けるファイルの種類を制御できます。

この新機能をぜひお試しいただき、フィードバックを共有してください。

設定プロファイル

この数か月間、コミュニティからの最も人気のある要望の1つであるVS Codeでの設定プロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled設定を介してプレビューで利用できます。ぜひ試して、vscodeリポジトリに問題を作成するか、issue #116740にコメントしてフィードバックをお寄せください。

コマンドラインインターフェース

このマイルストーンでは、Settings Profilesのコマンドラインインターフェース(CLI)サポートを追加しました。--profile引数を使用してプロファイルの名前を渡し、そのプロファイルを使用してフォルダーまたはワークスペースを開くことができるようになりました。以下のコマンドラインは、「Web Development」プロファイルでweb-sampleフォルダーを開きます。

code ~/projects/web-sample --profile "Web Development"

指定されたプロファイルが存在しない場合、指定された名前で新しい空のプロファイルが作成されます。

一時的な設定プロファイル

フォルダーまたはワークスペースに一時的に作成および関連付けることができる一時的な設定プロファイルのサポートも追加されました。一時的なプロファイルは、どのフォルダーまたはワークスペースにも関連付けられていない場合、自動的に削除されます。

以下の短いビデオでは、ユーザーがフォルダーを開き、Settings Profiles: Create Temporary Settings Profileコマンドを選択すると、新しい「Temp 1」プロファイルが作成され、プロファイルリストに表示されます。フォルダーを閉じると、「Temp 1」プロファイルは削除されます。

また、CLIから--profile-tempスイッチを使用して、一時的な設定プロファイルを作成し、フォルダーまたはワークスペースに関連付けることもできます。以下のコマンドラインは、try-out-sampleフォルダーを、フォルダーを閉じた後に削除される一時的なプロファイルで開きます。

code ~/projects/try-out-sample --profile-temp

開発環境を移動する際に変更を持ち運ぶ

https://vscode.dev/github/microsoft/vscodeのようなGitHubまたはAzure Reposリポジトリを閲覧している場合、Continue Working Onコマンドを使用して、リポジトリで使用する異なる開発環境を選択できます。

以前は、仮想ワークスペースで保留中の編集があった場合、それらをGitHubまたはAzure Reposにプッシュしないと他の場所で表示できませんでした。今回のマイルストーンでは、Edit Sessions統合をContinue Working On機能に追加したため、コミットされていない変更が自動的にGitHub codespaceなどのターゲット開発環境に移動します。

以下のビデオでは、ユーザーがWeb版VS Codeを使用しているときにTypeScriptファイルに行った変更が、新しいGitHub codespaceを作成して作業を切り替えるときに適用されています。

これを試すには、設定で"workbench.experimental.editSessions.enabled": trueを設定し、設定同期を有効にして、Web版VS Codeまたはデスクトップ版でEdit Sessions: Sign Inコマンドを実行します。

Web版VS Codeを使用している場合、コミットされていない変更は、Continue Working Onを使用するときに次の環境に移動します。

  • GitHub Codespacesの新しいクラウドホスト型環境
  • GitHubリポジトリの新しいローカルクローン
  • 同じ仮想GitHubリポジトリを持つローカルVS Codeインスタンス

Remote Repositories拡張機能とともにデスクトップ版VS Codeを使用している場合、コミットされていない変更は、Continue Working Onを使用するときに次の環境に移動します。

  • GitHub Codespacesのクラウドホスト型環境(GitHub Codespaces拡張機能経由で利用可能)
  • GitHubリポジトリの新しいローカルクローン
  • コンテナボリューム内のGitHubリポジトリの新しいクローン(Dev Containers拡張機能経由で利用可能)
  • https://vscode.dev
  • リポジトリのクローンを含む既存のローカルフォルダ

拡張機能の作成

TerminalExitStatus.reason

拡張機能作成者は、新しいTerminalExitReason APIを介して、ターミナルが終了した理由についてより深い洞察を得られるようになりました。

export enum TerminalExitReason {
  Unknown = 0,
  Shutdown = 1,
  Process = 2,
  User = 3,
  Extension = 4
}

Enum設定のenumItemLabelsドキュメント

SettingsエディターのEnum設定はenumItemLabelsキーをサポートしており、拡張機能作成者がenum値に対応するドロップダウンに表示される値を指定できます。

Example of enumItemLabels with a mock setting. The select box displays the label value, and the dropdown options display both the label value and the enum value, though the enum values are rendered less prominently.

テーマ: Light Pink (vscode.dev でプレビュー)

新しいactiveWebviewPanelIdコンテキストキー

新しいactiveWebviewPanelId コンテキストキーは、現在フォーカスされているウェブビューパネルのviewTypeを追跡します。ウェブビューがフォーカスされているときにコマンドやメニュー項目を有効にするためにwhen句で使用できます。

"when": "activeWebviewPanelId == 'markdown.preview'"

WebでのTypeScriptサーバープラグイン

TypeScript言語サービスプラグインがWebでサポートされるようになりました。これは、typescriptServerPlugins貢献ポイントを使用して拡張機能によって貢献されるプラグインに適用されます。

開始するには、まず、package.jsonmainに加えてbrowserエントリーポイントを追加して、プラグインがWeb対応であることをTypeScriptに伝える必要があります。

"main": "out/main.js",
"browser": "out/main.browser.js"

browserエントリーポイントは、プラグインをアクティブ化するデフォルト関数をエクスポートするJavaScriptモジュールである必要があります。

export default function init(modules: { typescript: typeof import("typescript/lib/tsserverlibrary") }) {
  ...
};

Webでは、プラグインは通常のWebワーカー環境で実行されるため、fsなどのNode.js APIは使用できないことに注意してください。

無効なツリー項目

有効化句がfalseと評価されるコマンドを持つツリー項目は、無効として表示されます。

Markdown言語サーバー

VS CodeのMarkdownサポートは、フル機能の言語サーバーとして再実装されました。Matt BiernerMarkdown言語サーバーのブログ記事で、彼の道のりについて読むことができます。彼は、Markdownファイルに対してすべての参照を検索シンボル名の変更、壊れたリンクの検出などのプログラミング言語機能を追加する方法を説明しています。

'view/title'メニューのコンテキストに関する今後の変更

8月に、ツリービューのview/titleメニューに貢献されたコマンドに対して、ビューのツリーのフォーカスと選択を渡すことを試みました。このリリースでは、一部の拡張機能に問題を引き起こしたため、その変更を元に戻しました。9月にはこの変更を再度導入し、リリースしたいと考えています。このアップデートがあなたの拡張機能を壊す場合、またはこの動作が望ましくないと思われる場合は、issue #42903にコメントを残してください。

Debug Adapter Protocol

'startDebugging'リクエストの提案

現在、VS Codeは複数の同時デバッグセッションをサポートしていますが、Debug Adapter Protocol (DAP) は単一のセッションのみをカバーしています。つまり、プログラムで新しいデバッグセッションを作成することはDAPの一部ではなく、DAPまたはデバッグアダプターの外部、通常はデバッグアダプターを含むデバッグ拡張機能で行うことしかできません。この結果、子プロセスのデバッグなどのマルチセッション機能は、DAPクライアントがVS Code固有のデバッグ拡張機能ではなくデバッグアダプターを再利用するだけの非VS Code DAPクライアントでは容易に利用できません。

この状況を改善するため、デバッグアダプター内から新しいデバッグセッションを作成するための新しいリバースリクエストをDAPに追加することを計画しています。いくつかの議論を経て、startDebuggingリバースリクエストの提案を準備しました。デバッグ拡張機能またはDAPクライアントの作成者で、このDAPプロトコルへの追加に興味がある場合は、フィードバックをお待ちしております。

エンジニアリング

Electron 19へのアップデート

このマイルストーンでは、Electron 19をVS Codeデスクトップにバンドルするための調査を完了しました。Insidersでのセルフホスティングに携わったすべての方々に感謝いたします。このアップデートには、Chromium 102.0.5005.167とNode.js 16.14.2が含まれています。

Windows 7のサポート終了

Microsoftは2020年1月にWindows 7のサポートを終了しました。しかし、Electronはlibuvライブラリにパッチを適用することでWindows 7のサポートを継続していました。Electron 19へのアップデートに伴い、libuvパッチは機能しなくなりました。VS Codeデスクトップバージョンを使用するには、新しいWindowsバージョンにアップデートすることをお勧めします。VS Codeは今後、Windows 7で製品アップデートとセキュリティ修正を提供しません。Windowsのアップグレードの詳細については、support.microsoft.comをご覧ください。

注目すべき修正点

  • 115768 Windows: 異なるモニターで異なるズームレベルの場合、ウィンドウが正しい位置に復元されない
  • 133444 設定タブを別のエディターグループにドラッグすると検索クエリがクリアされる
  • 140305 メインウィンドウが複数の画面にまたがっている場合、再起動時に位置が復元されない
  • 146683 開く際のウィンドウレイアウトスタイルのバグ
  • 148492 ワークスペースファイルにプラットフォームに依存しないパスを使用
  • 154963 拡張機能のチュートリアルでのcodiconサポートを修正
  • 155341 データ書き込みが遅延するとVS Codeへのパイプ処理が失敗する
  • 156075 [Emmet] 言語ごとの「タブで展開をトリガー」
  • 156385 最近のコマンド実行で解決されたエイリアスが表示される - lsが実行されたコマンドに--color=autoを追加する

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-extension-samplesへの貢献

devcontainers/cliへの貢献

© . This site is unofficial and not affiliated with Microsoft.