2022年7月 (バージョン 1.70)
Update 1.70.1: この更新では、これらのissueに対処しています。
Update 1.70.2: この更新では、これらのissueに対処しています。
Update 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 で現在のソースコードのスコープを表示します。
- Dev Container CLI トピック - 更新された Dev Container CLI について学習します。
これらのリリースノートをオンラインで読むには、Updates on 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 ウェイマージエディターの改良を続け、このリリースでデフォルトで有効にしました。マージエディターは、ソース管理ビューで競合しているファイルをクリックすると開くことができます。
ハイライトには、一方の側のすべての変更を受け入れる新しいコマンド、改善されたコンテキストメニュー、強化された差分色、および競合と非競合の変更の強調表示が含まれます。
また、マージコンフリクトの精度を向上させるために、代替の差分アルゴリズムの調査を開始しました。差分エディターまたはマージエディターで最適ではない変更のハイライトまたは配置が発生した場合は、これらのケースを GitHub issue tracker に記録したいと思います。
コマンドラインオプション merge
コマンドラインオプションを使用して、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
検索ファイル装飾
検索ビューの検索結果に、ファイルの問題とソース管理情報を表現するために、右側にファイル装飾と色が表示されるようになりました。これは、ファイルエクスプローラーにすでに表示されているファイル装飾と同様です。
複数選択検索
検索ビューも複数選択をサポートするようになりました。選択範囲内の 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"
}
新しいファイルによる任意のファイル作成
[ファイル] > [新しいファイル...] ([ようこそ] ページの [新しいファイル...] リンク) エクスペリエンスが改善され、任意のファイル作成が可能になりました。クイック入力ボックスにファイル名を入力して、ディスクにファイルを作成できるようになりました。
ターミナル
デフォルトで有効になっているシェル統合
前回のリリースでプレビューから移行したシェル統合の自動挿入が、デフォルトで有効になりました。サポートされているシェルセットアップ (ほとんどの 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.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 回プロンプトが表示されます。この動作は、自動タスクを実行する前に常に (on
) または決して (off
) プロンプトを表示するように、task.allowAutomaticTasks
設定 (デフォルトは auto
) で構成できます。
言語
JSON のフォーマット時に改行を保持
JSON ドキュメントで 1 行をフォーマットするときに、初期行位置を保持できるようになりました。たとえば、1 行に値を含む配列は、フォーマット後も同じ行にこれらの値を保持します。JSON ファイル内の余分な改行 (改行) も保持されます。この機能を有効にするには、設定エディターで [JSON] > [フォーマット: 行を保持] オプションを設定します。
ノートブック
最近失敗したセルに移動
最後に実行したセルが失敗した場合、そのセルにジャンプするボタンが追加されました。[ノートブック: 最近失敗したセルに移動] を実行して、同じアクションを実行することもできます。
これは、セルグループを実行し、どのセルが失敗してグループの実行を停止したかを知りたい場合に役立ちます。
ノートブック Markdown プレビュー添付ファイルレンダリング
Jupyter ノートブック内で埋め込まれた base64 画像をレンダリングできるようになりました。
Jupyter ノートブックに貼り付けられ、
を介して参照される画像は、VS Code ノートブック内で意図したとおりにレンダリングされるようになりました。
次の Markdown ソースコード
次のようにレンダリングされます。
ノートブックリンクの共有
[共有] サブメニューの [vscode.dev リンクをコピー] コマンドで、ノートブックリンクがサポートされるようになりました。
VS Code for the Web
表示言語の設定
拡張機能ビューの言語パック拡張機能で使用可能な [表示言語の設定] ボタンを使用して、ブラウザーの表示言語を設定できるようになりました。
設定すると、現在設定されている言語パック拡張機能の [表示言語をクリア] ボタンを使用して、表示言語をクリアできます。
拡張機能への貢献
Python
始め方エクスペリエンス
Python 拡張機能のウォークスルーでは、ユーザーが必要な場合に Python のインストールと選択にスムーズに移行できるようになりました。Python がインストールされていない場合、Microsoft Store または適切なウォークスルータイルが開き、ユーザーは表示された手順を自動実行できます。インタープリターに関連するプロンプトは、ユーザーアクションがインタープリターを必要とする場合にのみ表示され、起動時には表示されません。また、UI プロンプトが改善され、エラーと提案された変更についてより正確になりました。
ステータスバーのインタープリター情報
新しい設定 python.interpreter.infoVisibility
が追加されました。これは、選択されたインタープリターに関する情報をステータスバーに表示するタイミングを制御します。デフォルトでは、インタープリター情報は Python 関連ファイルが開かれた場合 (onPythonRelated
) にのみ表示されます。always
に設定すると、選択されたインタープリターが開かれているファイルに関係なく表示される古い動作に戻すことができます。選択されたインタープリターが無効な場合を示す警告ステータスが追加されました。
自動デバッグ構成
Python 拡張機能は、現在のプロジェクトを分析し、追加の変更を必要としないデバッグ構成を提供する自動デバッグ構成をサポートするようになりました。
この拡張機能は、Django、Flask、FastApi プロジェクト、および単純な Python ファイルを認識します。
試験的な拡張機能: WWBD
Python 環境ワークフローのアイデアのサンドボックスとして機能する WWBD という名前の新しい試験的な 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: 接続用の Jupyter サーバーを指定] コマンドを使用して接続します。
詳細 (およびコメント) については、このディスカッション項目を参照してください。
インタラクティブウィンドウの復元
設定 interactiveWindow.restore
をオンにすると、VS Code ウィンドウの再読み込み間でインタラクティブウィンドウセッションを復元できるようになりました。
制限事項: 生のカーネル状態は、ウィンドウの再読み込み間で永続化されません (詳細については、このディスカッション項目を参照してください)。リモート Jupyter サーバーを使用している場合、インタラクティブウィンドウは再読み込み時に以前のカーネルセッションに接続されます。
.env ファイルからの環境変数の読み込み
.env
ファイルからの環境変数の読み込みに対して、.env
ファイルの変更の検出など、多くの修正が行われました。Python カーネルは、設定 python.envFile
で定義されたファイルから環境変数を読み込むようになりました。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 拡張機能の進捗状況がさらに進んでいます。この拡張機能を使用すると、プルリクエストと Issue の作業、作成、管理を行うことができます。このリリースのハイライトは次のとおりです。
- ビューアーの最後のレビュー以降のプルリクエストへの変更のみを表示する新しいボタンがあります。
- ソース管理ビューの新しい [コミット & プルリクエストの作成] アクションを使用すると、Git コミットを実行して、ワンステップで [PR の作成] ビューに移動できます。
githubPullRequests.pullRequestDescription
設定を使用して、PR 説明のソーステキストを構成できます。
その他のハイライトについては、拡張機能の 0.48.0 リリースの変更ログを確認してください。
リモート開発
Remote Development extensions の作業が続いています。これにより、コンテナー、リモートマシン、または 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 拡張機能をインストールしてください。
設定プロファイル
私たちは、コミュニティから最も要望の多かった機能の 1 つである、VS Code での設定プロファイルのサポートにここ数ヶ月取り組んできました。この機能は、Insiders リリースで workbench.experimental.settingsProfiles.enabled
設定を介してプレビュー利用可能です。ぜひお試しいただき、VS Code リポジトリで Issue を作成するか、issue #116740 にコメントしてフィードバックをお寄せください。
このマイルストーンでは、VS Code for the Web での設定プロファイルのサポートも追加しました。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"
}
]
VS Code for the Web とデスクトップを横断する Edit Sessions
Edit Sessions の作業が継続されています。これにより、VS Code for the Web またはデスクトップを横断してリポジトリでの作業を継続する際に、コミットされていない変更を持ち込むことができます。主なハイライトは次のとおりです。
- Edit Sessions 機能をオフにすると、クラウドから保存されているすべての Edit Sessions を削除できるようになりました。
- Microsoft 認証でのサインインがサポートされるようになりました。
- Edit Sessions の場所がわからない場合は、Edit Sessions: Show Edit Sessions コマンドを使用して、すべての Edit Sessions を表示できます。
Edit Sessions を試すには、設定で workbench.experimental.editSessions.enabled
を設定し、Edit Sessions: Store Current Edit Session コマンドを使用し、プロンプトが表示されたら GitHub または Microsoft 認証でサインインします。次に、別のマシンまたは VS Code インスタンスのリポジトリで Edit Sessions: Resume Latest Edit Session コマンドを使用して、すべての変更されたファイルの作業内容をワークスペースに復元します。Edit Sessions: Sign Out コマンドを使用すると、いつでも Edit Sessions からサインアウトできます。
Edit Sessions のエクスペリエンスを反復して改善し続ける中で、ぜひお試しいただき、issue #141293 にコメントでフィードバックをお寄せください。
拡張機能の作成
'when' 句のための 'not in' 演算子
when 句には、配列またはオブジェクト型の値を持つ別のコンテキストキー内でコンテキストキーの値を動的に検索できる演算子 in
がすでに存在します。これの否定となる新しい演算子 not in
を追加しました。詳細については、when 句コンテキストのドキュメントを参照してください。
htmlLanguageParticipants contribution point
新しい contribution point である htmlLanguageParticipants
を使用すると、HTML のような言語が、コード補完、ホバー、アウトラインなど、すべての HTML 言語サーバー機能を継承したいことを宣言できます。これは、完全な言語サーバーを実装したくないプログラミング言語拡張機能に役立ちます。
例としては、組み込みの handlebars
拡張機能があり、package.json
の htmlLanguageParticipants
に自身を追加するようになりました。
"contributes": {
"htmlLanguageParticipants": [
{
"languageId": "handlebars"
}
]
}
Quarkus 拡張機能は、すでにこの contribution point を採用しています。埋め込みの 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 内を右クリックしたときに表示されるコンテキストメニューを簡単にカスタマイズできます。この新しい contribution point は VS Code の通常のコンテキストメニューを使用するため、カスタムメニューはエディターの他の部分に適切に適合します。Webview は、webview のさまざまなセクションに対してカスタムコンテキストメニューを表示することもできます。
この新しい API を試すには、contribWebviewContext
提案を有効にする必要があります。
"enabledApiProposals": [
"contribWebviewContext"
]
新しいコンテキストメニュー項目を webview に追加するには、新しい webview/context
セクションの下の menus
に新しいエントリを追加します。各 contribution は、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 オブジェクトです。最終的なコンテキストは、ドキュメントルートからクリックされた要素までをたどることによって決定されます。
<div data-vscode-context='{"webviewSection": "container", "mouseCount": 4}'>
<div class="main" data-vscode-context='{"webviewSection": "main", "mouseCount": 4}'>
<h1>Cat Coding</h1>
<textarea data-vscode-context='{"webviewSection": "editor", "preventDefaultContextMenuItems": true}'></textarea>
</div>
たとえば、この HTML を考えてみましょう。
- ユーザーが
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
}
]
}
}
ビューのサイズ提案により、拡張機能は contribution するビューに重みを指定できます。
サイズは、CSS プロパティ flex-grow
と同様に機能します。上記の例では、"size": 2
のビューは、"size": 1
のビューの 2 倍のサイズになります。size プロパティは、ビューコンテナーが同じ拡張機能によって contribution されている場合にのみ尊重されます。
拡張可能な HTML Notebook レンダラー
組み込みの Notebook レンダラーは、拡張機能が HTML コンテンツのレンダリングをカスタマイズできる試験的な API を公開するようになりました。この API は現在、HTML コンテンツの初期レンダリング後に呼び出される単一のフックである postRender
を公開しています。
"contributes": {
"notebookRenderer": [
{
"id": "vscode-samples.my-custom-html-extension",
"displayName": "My custom html renderer extension",
"entrypoint": {
"extends": "vscode.builtin-renderer",
"path": "./out/main.js"
}
}
]
}
この試験的な API の使用を試すには、拡張機能が vscode.builtin-renderer
API を拡張する必要があります。
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
}
});
}
レンダラーは、vscode-builtin-renderer
にレンダリングフックを登録できます。
デバッグアダプタープロトコル
この新しい API を試して、ご感想をお聞かせください!
RunInTerminalRequest の argsCanBeInterpretedByShell
エンジニアリング
RunInTerminalRequest
は、新しいプロパティである argsCanBeInterpretedByShell
をサポートしています。これは、コマンド args
の特殊なシェル文字をエスケープせずに残す必要があるかどうかをクライアントに伝えます。これは、ターミナルで起動し、シェルによって解釈されるべき文字を含む起動構成をユーザーが記述できるようにするためです。
Electron サンドボックスサポートの進捗
このマイルストーンでは、デフォルトで Electron の サンドボックスを有効にすることに向けて大きな進歩がありました。8 月に Insiders 向けにサンドボックスを有効にし、最終的には Stable VS Code でデフォルトにすることを目指しています。
興味のある方は、設定で "window.experimental.useSandbox": true
を構成すると、サンドボックスモードが有効になります。何も変更に気付かないはずですが、問題が見つかった場合は、お知らせください。
Markdown Language Server
今回のイテレーションでは、Markdown を記述するための VS Code のツールの多くを、ライブラリと Language Server に抽出しました。これには、パス補完、ドキュメントアウトライン、および診断のためのツールが含まれます。
VS Code の組み込み Markdown 拡張機能は、すでにこの新しい Language Server を使用するように切り替えましたが、動作に違いは感じられないはずです。この切り替えにより、Markdown ツールが独自のプロセスに移動するため、パフォーマンスが向上するはずです。Language Server に移行したことで、試験的な Markdown リンク診断のパフォーマンスも向上しました。
- 私たちの願いは、他のツールやエディターもこれらの新しいパッケージから恩恵を受け、さらにはそれらに貢献できることです。皆様と一緒に、すべての人にとってより良い Markdown ツールを構築できます!ご興味のある方は、関連プロジェクトをご確認ください。
- Markdown Language Service — Markdown を扱うためのツールを提供する TypeScript ライブラリ。
Markdown Language Server — Language Server を使用して構築された Markdown 用の Language Server。
Debian パッケージの依存関係
ドキュメントと拡張機能
Debian パッケージの依存関係は、ハードコードではなくスクリプトによって生成されるようになりました。これにより、依存関係が欠落していると一部のマシンでプログラムがランタイム時にクラッシュする原因となっていた、2016 年に提出された Issue が解決しました。
Development Container CLI
Development Container コマンドラインインターフェース(CLI)のトピックが、CLI の最新バージョンに合わせて更新されました。Development Container CLI を使用すると、Development Container をビルドおよび実行でき、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 のコントリビューターの皆様に心から感謝申し上げます。
Issue の追跡
Simon Chan (@yume-chan)
プルリクエスト
vscode
への貢献- @0evan (Evan Spensley): テスト装飾ラベルを区別する PR #155433
- @amanasifkhalid (Aman Khalid): #134566 をクローズ: ターミナルタブのデフォルトの色/アイコンの設定を追加 PR #147463
- @angelozerr (Angelo): カスタム言語で html language server に貢献する。 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 contribution を追加 PR #154524
- @eltociear (Ikko Ashimine): languageDetectionWorkerServiceImpl.ts のタイプミスを修正 PR #155923
- @fadeevab (Alexander Fadeev): アップグレードされた文法(カンマ、コメント、shebang)の Makefile テストを追加 PR #154625
- @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): Proposal TerminalExitStatus.reason PR #152833
- @jlelong (Jerome Lelong): 文字で始まるまたは終わる括弧ペア区切り文字に単語境界を追加 PR #151204
- @joscol (Joshua Cole): CommentNode が本文テキストを変更し、同時に編集モードに入ることを許可 PR #155767
- @jzyrobert (Robert Jin)
- エクスプローラービューに [すべて展開] ボタンを追加 PR #153614
- 折りたたみコントロールの表示を [なし] 設定にする編集 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): 不足している破棄処理を追加 PR #155976
- @yiliang114 (易良): fix: タイプミス 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: number const をサポート PR #141
- @octogonz (Pete Gonzalez): "//" がコメントに使用されている場合、"Duplicate object key" を報告しない PR #144
monaco-editor
への貢献
- @alexander-zw (Alexander Wu): [webpack readme] languages/features を取得する方法を追加 PR #3171
- @MasterOdin (Matthew Peveler): mysql の重複するテストケースを削除 PR #3138
- @tonilastre (Toni): クエリ言語 Cypher の構成とトークナイザーを追加 PR #3102