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 月版へようこそ。このバージョンには、気に入っていただけるであろう多くの更新が含まれています。主なハイライトは以下のとおりです。
- タイトルバーのカスタマイズ - メニューバー、コマンドセンター、レイアウトコントロールの表示/非表示。
- 選択範囲の折りたたみ - エディターで独自の折りたたみ領域を作成します。
- 検索の複数選択 - 複数の検索結果を選択して操作します。
- ツリービューの検索とフィルタリング - 検索エクスプローラーなどのツリービューで検索とフィルタリングを行います。
- ターミナルの改善 - シェル統合がデフォルトで有効になり、PowerShell のキーバインディングが拡張されました。
- コマンドラインオプション --merge - 3 者間マージエディターをデフォルトのマージツールとして使用します。
- ノートブック: 直近で失敗したセルに移動 - ノートブックのエラーに直接ジャンプします。
- Python の開始エクスペリエンス - VS Code 内で Python をすばやくインストールして構成します。
- スティッキースクロールプレビュー - 新しいスクロール UI に現在のソースコードのスコープが表示されます。
- 開発コンテナー CLI トピック - 更新された開発コンテナー CLI について学びます。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
リリースパーティーを見る: VS Code チームが新機能の一部を議論する様子を聞いてみましょう。イベントの録画は YouTube チャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
タイトルバーのカスタマイズがより簡単に
カスタムタイトルバー(Windows、macOS、Web 版のデフォルト)を使用している方は、タイトルバーにインタラクティブなコンテンツが増えていることにお気づきかもしれません。これらの要素を個別に非表示にする設定は既にありますが、タイトルバーを右クリックすると、メニューバー(macOS デスクトップでは非表示)、コマンドセンター、レイアウトコントロールを切り替えるコンテキストメニューにアクセスできるようになりました。

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

Linux ユーザーの場合、問題 #156397 により、タイトルバーの空のスペースを右クリックしてもコンテキストメニューは開きません。非表示にしたいタイトルバーの項目のいずれかを右クリックする必要があります。
メニューバーの折りたたみの改善
コマンドセンターの追加に伴い、スペースを確保するためにメニューバーをハンバーガーメニューに縮小しようとしました。ユーザーからのフィードバックを受けて、メニューのほとんどが折りたたまれるまで元のメニューバーの折りたたみ動作に戻し、その後でハンバーガーメニューに切り替えるようにしました。
macOS タイトルバーのズーム機能のアクセシビリティ
また、コマンドセンターのエクスペリエンスを向上させる一環として、macOS のタイトルバーにインタラクティブなコンポーネントがある場合、アクセシビリティ向上のためにタイトルバーが UI の残りの部分と一緒にズームされるようになりました。
選択範囲の折りたたみ
コマンド選択範囲から手動折りたたみ範囲を作成 (⌘K ⌘, (Windows、Linux Ctrl+K Ctrl+,)) は、現在選択されている行から折りたたみ範囲を作成し、それを折りたたみます。この範囲は手動折りたたみ範囲と呼ばれ、折りたたみプロバイダーによって計算された範囲の上に適用されます。
手動折りたたみ範囲は、コマンド手動折りたたみ範囲を削除 (⌘K ⌘. (Windows、Linux Ctrl+K Ctrl+.)) で再度削除できます。
手動折りたたみ範囲は、折りたたみに対するプログラミング言語のサポートがない場合に特に役立ちます。
折りたたみ範囲の保持
VS Code は、折りたたみ範囲が折りたたみプロバイダーによって計算された範囲の一部でなくなっても、折りたたみ範囲を保持するようになりました。典型的な例は、ユーザーがファイルをコメントアウトしたり、文字列リテラルを開始したり、すべての範囲を作成できなくなる構文エラーを作成したりする場合です。そのような折りたたみ範囲は「回復された」範囲になります。それらは、折りたたみプロバイダーが同じ場所に範囲を戻すか、手動折りたたみ範囲を削除コマンドを使用すると削除されます。
折りたたみコントロールの非表示
ガターの折りたたみコントロールは、設定 "editor.showFoldingControls": "never" で非表示にできるようになりました。折りたたみ範囲は、折りたたみコマンドとショートカットを使用して引き続き展開および折りたたみできます。
3 者間マージエディターの改善
新しい 3 者間マージエディターの改良を続け、このリリースでデフォルトで有効にしました。マージエディターは、ソース管理ビューで競合しているファイルをクリックすると開くことができます。
主なハイライトには、一方の側からのすべての変更を受け入れる新しいコマンド、改善されたコンテキストメニュー、強化された差分色、および競合する変更と競合しない変更の強調が含まれます。
また、マージの競合の精度を向上させるために、代替の差分アルゴリズムの検討も開始しました。差分またはマージエディターで最適ではない変更のハイライトや位置合わせに遭遇した場合は、これらのケースを 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
ファイルの装飾の検索
検索ビューの検索結果には、ファイルの右側にファイルの課題とソース管理情報を表すファイルの装飾と色が表示されるようになりました。これは、ファイルエクスプローラーに既に表示されているファイルの装飾に似ています。

複数選択の検索
検索ビューでも複数選択がサポートされるようになりました。選択した結果のいずれかに実行するアクション(たとえば、閉じるまたは置換)は、他の選択された項目にも実行されます。
ツリー検索コントロール
ファイルエクスプローラーなどのツリービューで、検索コントロールがサポートされるようになりました。ツリー内で ⌥⌘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"
}
「新規ファイル」による任意のファイルの作成
ファイル > 新規ファイル... (またはようこそページの新規ファイル...リンク) のエクスペリエンスが改善され、任意のファイルの作成が可能になりました。クイック入力ボックスにファイル名を入力して、ディスク上にファイルを作成できるようになりました。

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

テーマ: 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 を使用してシェル統合スクリプトを取得し、クロスプラットフォームで動作し、リモートウィンドウに接続されている場合でも機能します。つまり、dotfiles に同期すれば、そのまま動作するはずです。
# Manual install on bash
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"
その他のシェルへのシェル統合のインストール方法については、ターミナルシェル統合をご覧ください。
その他のシェル統合設定オプション
新しい設定 terminal.integrated.shellIntegration.decorationsEnabled を使用すると、コマンドの装飾を gutter、overviewRuler、またはどちらでもない場所に表示できます。簡単にアクセスできるように、装飾をクリックしたときに表示されるコンテキストメニューのコマンド装飾の構成からこの設定を変更できます(オプションのドロップダウンを表示するには表示の切り替えを選択します)。

ドロップダウンからデフォルト、成功、エラーのアイコンも設定できます。
デフォルトの色とアイコンのタブ設定
terminal.integrated.tabs.defaultIcon および terminal.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 を含むすべてのプラットフォームに適用されます。デフォルトは、pwsh プロファイルで Set-PSReadLineKeyHandler を使用していつでもリセットできます。期待する追加のキーバインディングがある場合は、お知らせください。
逆検索の代替としての最近のコマンドの実行
シェル統合が有効になっている場合、最近実行したコマンドがシェルの逆検索(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" },
複数行コマンドは、必要に応じて改行記号を表示し、ブラケット貼り付けモードも使用します。これは、サポートされているシェルでは貼り付けられたかのように扱われることを意味します。通常、これはそれらが個別に実行されるのではなく、すべて同じプロンプトに追加されることを意味します。

その他のシェル統合の改善点
シェル統合に関する細かい改善点は以下の通りです。
- 
コマンドナビゲーションの視覚的フィードバックが改善され、短時間「フォーカスボーダー」が表示され、その後ガターに持続的な長方形が表示されてバッファー内の位置を強調表示するのに役立ちます。  
- 
新しい workbench.action.terminal.copyLastCommandコマンドが利用可能になり、キーバインディングを使用して最後のコマンドの出力をコピーできます(Ctrl/Cmd+Shift+Up、Ctrl/Cmd+C、Escape、Ctrl/Cmd+End のショートカット)。
- 
Bash シェル統合 - より多くの $PROMPT_COMMAND形式がサポートされるようになりました。
- bash-preexecヘルパーがすでに使用されている場合でも、シェル統合はさらにうまく機能するはずです。
 
- より多くの 
描画の改善
GPU アクセラレーションが有効な場合、ターミナルの描画にいくつかの改善が加えられました。
- 
半円形の Powerline シンボルがカスタムレンダリングされるようになりました。前回のリリースのアローシンボルと同様に、これらは隣接するセルとシームレスに融合し、行の高さが使用されてもセルの高さまで拡張されます。  
- 
角が丸いボックス描画文字 ( ╭、╮、╰、╯) は、より滑らかな曲線を使用するようになりました。 
- 
背景色が変わったときのグリフのクリッピングが改善され、これは npmが警告を出力するときによく見られました。 
- 
上記のクリッピングの問題と同様に、一部のグリフのアンチエイリアシングが他の文字と重なり、視覚を劣化させる問題がありました。この問題は、上記のような背景の例を使用すると最も簡単に説明できます。`Work` の `k` のピクセルは、反対方向のセルの境界を逸脱することもあります。このピクセルは、背景とほぼ同じ色であるために削除されるため、グリフにはまったく表示されなくなります。  
ソース管理
アクションボタンの改善
ユーザーからのフィードバックに基づいて、ソース管理のアクションボタンの改良を続けました。
- 変更の同期アクションボタンは、ローカルブランチがリモート追跡ブランチより進んでいるか遅れているかが高度に確実である場合にのみ表示されます。
- コミットアクションボタンは、スマートコミット設定を考慮した変更されたリソースのリストに基づいてのみ有効になります。- 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 で実装し、他のデバッグアダプターもすぐにそれに続くはずです。
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 は自動タスク実行のフローを簡素化できます。デフォルトでは、フォルダーが信頼済みの場合、自動タスクが実行されます。それ以外の場合は、フォルダーごとに一度プロンプトが表示されます。この動作は、task.allowAutomaticTasks 設定 (デフォルトは auto) で、自動タスクを実行する前に常にプロンプトを表示するか (on)、表示しないか (off) を設定できます。
言語
JSON のフォーマット時に改行を維持
JSON ドキュメントで行をフォーマットするときに、最初の行位置を維持できるようになりました。たとえば、1 行に値を含む配列は、フォーマット後もこれらの値を同じ行に保持します。JSON ファイル内の余分な改行(newlines)も保持されます。この機能を有効にするには、設定エディターでJSON > フォーマット: 行を維持オプションを設定します。
ノートブック
直近で失敗したセルに移動
直近で実行したセルが失敗した場合、そのセルにジャンプするボタンが追加されました。同じアクションを実行するには、ノートブック: 直近で失敗したセルに移動を実行することもできます。
これは、セルグループを実行し、どのセルが失敗してグループの実行を停止したかを知りたい場合に便利です。
ノートブック Markdown プレビューの添付ファイルレンダリング
Jupyter ノートブック内に埋め込まれた base64 画像をレンダリングできるようになりました。
Jupyter ノートブックに貼り付けられ、 を介して参照された画像は、VS Code ノートブック内で意図どおりにレンダリングされるようになりました。
次の Markdown ソースコード

としてレンダリングされます

ノートブックリンクの共有
共有サブメニューのvscode.dev リンクをコピーコマンドがノートブックリンクをサポートするようになりました。
Web 用 VS Code
表示言語の設定
拡張機能ビューの言語パック拡張機能にある表示言語の設定ボタンを使用して、ブラウザの表示言語を設定できるようになりました。

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

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

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

自動デバッグ構成
Python 拡張機能は、現在のプロジェクトを分析し、追加の変更を必要としないデバッグ構成を提供する自動デバッグ構成をサポートするようになりました。
この拡張機能は、Django、Flask、FastApi プロジェクト、および単純な Python ファイルを認識します。
自動デバッグ構成と最近の改善点について詳しく学ぶことができます。
実験的拡張機能: WWBD
Python 環境ワークフローのアイデアのサンドボックスとして機能する新しい実験的 Python 拡張機能WWBD があります。現在、仮想環境用の環境を作成コマンドがあり、1 つのコマンドでユーザーが新しい仮想環境をセットアップできるかどうかが試されています(詳細およびその他の拡張機能については WWBD 拡張機能ページを参照してください)。conda のサポートなど、検討中の他のアイデアについては、プロジェクトリポジトリのアイデアカテゴリをご覧ください。
Jupyter
プロット画像をクリップボードにコピー
Jupyter 拡張機能で、セルの出力のプロットをクリップボードにコピーできるようになりました。現在、PNG 出力のみがサポートされているため、正しいプレゼンテーションが選択されていることを確認してください。

正しい表示タイプを設定したら、右上隅のクリップボードにコピーボタンを選択します。

Web拡張機能
以下の機能が Jupyter 拡張機能の Web バージョンに移植されました。
- プロットビューア
- データフレームビューアー
機能を試してみたい場合は、ローカルマシンからJupyterを起動してください。
jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net
その後、vscode.dev内からJupyter: 接続するJupyterサーバーを指定コマンドを使用してそれに接続します。
詳細 (およびコメント) については、このディスカッション項目を参照してください。
対話型ウィンドウの復元
interactiveWindow.restore 設定をオンにすることで、VS Code ウィンドウのリロード後も対話型ウィンドウセッションを復元できるようになりました。
制限事項: Raw カーネルの状態は、ウィンドウのリロード後も保持されません(詳細については、このディスカッション項目を参照してください)。リモート Jupyter サーバーを使用している場合、対話型ウィンドウはリロード時に以前のカーネルセッションに接続されます。
.env ファイルからの環境変数の読み込み
`.env` ファイルの変更検出を含む、`.env` ファイルからの環境変数の読み込みに関して多くの修正が行われました。Python カーネルは、`python.envFile` 設定で定義されたファイルから環境変数を読み込むようになりました。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 拡張機能は、プルリクエストとイシューの作業、作成、管理を可能にするもので、さらに進展がありました。このリリースのハイライトは以下のとおりです。
- 閲覧者が最後にレビューしてからのプルリクエストの変更のみを表示する新しいボタンが追加されました。
- ソース管理ビューの新しいコミット & プルリクエストを作成アクションにより、Git コミットを行い、1 つの手順でPR を作成ビューに移動できます。
- githubPullRequests.pullRequestDescription設定を使用して、PR の説明のソーステキストを構成できます。
その他のハイライトについては、拡張機能の 0.48.0 の変更ログを確認してください。
リモート開発
リモート開発拡張機能の作業が続けられています。これにより、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで学ぶことができます。
プレビュー機能
エディターのスティッキースクロール
スクロール中にユーザーがどのスコープにいるかを示す 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 nightly ビルドの使用を開始するには、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"
  }
]
Web 版 VS Code とデスクトップ版 VS Code 間での編集セッション
編集セッションの作業が継続されており、これにより Web 版 VS Code またはデスクトップ版 VS Code でリポジトリでの作業を継続する際に、コミットされていない変更を引き継ぐことができます。主なハイライトは以下のとおりです。
- 編集セッション機能をオフにすると、クラウドに保存されているすべての編集セッションを削除できるようになりました。
- 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 を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
- 最新のvscode-dtsを使用して、vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。
- これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
Webview のコンテキストメニュー
新しい Webview コンテキストメニューの提案により、高度なWebviewが、ユーザーが Webview 内を右クリックしたときに表示されるコンテキストメニューを簡単にカスタマイズできるようになります。この新しい貢献ポイントは VS Code の通常のコンテキストメニューを使用するため、カスタムメニューはエディターの残りの部分にぴったりと収まります。Webview は、Webview の異なるセクションに対してカスタムコンテキストメニューを表示することもできます。
この新しい API を試すには、contribWebviewContext 提案を有効にする必要があります。
"enabledApiProposals": [
  "contribWebviewContext"
]
Webview に新しいコンテキストメニュー項目を追加するには、menus の新しい webview/context セクションに新しいエントリを追加します。各貢献には command(タイトルもここから来ます)と when 句が必要です。コンテキストメニューが拡張機能の Webview にのみ適用されるように、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"
    },
    ...
  ]
}
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>内で右クリックすると、次のように表示されます。

ビューサイズ
ビューサイズ提案により、拡張機能は貢献するビューに重みを提供できます。
"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 を試して、ご意見をお聞かせください!
Debug Adapter Protocol
RunInTerminalRequest の argsCanBeInterpretedByShell
RunInTerminalRequest は新しいプロパティ argsCanBeInterpretedByShell をサポートしています。これは、コマンド args 内の特殊なシェル文字をエスケープせずに残すべきかどうかをクライアントに伝えます。これにより、ユーザーはターミナルで起動し、シェルによって解釈されるべき文字を含む起動構成を作成できます。
エンジニアリング
Electron サンドボックスサポートの進捗
このマイルストーンでは、Electron のサンドボックスをデフォルトで有効にするための実質的な進歩を遂げました。8 月には Insiders でサンドボックスを有効にし、最終的には安定版の VS Code でデフォルトにする予定です。
興味のある方のために、設定で "window.experimental.useSandbox": true を構成すると、サンドボックスモードが有効になります。変更に気付かないことを願っていますが、問題が見つかった場合は、弊社にご報告ください。
Markdown 言語サーバー
このイテレーションでは、VS Code の Markdown 記述ツール群の多くをライブラリと言語サーバーに抽出しました。これには、パス補完、ドキュメントアウトライン、診断のツールが含まれます。
VS Code の組み込み Markdown 拡張機能は、すでにこの新しい言語サーバーを使用するように切り替わっていますが、動作に違いは感じられないはずです。この切り替えにより、Markdown ツールが独自のプロセスに移動するため、パフォーマンスが向上するはずです。言語サーバーへの移行は、実験的な Markdown リンク診断のパフォーマンス向上にも役立ちました。
これらの新しいパッケージが他のツールやエディターにも役立ち、さらには貢献してもらえることを願っています。力を合わせれば、誰もがより良い Markdown ツールを構築できます!興味のある方は、関連プロジェクトをご覧ください。
- Markdown Language Service — Markdown の操作ツールを提供する TypeScript ライブラリです。
- Markdown Language Server — 言語サービスを使用して構築された Markdown 用の言語サーバーです。
Debian パッケージの依存関係
Debian パッケージの依存関係は、ハードコードされるのではなく、スクリプトによって生成されるようになりました。これにより、2016 年に報告された問題が解決され、一部のマシンで欠落している依存関係が原因でプログラムが実行時にクラッシュすることがありました。
ドキュメントと拡張機能
開発コンテナ CLI
開発コンテナ コマンドライン インターフェイス (CLI) トピックは、CLI の最新バージョンに合わせて更新されました。開発コンテナ CLI を使用すると、開発コンテナを構築および実行でき、開発コンテナ仕様のオープンソースリファレンス実装です。

Azure Developer CLI (azd)
Azure Developer CLI とその補完的なVS Code 拡張機能がパブリックプレビューになりました。Azure Developer CLI (azd) は、ローカル開発環境から Azure への時間を短縮し、ワークフローの主要な段階(コード、ビルド、デプロイ、監視、繰り返し)に対応する開発者向けのコマンドを提供します。

Azure Developer CLI は、Azure でアプリケーションを起動して実行するために必要なすべてを含む拡張可能なテンプレートを使用します。テンプレートには、ベストプラクティス、アプリケーションコード、および再利用可能なコードとしてのインフラストラクチャ資産が含まれています。さらに、それは「Hello World!」をはるかに超えるエンドツーエンドのシナリオをカバーしています。
Azure Developer CLI を使用すると、アプリケーションの初期化、プロビジョニング、デプロイを行うことができます。さらに良いことに、'azd up' を使用してこれらを 1 ステップで実行できます!サポートされている azd コマンドのリストについては、開発者 CLI リファレンスを参照してください。
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
vscodeへの貢献者
- @0evan (Evan Spensley): テスト装飾ラベルの区別 PR #155433
- @amanasifkhalid (Aman Khalid): Close #134566: ターミナルタブのデフォルトの色/アイコンの設定を追加 PR #147463
- @angelozerr (Angelo): カスタム言語で html 言語サーバーに貢献。 PR #146731
- @babakks (Babak K. Shandiz)
- 🎁 「スニペットで囲む」をクイックフィックスメニューに追加 PR #152718
- 🔨 名前にドットを含むファイルのマークダウン診断の問題を修正 PR #153206
 
- @Balastrong (Leonardo Montini): 警告メッセージを適切に表示 PR #154266
- @CGNonofr (Loïc Mangeonjean): モナコ コード アクション プロバイダーにトリガーとドキュメントを提供 PR #149937
- @eamodio (Eric Amodio): #54285 を閉じ、webview/context 貢献を追加 PR #154524
- @eltociear (Ikko Ashimine): languageDetectionWorkerServiceImpl.ts のtypoを修正 PR #155923
- @fadeevab (Alexander Fadeev): アップグレードされた文法(コンマ、コメント、シェバン)の Makefile テストを追加 PR #154625
- @FantasqueX (FantasqueX): 廃止された canceled を Cancellation Error に置き換え PR #156094
- @ferdnyc (Frank Dana)
- RPM: /usr/bin/code をパッケージが所有するようにする PR #142907
- .rpm パッケージ構築時の fakeroot ラッパーを削除 PR #153249
 
- @gjsjohnmurray (John Murray): 管理者として実行中にユーザータイプ Windows インストールの更新を防止しようと試みる (#_148428) PR #155631
- @jbicker (Jan Bicker): 間違った SignatureInformation.activeParameter コメントを修正 PR #155279
- @jeanp413 (Jean Pierre): TerminalExitStatus.reason の提案 PR #152833
- @jlelong (Jerome Lelong): 文字で始まるまたは終わる括弧ペアの区切り文字に単語境界を追加 PR #151204
- @joscol (Joshua Cole): CommentNode が本体テキストを変更し、同時に編集モードに入ることを許可 PR #155767
- @jzyrobert (ロバート・ジン)
- エクスプローラービューにすべて展開ボタンを追加 PR #153614
- showFoldingControls に never 設定を追加するために編集 PR #153764
 
- @liby (Bryan Lee): TypeScript での山括弧のマッチングと色分けのサポートを追加 PR #151705
- @mingwiki: Socks5 Proxy 正規表現チェックの警告を修正 PR #144954
- @MonadChains (MonadChains): 最後のコマンドの出力をコピーするコマンドを追加 (#_152097) PR #153235
- @nirabhromakhal (nirabhromakhal): 通知ビークに影響を与えることなくステータスバーがオーバーフローする問題を修正 PR #155649
- @PieterBranderhorst: 非表示の折りたたみ範囲を範囲プロバイダーから独立させ、手動折りたたみを追加... PR #139779
- @pingren (Ping)
- Fix #114461 PR #151824
- タブを折り返すときのタブの位置を修正 PR #156116
 
- @pwxn (Paul Landers): エディターを上/下にスクロールするコマンドを追加 PR #155861
- @qingpeng9802 (Qingpeng Li): es5 クラス互換性を削除 PR #153853
- @r3m0t (Tomer Chachamu)
- 展開時にテストエラーが表示されない問題を修正 PR #153994
- ワークスペースフォルダーの更新時にブレッドクラムを更新 PR #154616
 
- @SamirPS (SamirAk): コードスキャン: CodeQL Action v1 の非推奨化 PR #156271
- @ssigwart (Stephen Sigwart)
- エディターエリアのターミナルが再読み込みされない問題を修正 PR #151852
- サジェストウィジェットのハングを修正 PR #152011
- 検索エディターファイルフィルターのキーバインディングを追加 PR #153954
- スペース、次に line:col を含むターミナルリンクを検出 PR #153957
- Webview が表示された後にメニューショートカットが機能しない問題を修正 PR #154648
 
- @SvanT (Svante Boberg): 不足している処分を追加 PR #155976
- @yiliang114 (易良): fix: typos PR #155310
vscode-generator-codeへの貢献者
- @hawkticehurst (ホーク・タイスハースト)
- @MatejKastak: chore: 生成された package.json のインデントを統一 PR #357
- @nhedger (Nicolas Hedger): pnpm をパッケージマネージャーとして追加 PR #339
vscode-js-debugへの貢献者
- @Balastrong (Leonardo Montini): ネイティブの tostring が [object *] であるか二重チェック PR #1339
vscode-json-languageserviceへの貢献
- @bytemain (Artin): feat: 数値定数をサポート PR #141
- @octogonz (Pete Gonzalez): コメントに "//" が使用されている場合、「重複するオブジェクトキー」を報告しない PR #144
monaco-editorへのコントリビューション
- @alexander-zw (Alexander Wu): [webpack readme] 言語/機能の取得方法を追加 PR #3171
- @MasterOdin (Matthew Peveler): mysql の重複するテストケースを削除 PR #3138
- @tonilastre (Toni): クエリ言語 Cypher の設定とトークナイザーを追加 PR #3102