エージェント型開発を探求する -

2022年7月 (バージョン 1.70)

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

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

アップデート 1.70.3: このアップデートはWindows 7ユーザー専用であり、Windows 7をサポートする最後のリリースです。

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


Visual Studio Codeの2022年7月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるようなアップデートが多数含まれています。主なハイライトは以下の通りです。

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

リリースパーティーを見る: VS Codeチームが新機能について語る様子をお聞きください。YouTubeチャンネルでイベントの録画をご覧いただけます。

Insiders: 新機能をできるだけ早く試したいですか?ナイトリービルドのInsidersをダウンロードして、利用可能になった最新のアップデートを試すことができます。

ワークベンチ

タイトルバーのカスタマイズがより簡単に

カスタムタイトルバー(Windows、macOS、Webのデフォルト)を使用している方は、タイトルバーにインタラクティブなコンテンツが追加されていることにお気づきかもしれません。それぞれの要素を個別に非表示にする設定は既に存在していましたが、タイトルバーを右クリックすることで、メニューバー(macOSデスクトップでは非表示)、コマンドセンター、レイアウトコントロールを切り替えるコンテキストメニューにアクセスできるようになりました。

title bar context menu

システムのコンテキストメニューを期待するWindowsユーザーの場合、ウィンドウ左上のVS Codeアイコンを右クリックするか、Alt+Spaceキーを押すことで引き続きメニューを呼び出せます。Alt+Spaceで呼び出す際の動作はマウス位置に基づいているため、タイトルバーの上にマウスがある場合はカスタムメニューが表示されます。

system context menu

Linuxユーザーの場合、issue #156397のため、タイトルバーの空白部分ではコンテキストメニューが開きません。非表示にしたいタイトルバーのアイテムを直接右クリックする必要があります。

メニューバーの折りたたみの改善

コマンドセンターの追加に伴い、スペースを確保するためにメニューバーをハンバーガーメニューに縮小することを試みました。ユーザーからのフィードバックを受けて、メニューの大部分が折りたたまれるまで元のメニューバーの動作を維持し、それからハンバーガーメニューに切り替わるように変更しました。

アクセシブルなmacOSタイトルバーのズーム

コマンドセンターの体験向上の一環として、macOS上でタイトルバーにインタラクティブなコンポーネントが存在する場合、アクセシビリティ向上のためにタイトルバーもUIの他の部分と一緒にズームするようになりました。

選択範囲の折りたたみ

選択範囲から手動で折りたたみ範囲を作成コマンド(⌘K ⌘, (Windows, Linux Ctrl+K Ctrl+,))は、現在選択されている行から折りたたみ範囲を作成し、それを折りたたむものです。この範囲は手動折りたたみ範囲と呼ばれ、折りたたみプロバイダーによって計算された範囲よりも優先されます。

手動の折りたたみ範囲は、手動折りたたみ範囲を削除コマンド(⌘K ⌘. (Windows, Linux Ctrl+K Ctrl+.))で再度削除できます。

手動折りたたみ範囲は、プログラミング言語で折りたたみがサポートされていない場合に特に便利です。

折りたたみ範囲の保持

VS Codeは、折りたたみ範囲が折りたたみプロバイダーによって計算される範囲の一部でなくなった場合でも、その範囲を保持するようになりました。典型的な例として、ファイルをコメントアウトしたり、文字列リテラルを開始したり、構文エラーが発生して範囲の作成が不可能になったりした場合などが挙げられます。このような折りたたまれた範囲は「復元された」範囲となります。これらの範囲は、折りたたみプロバイダーが同じ場所の範囲を再度提供するか、手動折りたたみ範囲を削除コマンドを使用することで削除されます。

折りたたみコントロールの非表示

ガター内の折りたたみコントロールは、設定 "editor.showFoldingControls": "never" で非表示にできるようになりました。折りたたみ範囲は、引き続き折りたたみコマンドとショートカットを使用して展開および折りたたみが可能です。

3ウェイマージエディターの改善

新しい3ウェイマージエディターの磨き上げを続け、このリリースでデフォルトで有効にしました。マージエディターは、ソース管理ビューで競合しているファイルをクリックすることで開くことができます。

ハイライトには、片側のすべての変更を受け入れる新しいコマンド、コンテキストメニューの改善、diff色の強化、および競合する変更と競合しない変更の強調が含まれます。

また、マージ競合の精度を向上させるために、代替のdiffアルゴリズムの調査を開始しました。diffエディターやマージエディターで最適ではない変更の強調表示や配置に遭遇した場合は、GitHubのissueトラッカーで報告していただければ幸いです!

コマンドラインオプションによるマージ

コマンドラインオプションを使用して、VS Codeでマージエディターを開くことができるようになりました。

-m --merge <path1> <path2> <base> <result> Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.

これにより、例えば.gitconfigで設定することで、GitのマージツールとしてVS Codeを使用できるようになります。

[merge]
  tool = code
[mergetool "code"]
  cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED

検索のファイル装飾

検索ビューの検索結果に、ファイルの警告やソース管理情報を表すファイル装飾と色が右側に表示されるようになりました。これはファイルエクスプローラーで既に表示されているファイル装飾と同様のものです。

Search file decorations

検索結果の複数選択

検索ビューが複数選択をサポートするようになりました。選択した結果に対して実行するアクション(例:削除や置換)は、選択されている他の項目にも適用されます。

ツリー検索コントロール

ファイルエクスプローラーなどのツリービューが検索コントロールをサポートしました。ツリー内で⌥⌘F (Windows, Linux Ctrl+Alt+F)を押すと、検索コントロールがポップアップします。検索コントロールを使用して一致する要素を強調表示したり、フィルターボタンを切り替えて検索語と一致しないすべての要素を非表示にしたりできます。

注: ファイルエクスプローラーにフォーカスがあるときに⌥⌘F (Windows, Linux Ctrl+Alt+F)を呼び出してエディター内の検索コントロールを開くことに慣れている場合は、それに応じてキーバインドを設定できます。

{
  "key": "cmd+f", // "ctrl+f" on Windows/Linux
  "command": "-list.find",
  "when": "listFocus && listSupportsFind"
}

「新規ファイル」による任意のファイル作成

ファイル > 新規ファイル...(またはようこそページの新規ファイル...リンク)の体験が改善され、任意のファイル作成が可能になりました。クイック入力ボックスにファイル名を入力して、ディスク上にファイルを作成できます。

A input box with test.js inputted into it and the entry New File(test.js) selected

ターミナル

シェル統合がデフォルトで有効に

前回のリリースでプレビューから外れたシェル統合の自動注入が、デフォルトで有効になりました。サポートされているシェル設定(ほとんどのbash/zsh/pwsh構成)であれば、変更なしで機能し、コマンドの装飾が表示されるはずです。

When shell integration is enabled, blue, red and grey circles appear next to commands run in the terminal

テーマ: Sapphire Theme

: Windowsでは、シェル統合をサポートするためにPowerShell 7 (pwsh)が必要です。https://aka.ms/PSWindowsからインストールできます。

シェル統合機能が自動的に有効にならない場合は、手動インストールを設定する必要があります。これは今回のリリースで簡素化されています

自動注入は terminal.integrated.shellIntegration.enabled 設定が true になっているときに有効になります。この機能を無効にするには、settings.json ファイルに設定を追加してください。

"terminal.integrated.shellIntegration.enabled": "false"

これにより、VS Codeのシェル統合注入のみが無効になります。無効にした場合でも、VS Codeが理解できる別のターミナルでシェル統合が有効になっている設定であれば、引き続きそれらが使用されます。コマンドやスクロールバーの装飾が不要な場合は、表示のみを無効にすることができますが、シェル統合がもたらす追加機能は引き続き利用できます。

シェル統合の手動インストールを簡素化

以前の手動インストールは複数のステップが必要で、プラットフォームやシェルに特化していました。新しい手動インストールでは code CLIを使用してシェル統合スクリプトを取得するため、クロスプラットフォームで動作し、リモートウィンドウ接続時にも機能します。これにより、ドットファイルで同期させてそのまま使用できるようになります。

# Manual install on bash
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"

他のシェルへのシェル統合のインストール方法については、ターミナルのシェル統合をご覧ください。

シェル統合の設定オプションを追加

新しい設定 terminal.integrated.shellIntegration.decorationsEnabled により、コマンド装飾を gutter(ガター)、overviewRuler(概要ルーラー)、またはどちらにも表示しないかを選択できます。簡単にアクセスするには、装飾をクリックしたときのコンテキストメニューからコマンド装飾の構成を介してこの設定を変更できます(表示の切り替えを選択してオプションのドロップダウンを表示します)。

The command decoration context menu contains the new option Configure Command Decorations

ドロップダウンからデフォルト、成功、エラーのアイコンを設定することもできます。

デフォルトの色とアイコンのタブ設定

デフォルトのアイコンとターミナルのタブの色は、terminal.integrated.tabs.defaultIconterminal.integrated.tabs.defaultColor を使用してフォルダごとに設定できます。

PowerShellのキーバインドを拡張

シェル統合のおかげで、Ctrl+SpaceなどのPowerShellキーバインドが追加されました。これらは以前はVTエンコーディングの欠如により不可能でした。pwshでシェル統合が機能している場合、以下のキーバインドが機能するはずです。

  • Ctrl+Space - Windowsでのみデフォルトで MenuComplete になります。
  • Alt+Space - デフォルトで SetMark になります。
  • Shift+Enter - デフォルトで AddLine になります。
  • Shift+End - デフォルトで SelectLine になります。
  • Shift+Home - デフォルトで SelectBackwardsLine になります。

これはすべてのプラットフォームに適用され、通常これらのキーバインドが不可能なLinux/macOSでも利用可能です。デフォルトはいつでも Set-PSReadLineKeyHandler を使用してpwshプロファイルでリセットできます。さらに期待されるキーバインドがある場合は、お知らせください

シェル統合が有効になっている場合、「直近のコマンドを実行」機能がシェルの逆引き検索(Ctrl+R)のクロスシェル代替となることを目指しています。コマンドを呼び出す際にデフォルトとなる新しい連続検索モードがあります。これはほとんどのシェルでCtrl+Rのように動作し、あいまい検索に切り替えるオプションもあります。

新しい inTerminalRunCommandPicker コンテキストキーが利用可能で、次の候補へ移動するCtrl+Rのようなキーバインドを設定できます。例えば、以下のキーバインドはシェルの逆引き検索のかなり完全な代替となり、以前の動作へのフォールバックとしてCtrl+Alt+Rを使用できます。

{ "key": "ctrl+r",     "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" },
{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" },
{ "key": "ctrl+r",     "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" },
{ "key": "ctrl+c",     "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" },

複数行のコマンドは必要に応じて新しい行のシンボルを表示し、括弧付き貼り付けモードも使用します。つまり、サポートされているシェルでは貼り付けたものとして扱われます。これは通常、個別に実行されるのではなく、すべて同じプロンプトに追加されることを意味します。

Run recent command now shows the "Return Symbol" Unicode character (⏎, U+23CE) to visualize new lines

その他のシェル統合の改善

シェル統合への小規模な改善は以下の通りです。

  • コマンドナビゲーションの視覚的なフィードバックが向上し、「フォーカス境界」が短時間表示され、バッファ内の位置を強調するためにガター内に永続的な長方形が維持されます。

    A solid rectangle the color of your theme's focus color now appears to the left of the command being navigated to

  • 新しい workbench.action.terminal.copyLastCommand コマンドが利用可能になり、キーバインドで最後のコマンドの出力をコピーできます(Ctrl/Cmd+Shift+Up, Ctrl/Cmd+C, Escape, Ctrl/Cmd+End のショートカット)。

  • Bashシェル統合

    • より多くの $PROMPT_COMMAND 形式がサポートされました。
    • bash-preexec ヘルパーが既に利用されている場合でも、シェル統合はさらに適切に機能します。

レンダリングの改善

GPUアクセラレーションが有効な場合のターミナルレンダリングにいくつかの改善が加えられました。

  • 半円のPowerline記号がカスタムレンダリングされるようになりました。前回のリリースの矢印記号と同様に、隣接するセルとシームレスにブレンドされ、行の高さが使用されている場合でもセルの高さまで拡張されます。

    Semi-circle Powerline symbols now render without needing to configure a font

  • 角丸のボックス描画文字(, , , )がより滑らかな曲線を使用するようになりました。

    These round corner symbols now render as perfect 1/4 circles

  • 背景色が変更された際のグリフのクリッピングが改善されました。これはnpmが警告を出力する際に一般的に見られました。

    Wide characters like W would sometimes escape the background of a cell. For example, when the background of the text was yellow, the W in "WARN" could show unexpected yellow pixels in the top left. The After image shows that it is now fixed

  • 上記のクリッピングの問題と同様に、一部のグリフのアンチエイリアスが他の文字と重なり、視覚的な品質を低下させる問題がありました。この問題は、上記のような背景の例を使用して最も簡単に説明できます。Workkにあるピクセルが、反対方向にセルの境界から外れる可能性がありました。このピクセルは背景色とほぼ同じ色であるために削除され、グリフに表示されなくなります。

    A pixel in  could overlap with the cell to the right, in this case that pixel may not be rendered at all if the difference in color and the background is small

ソース管理

アクションボタンの改善

ユーザーフィードバックに基づいて、ソース管理アクションボタンの磨き上げを継続しました。

  • 変更の同期アクションボタンは、ローカルブランチがリモート追跡ブランチより進んでいるか遅れているかについて高い確信がある場合にのみ表示されます。
  • コミットアクションボタンは、スマートコミット設定を考慮しながら、変更されたリソースのリストに基づいて有効になります。
    • git.enableSmartCommit
    • git.suggestSmartCommit
    • git.smartCommitChanges
  • コミットアクションボタンのアイコンは、ブランチ保護設定に基づいて更新されます。
    • git.branchProtection
    • git.branchProtectionPrompt

リベース競合解決の改善

このマイルストーンでは、マージ競合を解決する際のリベースフローにおける小規模な問題に対処しました。すべてのマージ競合を解決した後、ソース管理ビューのコミットボタンを使用してリベース操作を続行できるようになりました。

コミット入力フィールドのスペルチェック

このマイルストーンでは、コミット入力フィールドでのスペルチェックをサポートするために必要なすべての拡張機能APIが利用可能であることを確認しました。人気の高い2つのスペルチェック拡張機能の作成者に連絡し、コミット説明テキストのスペルチェック機能を追加するためのプルリクエストを送信しました。

デバッグ

JavaScriptデバッグ

JavaScript/TypeScriptプログラムをデバッグするための起動構成を作成する際、"console": "integratedTerminal"を設定して、そのプログラムを(プロセスを直接生成するのではなく)ターミナルで実行できます。数ヶ月前、launch.json構成の"args"がシェルに対して部分的にエスケープされているが、完全にエスケープされていないことに気づきました。これは、プログラムに引数を渡そうとすると、誤ってシェルで特別な動作がトリガーされる可能性があることを意味していました。これを整理したところ、シェルにとって特別な意味を持つ文字を含む引数を設定することは有用であり、一部のユーザーがこの動作に依存していることに気づきました。

適切な修正について議論し、この動作をオプトインにすべきであり、Debug Adapter Protocol (DAP)への変更が必要であると結論付けました。DAPにこの変更を加え、VS Codeとjs-debugに実装しました。他のデバッグアダプターもすぐに追随するはずです。

Node起動構成で新しい動作を使用する方法は以下の通りです。

{
    "type": "node",
    "console": "integratedTerminal",
    ...

    // If you pass args as a single string, the characters will not be escaped for the terminal,
    // so the command in backticks will be evaluated, and output will be redirected to "outfile".
    // The user is responsible for knowing the type of shell that this will be run in,
    // and doing any escaping necessary.
    "args": "`echo hello` > outfile",

    // If you pass args as an array, the characters will be escaped for the terminal,
    // so that the program receives them verbatim.
    "args": ["`echo hello` > outfile"]
}

デバッグセッションのピッカー

デバッグ中、コマンドパレットからデバッグ: デバッグセッションの選択を実行できるようになりました。これにより、アクティブなデバッグセッションのピッカーが表示され、個々のデバッグセッションを検索およびフィルタリングできます。各ピッカー項目の説明には、該当する場合、それを生成したセッションが表示されます。

ピッカーで項目を選択すると、コールスタックビューでデバッグセッションにフォーカスされます。デバッグアクション(例:一時停止、ステップ実行、再起動、停止)はフォーカスされたデバッグセッションに対して実行されます。セッションを選択すると、そのセッションのデバッグコンソールも表示されます。

タスク

「タスクの実行」コマンドのフィルターサポート

タスク: タスクの実行 (workbench.action.tasks.runTask) アクションが、タスク名とタイプによるフィルタリングをサポートし、より簡潔で構成可能な方法でタスクを選択および実行できるようになりました。

例えば

{
  "key": "ctrl+h",
  "command": "workbench.action.tasks.runTask",
  "args": {
    "task": "VS Code - Build",
    "type": "npm"
  }
}

自動タスクフローの改善

信頼できるワークスペース機能により、VS Codeは自動タスクを実行するためのフローを簡素化できます。デフォルトでは、フォルダが信頼されている場合に自動タスクが実行され、それ以外の場合はフォルダごとに1回プロンプトが表示されます。この動作は、task.allowAutomaticTasks 設定(デフォルトは auto)を使用して、自動タスクを実行する前に常に(on)または決して(off)確認するように構成できます。

言語

JSONフォーマット時の改行の保持

JSONドキュメントの行をフォーマットする際、最初の行位置を保持できるようになりました。例えば、1行に値を含む配列は、フォーマット後もこれらの値を同じ行に保持します。JSONファイル内の余分な改行も保持されます。この機能を有効にするには、設定エディターで JSON > Format: Keep Lines オプションを設定してください。

ノートブック

直近の失敗セルへ移動

直近に実行したセルが失敗した場合、そのセルへジャンプするボタンが表示されるようになりました。ノートブック: 直近の失敗セルへ移動を実行して同じアクションを実行することもできます。

これは、一連のセルを実行し、どのセルが失敗してグループ実行が停止したかを知りたい場合に便利です。

ノートブックのMarkdownプレビューでの添付ファイルレンダリング

Jupyterノートブック内に埋め込まれたbase64画像をレンダリングできるようになりました。

Jupyterノートブックに貼り付けられ、![image alt-text](attachment:image.png) を介して参照される画像は、VS Codeノートブック内で意図した通りにレンダリングされます。

次のMarkdownソースコードは

Notebook Markdown cell source code with image link

以下のようにレンダリングされます

Notebool Markdown cell preview with attachment rendered

共有サブメニューのvscode.devリンクのコピーコマンドが、ノートブックリンクをサポートしました。

Web 版 VS Code

表示言語の設定

拡張機能ビューで言語パック拡張機能の表示言語の設定ボタンを使用して、ブラウザの表示言語を設定できるようになりました。

Set Display Language button on a language pack in the Extensions view

設定後は、現在設定されている言語パック拡張機能の表示言語のクリアボタンを使用して、表示言語をクリアできます。

Clear Display Language button on the current language pack in the Extensions view

拡張機能への貢献

Python

入門体験

Python拡張機能のウォークスルーにより、ユーザーが必要に応じてスムーズにPythonのインストールや選択に移行できるようになりました。Pythonがインストールされていない場合はMicrosoft Storeまたは適切なウォークスルータイルが開き、表示された指示を自動実行できます。インタープリターに関連するプロンプトは、ユーザーアクションがインタープリターを必要とする場合にのみ表示され、起動時には表示されません。また、UIプロンプトが改善され、エラーや推奨される変更についてより正確になりました。

Python in-product Get started walkthrough

ステータスバーのインタープリター情報

新しい設定 python.interpreter.infoVisibility が追加され、選択したインタープリターに関する情報がステータスバーに表示されるタイミングを制御できるようになりました。デフォルトでは、Python関連のファイルが開かれたときにのみインタープリター情報が表示されます(onPythonRelated)。これを always に設定すると、開いているファイルに関係なく選択したインタープリターが表示される以前の動作に戻せます。選択したインタープリターが無効な場合に状況を示す警告ステータスが追加されました。

Interpreter information in the Status bar

自動デバッグ構成

Python拡張機能は、現在のプロジェクトを分析し、追加の変更を必要としないデバッグ構成を提供する自動デバッグ構成をサポートしました。

拡張機能はDjango、Flask、FastApiプロジェクト、および単純なPythonファイルを認識します。

自動デバッグ構成最近の改善点の詳細については、こちらをご覧ください。

実験的拡張機能: WWBD

WWBDという新しい実験的なPython拡張機能があります。これはPython環境ワークフローのアイデアのためのサンドボックスとして機能します。現時点では、仮想環境のための環境の作成コマンドがあり、単一のコマンドがユーザーが新しい仮想環境をセットアップするのに役立つかどうかを確認できます(拡張機能のその他の詳細については、WWBD拡張機能ページを参照)。Condaサポートなど、検討されている他のアイデアについては、プロジェクトリポジトリのアイデアカテゴリをご覧ください。

Jupyter

プロット画像のクリップボードへのコピー

Jupyter拡張機能で、セル出力のプロットをクリップボードにコピーできるようになりました。現在PNG出力のみサポートされているため、正しいプレゼンテーションが選択されていることを確認してください。

Select image/png when copying plot to the clipboard

正しいプレゼンテーションタイプを設定したら、右上のクリップボードにコピーボタンを選択します。

Copy plot button

Web拡張機能

以下の機能がJupyter拡張機能のWebバージョンに移植されました。

  • プロットビューア
  • データフレームビューア

機能の実験をご希望の場合は、ローカルマシンからJupyterを以下のように起動し、

jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

そして、vscode.dev内でJupyter: Specify Jupyter server for connectionsコマンドを使用して接続します。

詳細情報(およびコメント)については、このディスカッション項目を参照してください。

インタラクティブウィンドウの復元

interactiveWindow.restore 設定をオンにすることで、VS Codeウィンドウの再読み込みをまたいでインタラクティブウィンドウセッションを復元できるようになりました。

制限事項: 未加工のカーネル状態はウィンドウの再読み込みをまたいで保持されません(詳細についてはこのディスカッション項目を参照してください)。リモートのJupyterサーバーを使用している場合、インタラクティブウィンドウは再読み込み時に以前のカーネルセッションに接続されます。

.envファイルからの環境変数の読み込み

.envファイルからの環境変数の読み込みに対して、.envファイルの変更検出を含むいくつかの修正が行われました。Pythonカーネルは、python.envFile 設定で定義されたファイルから環境変数を読み込むようになりました。

GitHub Pull Requests and Issues

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

  • ビューアの最後のレビュー以降のプルリクエストへの変更のみを表示する新しいボタンが追加されました。
  • ソース管理ビューの新しいコミットしてプルリクエストを作成アクションにより、Gitコミットを実行し、1ステップでプルリクエスト作成ビューに移動できるようになりました。
  • githubPullRequests.pullRequestDescription 設定を使用して、PR説明のソーステキストを構成できます。

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

リモート開発

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

リモート開発リリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。

プレビュー機能

エディターのスティッキースクロール

スクロール中にユーザーがどのスコープにいるかを表示するUIを表示できるようになりました。「スティッキースクロール」UIは、エディターの上部がどのクラス/インターフェース/名前空間/関数/メソッド/コンストラクター内にあるかを表示し、ドキュメント内の位置を把握するのに役立ちます。editor.experimental.stickyScroll.enabled 設定でスティッキースクロールを有効にします。

<video src="/assets/updates/1_70/sticky-scroll.mp4" autoplay loop controls muted title=""Sticky scroll" showing the source code scope for a TypeScript file">

TypeScript 4.8サポート

このアップデートには、次期TypeScript 4.8リリースのサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細については、TypeScript 4.8イテレーション計画を参照してください。

TypeScript 4.8ナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。

設定プロファイル

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

このマイルストーンでは、Web用VS Codeでも設定プロファイルのサポートを追加しました。insiders.vscode.devと、同じ workbench.experimental.settingsProfiles.enabled 設定を使用して試すことができます。

テーマ: Light Pink

タスクの再接続

ウィンドウの再読み込み時に、task.experimental.reconnection を有効にすることで監視タスクに再接続できるようになりました。これにより、拡張機能の変更やVS Codeのバージョン更新後の作業復帰が速くなります。

コードアクション

VS Codeでのコードアクションの体験を向上させるために取り組んできました。コードアクションには、リファクタリング、ソースアクション、クイックフィックスが含まれます。

新しい実験的なコードアクションコントロールは、コンテキストメニューからリファクタリングまたはソースアクションを選択するか、電球アイコンから、あるいはクイックフィックスを介して開くことができます。editor.experimental.useCustomCodeActionMenu 設定を介して試してみてください。VS Codeリポジトリでissueを作成するか、issue #152913にコメントしてフィードバックをお寄せください。

コードアクションのリファクタリングプレビューも、新しいコードアクションコントロールからアクセス可能です。有効な項目にマウスを合わせてプレビュー方法を確認してください。コードアクションの選択および選択のプレビューには、カスタムキーバインドがサポートされています。

このマイルストーンでは、クイックフィックス(⌘. (Windows, Linux Ctrl+.))を含むコードアクションのカスタムキーバインドのサポートを追加しました。希望するキーボードショートカットを指定した以下のスニペットを keybindings.json に追加して試すことができます。

[
  {
    "key": "ctrl+k",
    "when": "codeActionMenuVisible",
    "command": "focusPreviousCodeAction"
  },
  {
    "key": "ctrl+j",
    "when": "codeActionMenuVisible",
    "command": "focusNextCodeAction"
  }
]

Web用VS Codeとデスクトップ間での編集セッション

編集セッションに関する作業が続いています。これにより、Web用VS Codeやデスクトップ間でリポジトリの作業を継続する際に、コミットされていない変更を引き継ぐことができます。主なハイライトは以下の通りです。

  • 編集セッション機能をオフにするときに、クラウドに保存されたすべての編集セッションを削除できるようになりました。
  • Microsoft認証を使用したサインインがサポートされました。
  • 編集セッションの場所が見つからない場合は、編集セッション: 編集セッションを表示コマンドですべての編集セッションを表示できます。

編集セッションを試すには、設定で workbench.experimental.editSessions.enabled を設定し、編集セッション: 現在の編集セッションを保存コマンドを使用し、プロンプトが表示されたらGitHubまたはMicrosoft認証でサインインします。その後、別のマシンやVS Codeインスタンスのリポジトリで編集セッション: 最新の編集セッションを再開コマンドを使用して、変更されたすべてのファイルの作業内容をワークスペースに復元します。編集セッションは、編集セッション: サインアウトコマンドを使用していつでもサインアウトできます。

編集セッションの体験を反復し続ける中で、issue #141293のコメントを介してフィードバックを共有してください。

拡張機能の作成

'when'句の'not in'演算子

when句には既に in という演算子が存在し、配列やオブジェクト型の値を持つ別のコンテキストキー内でコンテキストキーの値を動的に検索できます。これを否定する新しい演算子 not in を追加しました。詳細については、when句のコンテキストドキュメントを参照してください。

htmlLanguageParticipantsコントリビューションポイント

新しいコントリビューションポイント htmlLanguageParticipants により、HTMLのような言語は、コード補完、ホバー、アウトラインなどのすべてのHTML言語サーバー機能を継承することを宣言できます。これは、完全な言語サーバーを実装したくないプログラミング言語拡張機能に役立ちます。

一例として、組み込みの handlebars 拡張機能が、package.jsonhtmlLanguageParticipants に自身を追加するようになりました。

"contributes": {
  "htmlLanguageParticipants": [
     {
       "languageId": "handlebars"
      }
    ]
}

Quarkus拡張機能はこのコントリビューションポイントを採用済みです。これは、埋め込まれたQute HTMLテンプレート言語の追加の提案でHTML機能を強化します。

エディターAPIへのドロップ

テキストエディタードロップAPIにより、拡張機能はファイルやその他のコンテンツをテキストエディターにドロップする操作を処理できるようになります。これらのドロップイベントは、VS Codeのファイルエクスプローラーからテキストエディターへのドラッグなど、VS Code内から来るか、オペレーティングシステムからVS Codeへのファイルドロップによって生成されます。

エディターにファイルをドロップするには、ユーザーはShiftを押しながらドラッグし、ファイル内の特定の場所にファイルをドロップします。この時点で、拡張機能はドロップされたデータに対して何を行うかを選択できます。

このAPIの動作の簡単な例については、エディターへのドロップ拡張機能サンプルを確認してください。

提案API

すべてのマイルストーンには新しい提案されたAPIが付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案されたAPIを試すための手順は以下のとおりです。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加してください。
  2. 最新のvscode-dtsを使用して、vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
  3. これで、提案されたAPIを使用してプログラムを作成できます。

提案されたAPIを使用した拡張機能は発行できません。次回のリリースで互換性のない変更が含まれる可能性があり、既存の拡張機能を壊すことは望ましくありません。

Webviewのコンテキストメニュー

新しいwebviewコンテキストメニューの提案により、高度なwebviewが、ユーザーがwebview内を右クリックしたときに表示されるコンテキストメニューを簡単にカスタマイズできるようになります。この新しいコントリビューションポイントはVS Codeの通常のコンテキストメニューを使用するため、カスタムメニューはエディターの他の部分とシームレスに調和します。Webviewは、webviewの異なるセクションに対してカスタムコンテキストメニューを表示することもできます。

この新しいAPIを試すには、 contribWebviewContext 提案を有効にする必要があります。

"enabledApiProposals": [
  "contribWebviewContext"
]

Webviewに新しいコンテキストメニュー項目を追加するには、新しい webview/context セクションの下の menus に新しいエントリを追加します。各コントリビューションは command(タイトルもここから来ます)と when 句を取ります。when句には、コンテキストメニューが拡張機能のwebviewにのみ適用されるように webview == 'YOUR_WEBVIEW_VIEW_TYPE' を含める必要があります。

"contributes": {
  "menus": {
    "webview/context": [
      {
        "command": "catCoding.yarn",
        "when": "webview == 'catCoding'"
      },
      {
        "command": "catCoding.insertLion",
        "when": "webview == 'catCoding' && webviewSection == 'editor'"
      }
    ]
  },
  "commands": [
    {
      "command": "catCoding.yarn",
      "title": "Yarn 🧶",
      "category": "Cat Coding"
    },
    {
      "command": "catCoding.insertLion",
      "title": "Insert 🦁",
      "category": "Cat Coding"
    },
    ...
  ]
}

Webview の内部では、`data-vscode-context` データ属性 (または JavaScript では `dataset.vscodeContext`) を使用して、HTML の特定の領域のコンテキストを設定することもできます。`data-vscode-context` の値は、ユーザーが要素を右クリックしたときに設定されるコンテキストを指定する JSON オブジェクトです。最終的なコンテキストは、ドキュメントルートからクリックされた要素までたどることで決定されます。

たとえば、この HTML を検討してください。

<div class="main" data-vscode-context='{"webviewSection": "main", "mouseCount": 4}'>
  <h1>Cat Coding</h1>

  <textarea data-vscode-context='{"webviewSection": "editor", "preventDefaultContextMenuItems": true}'></textarea>
</div>

ユーザーが textarea を右クリックすると、以下のコンテキストが設定されます。

  • webviewSection == 'editor' — これは親要素からの webviewSection をオーバーライドします。
  • mouseCount == 4 — これは親要素から継承されます。
  • preventDefaultContextMenuItems == true — これは、VS Codeが通常webviewコンテキストメニューに追加するコピーおよび貼り付けエントリを非表示にする特別なコンテキストです。

ユーザーが `<textarea>` の内部を右クリックすると、次のようになります。

Custom context menus showing in a webview

ビューサイズ

ビューサイズ提案により、拡張機能はコントリビュートするビューに重みを提供できます。

"contributes": {
    "views": {
        "github-pull-request": [
            {
                "id": "github:createPullRequest",
                "type": "webview",
                "name": "Create Pull Request",
                "size": 2
            },
            {
                "id": "github:compareChanges",
                "name": "Compare Changes",
                "size": 1
            }
        ]
    }
}

サイズはCSSプロパティ flex-grow と同様に機能します。上記の例では、"size": 2 のビューは "size": 1 のビューの2倍のサイズになります。サイズプロパティは、ビューコンテナが同じ拡張機能によってコントリビュートされた場合にのみ尊重されます。

拡張可能なHTMLノートブックレンダラー

組み込みのノートブックレンダラーが、HTMLコンテンツのレンダリングを拡張機能がカスタマイズできるようにする実験的APIを公開しました。このAPIは現在、HTMLコンテンツの初期レンダリング後に呼び出される postRender という単一のフックを公開しています。

この実験的APIを使用するには、拡張機能が vscode.builtin-renderer APIを拡張する必要があります。

"contributes": {
  "notebookRenderer": [
    {
      "id": "vscode-samples.my-custom-html-extension",
      "displayName": "My custom html renderer extension",
      "entrypoint": {
        "extends": "vscode.builtin-renderer",
        "path": "./out/main.js"
      }
    }
  ]
}

レンダラーは vscode-builtin-renderer にレンダリングフックを登録できます。

import type { RendererContext } from 'vscode-notebook-renderer';

export async function activate(ctx: RendererContext<void>) {
  const htmlRenderer = await ctx.getRenderer('vscode.builtin-renderer');
  if (!htmlRenderer) {
      throw new Error(`Could not load 'vscode.builtin-renderer'`);
  }

  htmlRenderer.experimental_registerHtmlRenderingHook({
    // Invoked after the HTML content for `outputItem` has been rendered to `element`
    postRender(outputItem: OutputItem, element: HTMLElement): HTMLElement | undefined {
      // You can either modify `element` or return a replacement element
    }
  });
}

この新しいAPIをテストして、感想をお聞かせください!

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

RunInTerminalRequestのargsCanBeInterpretedByShell

RunInTerminalRequest が新しいプロパティ argsCanBeInterpretedByShell をサポートしました。これは、コマンド args 内の特殊なシェル文字をエスケープ解除したままにするかどうかをクライアントに伝えます。これにより、ユーザーはターミナルで起動し、シェルによって解釈されるべき文字を含む起動構成を作成できます。

エンジニアリング

Electronサンドボックスサポートの進捗

このマイルストーンでは、Electronのサンドボックスをデフォルトで有効にするための実質的な進歩を遂げました。8月にInsiders向けにサンドボックスを有効にし、最終的にStable VS Codeでデフォルトにすることを目指しています。

興味のある方のために、設定で "window.experimental.useSandbox": true を構成するとサンドボックスモードが有効になります。何も変わっていないように見えることを期待しますが、問題が発生した場合は報告してください。

Markdown言語サーバー

このイテレーションでは、Markdownを作成するためのVS Codeのツールの大部分をライブラリおよび言語サーバーに抽出しました。これには、パス補完、ドキュメントアウトライン、診断のためのツールが含まれます。

VS Codeの組み込みMarkdown拡張機能は既にこの新しい言語サーバーの使用に切り替わっていますが、動作に違いはないはずです。この切り替えにより、Markdownツールが独自のプロセスに移動されるため、パフォーマンスの向上が期待できます。言語サーバーへの移行は、実験的なMarkdownリンク診断のパフォーマンスを向上させるのにも役立ちました。

他のツールやエディターもこれらの新しいパッケージの恩恵を受け、それらに貢献できるようになることを願っています。皆でより良いMarkdownツールを構築しましょう!興味がある方は、関連プロジェクトをチェックしてください。

Debianパッケージの依存関係

Debianパッケージの依存関係が、ハードコードではなくスクリプトによって生成されるようになりました。これにより、一部のマシンで不足している依存関係が原因で実行時にプログラムがクラッシュするという2016年に提起された問題が解決されました。

ドキュメントと拡張機能

開発コンテナCLI

開発コンテナコマンドラインインターフェース (CLI) のトピックが、CLIの最新バージョン用に更新されました。開発コンテナCLIを使用すると、開発コンテナを構築および実行でき、これはDevelopment Containers Specificationのオープンソースリファレンス実装です。

Banner from the Development Containers Specification website

Azure Developer CLI (azd)

Azure Developer CLIとその補完的なVS Code拡張機能がパブリックプレビューになりました。Azure Developer CLI (azd) は、コード、ビルド、デプロイ、監視、繰り返しのワークフローの重要な段階にマップされる開発者に優しいコマンドを提供することで、ローカル開発環境からAzureへの移行を加速します。

Azure Developer CLI extension

Azure Developer CLIは、アプリケーションをAzureで実行するために必要なすべてを含む拡張可能なテンプレートを使用します。テンプレートには、ベストプラクティス、アプリケーションコード、再利用可能なInfrastructure as Code資産が含まれています。それだけでなく、「Hello World!」をはるかに超えるエンドツーエンドのシナリオをカバーしています。

Azure Developer CLIを使用すると、アプリケーションを初期化、プロビジョニング、デプロイできます。さらに良いことに、'azd up' を使用して1ステップで実行できます!サポートされている azd コマンドのリストについては、Developer CLIリファレンスを参照してください。

ありがとうございます

最後になりましたが、VS Code への貢献者の方々に心から感謝いたします。

イシュートラッキング

イシュートラッキングへの貢献

プルリクエスト

vscodeへの貢献

vscode-generator-codeへの貢献

vscode-js-debug への貢献

vscode-json-languageservice への貢献

monaco-editor への貢献

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