🚀 VS Code で で入手しましょう!

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 ビルドをダウンロードできます。

ワークベンチ

マージエディターの改善

競合のあるファイルからマージエディターを開く

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

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

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

古い競合デコレーターの復元

古いインライン競合デコレーターは無効化されなくなったため、マージエディターとインラインエクスペリエンスを一緒に使用できます。マージエディターを開くと、エディターツールバーをシングルクリックするだけで以前のエクスペリエンスを得ることができます。

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

ただし、新しいエクスペリエンスと古いエクスペリエンスはいつでも切り替えることができ、並行して使用することもできます。

チェックボックスの改善

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

差分アルゴリズムの改善

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

"mergeEditor.diffAlgorithm": "experimental",

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

今後の展望

今回のリリースでは、マージエディターの最も重要な UX の問題に焦点を当て、多くのバグを修正しました。新しいマージエディターにまだ戸惑っている場合は、ぜひご意見をお聞かせください! リポジトリに新しい Issue を作成し、スクリーンショットとマージエディターの状態(マージエディターの状態を 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 コントロールオーバーレイ機能を使用すると、Windows 11 の VS Code ユーザーは スナップレイアウト を選択して、デスクトップ上の VS Code を配置できます。

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

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

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

エディター

スティッキースクロール

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

  • エディター > スティッキースクロール: 最大行数 (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 を追加しました。

ターミナル

シェル統合の改善

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

スムーズスクロール

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

"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 を追加することで、この警告を無効にできるようになりました。

コメント

フィルター処理

コメントビューには、コメントテキストと解決済み/未解決状態によってフィルター処理できる新しいフィルターがあります。

エディター装飾

コメントエディターのガター装飾で codicon が使用されるようになり、新しいスタイルが適用されました。

言語

TypeScript 4.8

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

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

TypeScript ライブストリーム

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

VS Code livestreams page

拡張機能への貢献

Jupyter

Notebook 画像の貼り付け

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

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

Pylance を使用した Jupyter Notebook の IntelliSense の改善

Pylance を使用すると、Python カーネルを使用した Jupyter Notebook の IntelliSense のサポートが大幅に向上しました。Language Server Protocol のアップデートにより、Notebook のサポートが含まれるようになったためです。

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

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

Live Preview

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 拡張機能でさらに進捗がありました。これにより、プルリクエストと Issue の作業、作成、および管理が可能になります。このリリースのハイライトは次のとおりです。

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

その他のハイライトについては、拡張機能の 0.50.0 リリースの変更ログ を確認してください。

リモート開発

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

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

プレビュー機能

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

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

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

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

設定プロファイル

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

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

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

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

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

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

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

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

--profile-temp スイッチを使用して CLI から一時的な設定プロファイルを作成し、フォルダーまたはワークスペースに関連付けることもできます。以下のコマンドラインは、フォルダーを閉じた後に削除される一時プロファイルを使用して 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 にプッシュして別の場所で表示する必要がありました。このマイルストーンでは、編集セッション 統合を Continue Working On 機能に追加しました。これにより、コミットされていない変更が GitHub Codespace などのターゲット開発環境に自動的に移動します。

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

これを試すには、設定で "workbench.experimental.editSessions.enabled": true を設定し、設定同期 を有効にして、VS Code for the Web またはデスクトップで 編集セッション: サインイン コマンドを実行します。

VS Code for the Web を使用している場合、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 ドキュメント

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

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 コンテキストキー は、現在フォーカスされている WebView パネルの viewType を追跡します。when 句で使用して、WebView がフォーカスされているときにコマンドまたはメニュー項目を有効にできます。

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

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

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

開始するには、最初にプラグインを Web 対応にする必要があることを TypeScript に伝える必要があります。そのためには、main に加えて package.jsonbrowser エントリーポイントを追加します。

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

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

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

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

無効化されたツリー項目

有効化句が false に解決されるコマンドを持つツリー項目は、無効化された状態で表示されます。

Markdown Language Server

VS Code の Markdown サポートは、フル機能の Language Server として再実装されました。Matt Bierner の軌跡については、彼の Markdown Language Server ブログ記事 でお読みください。彼は、Markdown ファイルの すべての参照の検索シンボルの名前変更、および壊れたリンクの検出などのプログラミング言語機能の追加について説明しています。

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

8 月に、ツリービューの view/title メニューに提供されるコマンドのビューのツリーのフォーカスと選択を渡そうとしました。今回のリリースでは、一部の拡張機能で問題が発生したため、変更を元に戻しました。変更を戻して 9 月にリリースしたいと考えています。このアップデートが拡張機能を壊してしまう場合、またはこの動作が望ましくないと思われる場合は、issue #42903 にコメントを残してください。

デバッグアダプタープロトコル

「startDebugging」リクエストの提案

現在、VS Code は複数の同時デバッグセッションをサポートしていますが、Debug Adapter Protocol (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 のコントリビューターの皆様に心から感謝申し上げます。

Issue tracking

Issue tracking への貢献

Pull requests

vscode への貢献

vscode-extension-samples への貢献

devcontainers/cli への貢献