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

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

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

検索結果の複数選択
検索ビューが複数選択をサポートするようになりました。選択した結果に対して実行するアクション(例:削除や置換)は、選択されている他の項目にも適用されます。
ツリー検索コントロール
ファイルエクスプローラーなどのツリービューが検索コントロールをサポートしました。ツリー内で⌥⌘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を使用してシェル統合スクリプトを取得するため、クロスプラットフォームで動作し、リモートウィンドウ接続時にも機能します。これにより、ドットファイルで同期させてそのまま使用できるようになります。
# 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でも利用可能です。デフォルトはいつでも 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" },
複数行のコマンドは必要に応じて新しい行のシンボルを表示し、括弧付き貼り付けモードも使用します。つまり、サポートされているシェルでは貼り付けたものとして扱われます。これは通常、個別に実行されるのではなく、すべて同じプロンプトに追加されることを意味します。

その他のシェル統合の改善
シェル統合への小規模な改善は以下の通りです。
-
コマンドナビゲーションの視覚的なフィードバックが向上し、「フォーカス境界」が短時間表示され、バッファ内の位置を強調するためにガター内に永続的な長方形が維持されます。

-
新しい
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.enableSmartCommitgit.suggestSmartCommitgit.smartCommitChanges
- コミットアクションボタンのアイコンは、ブランチ保護設定に基づいて更新されます。
git.branchProtectiongit.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ノートブックに貼り付けられ、 を介して参照される画像は、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
WWBDという新しい実験的なPython拡張機能があります。これはPython環境ワークフローのアイデアのためのサンドボックスとして機能します。現時点では、仮想環境のための環境の作成コマンドがあり、単一のコマンドがユーザーが新しい仮想環境をセットアップするのに役立つかどうかを確認できます(拡張機能のその他の詳細については、WWBD拡張機能ページを参照)。Condaサポートなど、検討されている他のアイデアについては、プロジェクトリポジトリのアイデアカテゴリをご覧ください。
Jupyter
プロット画像のクリップボードへのコピー
Jupyter拡張機能で、セル出力のプロットをクリップボードにコピーできるようになりました。現在PNG出力のみサポートされているため、正しいプレゼンテーションが選択されていることを確認してください。

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

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.json の htmlLanguageParticipants に自身を追加するようになりました。
"contributes": {
"htmlLanguageParticipants": [
{
"languageId": "handlebars"
}
]
}
Quarkus拡張機能はこのコントリビューションポイントを採用済みです。これは、埋め込まれたQute HTMLテンプレート言語の追加の提案でHTML機能を強化します。
エディターAPIへのドロップ
テキストエディタードロップAPIにより、拡張機能はファイルやその他のコンテンツをテキストエディターにドロップする操作を処理できるようになります。これらのドロップイベントは、VS Codeのファイルエクスプローラーからテキストエディターへのドラッグなど、VS Code内から来るか、オペレーティングシステムからVS Codeへのファイルドロップによって生成されます。
エディターにファイルをドロップするには、ユーザーはShiftを押しながらドラッグし、ファイル内の特定の場所にファイルをドロップします。この時点で、拡張機能はドロップされたデータに対して何を行うかを選択できます。
このAPIの動作の簡単な例については、エディターへのドロップ拡張機能サンプルを確認してください。
提案API
すべてのマイルストーンには新しい提案されたAPIが付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案されたAPIを試すための手順は以下のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposalsに追加してください。 - 最新のvscode-dtsを使用して、
vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。 - これで、提案された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>` の内部を右クリックすると、次のようになります。

ビューサイズ
ビューサイズ提案により、拡張機能はコントリビュートするビューに重みを提供できます。
"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ツールを構築しましょう!興味がある方は、関連プロジェクトをチェックしてください。
- Markdown Language Service — Markdownを操作するためのツールを提供するTypeScriptライブラリ。
- Markdown Language Server — 言語サービスを使用して構築されたMarkdown用の言語サーバー。
Debianパッケージの依存関係
Debianパッケージの依存関係が、ハードコードではなくスクリプトによって生成されるようになりました。これにより、一部のマシンで不足している依存関係が原因で実行時にプログラムがクラッシュするという2016年に提起された問題が解決されました。
ドキュメントと拡張機能
開発コンテナCLI
開発コンテナコマンドラインインターフェース (CLI) のトピックが、CLIの最新バージョン用に更新されました。開発コンテナCLIを使用すると、開発コンテナを構築および実行でき、これはDevelopment Containers Specificationのオープンソースリファレンス実装です。

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

Azure Developer CLIは、アプリケーションをAzureで実行するために必要なすべてを含む拡張可能なテンプレートを使用します。テンプレートには、ベストプラクティス、アプリケーションコード、再利用可能なInfrastructure as Code資産が含まれています。それだけでなく、「Hello World!」をはるかに超えるエンドツーエンドのシナリオをカバーしています。
Azure Developer CLIを使用すると、アプリケーションを初期化、プロビジョニング、デプロイできます。さらに良いことに、'azd up' を使用して1ステップで実行できます!サポートされている azd コマンドのリストについては、Developer CLIリファレンスを参照してください。
ありがとうございます
最後になりましたが、VS Code への貢献者の方々に心から感謝いたします。
イシュートラッキング
イシュートラッキングへの貢献
プルリクエスト
vscodeへの貢献
- @0evan (Evan Spensley): テスト装飾ラベルを区別する PR #155433
- @amanasifkhalid (Aman Khalid): #134566をクローズ: ターミナルタブのデフォルトの色/アイコンの設定を追加 PR #147463
- @angelozerr (Angelo): カスタム言語でhtml言語サーバーに貢献する PR #146731
- @babakks (Babak K. Shandiz)
- 🎁 "スニペットで囲む"をクイックフィックスメニューに追加 PR #152718
- 🔨 名前にドットを含むファイルのMarkdown診断の問題を修正 PR #153206
- @Balastrong (Leonardo Montini): 警告メッセージを適切に表示する PR #154266
- @CGNonofr (Loïc Mangeonjean): monacoコードアクションプロバイダーにトリガーとドキュメントを提供する PR #149937
- @eamodio (Eric Amodio): #54285をクローズ: webview/contextコントリビューションを追加 PR #154524
- @eltociear (Ikko Ashimine): languageDetectionWorkerServiceImpl.tsのタイプミスを修正 PR #155923
- @fadeevab (Alexander Fadeev): アップグレードされた文法のためのMakefileテストを追加: コンマ、コメント、shebang 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 (Robert Jin)
- エクスプローラービューに「すべて展開」ボタンを追加 PR #153614
- showFoldingControlsをnever設定を持つように編集 PR #153764
- @liby (Bryan Lee): TypeScriptにおける山括弧の一致とカラー化のサポートを追加 PR #151705
- @mingwiki: Socks5プロキシ正規表現チェックの警告を修正 PR #144954
- @MonadChains (MonadChains): 最後のコマンドの出力をコピーするコマンドを追加 (#_152097) PR #153235
- @nirabhromakhal (nirabhromakhal): 通知ビークに影響を与えずにステータスバーがオーバーフローできる問題を修正 PR #155649
- @PieterBranderhorst: 非表示の折りたたみ範囲を範囲プロバイダーから独立させ、手動折りたたみを…に追加 PR #139779
- @pingren (Ping)
- #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
- スペース、その後の行:列を含むターミナルリンクを検出 PR #153957
- webview表示後にメニューショートカットが機能しない問題を修正 PR #154648
- @SvanT (Svante Boberg): 不足しているdisposalを追加 PR #155976
- @yiliang114 (易良): 修正: タイプミス PR #155310
vscode-generator-codeへの貢献
- @hawkticehurst (Hawk Ticehurst)
- @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: 数値constのサポート 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