VS Codeのエージェントモードを拡張するには、を試してください!

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

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

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

Update 1.70.3: このアップデートはWindows 7ユーザーのみが利用でき、Windows 7をサポートする最後のリリースです。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | 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ユーザーの場合、問題 #156397のため、タイトルバーの空白部分を右クリックしてもコンテキストメニューは開きません。非表示にしたいタイトルバーの項目のいずれかを右クリックする必要があります。

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

コマンドセンターの追加に伴い、メニューバーをハンバーガーメニューに縮小してスペースを確保しようとしました。ユーザーからのフィードバックを受けて、メニューの大部分が折りたたまれるまでは以前のメニューバーの折りたたみ動作に戻し、その後でハンバーガーメニューに切り替えるようにしました。

macOSタイトルバーのズーム機能のアクセシビリティ

また、コマンドセンターの体験を向上させる一環として、macOSのタイトルバーにインタラクティブなコンポーネントがある場合、タイトルバーもUIの残りの部分と一緒にズームされ、アクセシビリティが向上しました。

折りたたむ選択範囲

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

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

手動折りたたみ範囲は、折りたたみに対するプログラミング言語のサポートがない場合に特に役立ちます。

折りたたまれた範囲を保持する

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

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

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

3-wayマージエディターの改善

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

ハイライトには、片側からのすべての変更を受け入れる新しいコマンド、改善されたコンテキストメニュー、強化された差分色、競合する変更と非競合の変更へのより大きな強調が含まれます。

また、マージの競合の精度を向上させるための代替差分アルゴリズムの検討も開始しました。差分エディターまたはマージエディターで最適でない変更のハイライトや配置に遭遇した場合は、これらのケースをGitHubイシュートラッカーに記録したいと思います!

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

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で設定した場合、VS CodeをGitのマージツールとして使用できます。

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

ファイル装飾の検索

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

Search file decorations

複数選択の検索

検索ビューも複数選択に対応しました。選択した結果の1つに対して実行する任意のアクション(たとえば、閉じるまたは置換)は、他の選択された項目にも実行されます。

ツリー検索コントロール

ファイルエクスプローラーなどのツリービューが、検索コントロールをサポートするようになりました。ツリー内で⌥⌘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 により、コマンドの装飾を gutteroverviewRuler、またはどちらにも表示しないかを選択できます。簡単にアクセスするには、装飾をクリックしたときに表示されるコンテキストメニューのコマンド装飾の構成からこの設定を変更できます(オプションのドロップダウンを表示するには表示の切り替えを選択します)。

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+UpCtrl/Cmd+CEscapeCtrl/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"がシェルに対して部分的にエスケープされているが、完全にはエスケープされていないことに気づきました。これは、プログラムに引数を渡そうとすると、誤ってシェルで特殊な動作がトリガーされる可能性があることを意味しました。これを整理した後、シェルにとって特別な意味を持つ文字を含む引数を設定することは有用なことであり、一部のユーザーがこの動作に依存していることに気づきました。

正しい修正方法について議論し、この動作はオプトインであるべきであり、デバッグアダプタプロトコル (DAP) への変更が必要であると決定しました。この変更をDAPに加え、VS Codeとjs-debugで実装し、他のデバッグアダプタもすぐにそれに続くはずです。

ノード起動構成で新しい動作を使用する方法は次のとおりです。

{
    "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"
  }
}

自動タスクフローの改善

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

言語

JSONのフォーマット時に改行を維持する

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

ノートブック

最も最近失敗したセルに移動

最後に実行されたセルが失敗した場合、そのセルにジャンプするボタンが追加されました。同じ操作を行うには、ノートブック: 最も最近失敗したセルに移動を実行することもできます。

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

ノートブックの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

Python環境のワークフローアイデアのサンドボックスとして機能する、WWBDという新しい実験的なPython拡張機能があります。現在、仮想環境用の環境作成コマンドがあり、1つのコマンドでユーザーが新しい仮想環境をセットアップできるかどうかを試しています(完全な詳細やその他の拡張機能については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: 接続するJupyterサーバーを指定コマンドを使用してそれに接続します。

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

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

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

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

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

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

GitHubのプルリクエストと課題

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

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

その他のハイライトについては、拡張機能の0.48.0の変更履歴をご覧ください。

リモート開発

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

新しい拡張機能の機能とバグ修正については、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拡張機能をインストールしてください。

設定プロファイル

過去数ヶ月間、コミュニティから最も人気のある要望の1つであるVS Codeの設定プロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled設定を介してInsidersリリースでプレビュー版として利用可能です。ぜひ試してみて、VS Codeリポジトリで課題を作成するか、課題 #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リポジトリで課題を作成するか、課題 #152913にコメントしてフィードバックをお寄せください。

コードアクションのリファクタリングプレビューも、新しいコードアクションコントロールからアクセスできます。有効な項目にカーソルを合わせると、プレビュー方法が表示されます。コードアクションの選択、および選択のプレビューにカスタムキーバインディングがサポートされています。

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

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

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

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

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

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

編集セッション体験の改善を続けていますので、ぜひお試しいただき、課題 #141293へのコメントでフィードバックをお寄せください。

拡張機能の作成

「when」句に対する「not in」演算子

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

htmlLanguageParticipants貢献ポイント

新しい貢献ポイントhtmlLanguageParticipantsにより、HTMLに似た言語は、コード補完、ホバー、アウトラインなどのすべてのHTML言語サーバー機能を継承したいと宣言できます。これは、完全な言語サーバーを実装したくないプログラミング言語拡張機能にとって便利です。

例として、組み込みのhandlebars拡張機能は、package.json内で自分自身をhtmlLanguageParticipantsに追加するようになりました。

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

Quarkus拡張機能はすでにこの貢献ポイントを採用しています。これは、組み込みのQute HTMLテンプレート言語に、追加の提案でHTML機能を強化します。

エディタAPIへのドロップ

テキストエディタのドロップAPIは、ファイルやその他のコンテンツをテキストエディタにドロップする処理を拡張機能に許可します。これらのドロップイベントは、VS Code内から発生することもあります(例えば、VS Codeのエクスプローラーからファイルをテキストエディタにドラッグする)、またはオペレーティングシステムからファイルをVS Codeにドロップすることによって生成されることもあります。

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

このAPIの簡単な使用例については、エディタへのドロップ拡張機能サンプルを参照してください。

提案されたAPI

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

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

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

ウェブビューコンテキストメニュー

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

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

"enabledApiProposals": [
  "contribWebviewContext"
]

ウェブビューに新しいコンテキストメニュー項目を追加するには、新しいwebview/contextセクションの下のmenusに新しいエントリを追加します。各貢献は、command(タイトルもそこから取得されます)とwhen句を受け取ります。コンテキストメニューが拡張機能のウェブビューにのみ適用されるように、when句には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"
    },
    ...
  ]
}

ウェブビュー内では、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が通常ウェブビューのコンテキストメニューに追加するコピーと貼り付けのエントリを非表示にする特殊なコンテキストです。

ユーザーが<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言語サーバー

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

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

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

Debianパッケージの依存関係

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

ドキュメントと拡張機能

開発コンテナCLI

dev container command-line interface (CLI) のトピックが、CLIの最新バージョンに更新されました。dev container CLIを使用すると、開発コンテナをビルドして実行でき、開発コンテナ仕様のオープンソース参照実装です。

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 でアプリケーションを起動して実行するために必要なすべてのものを含む拡張可能なテンプレートを使用します。これらのテンプレートには、ベストプラクティス、アプリケーションコード、再利用可能なインフラストラクチャ・アズ・コード資産が含まれています。さらに、単なる「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へのコントリビューション