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をすばやくインストールして構成します。
- Sticky Scrollプレビュー - 新しいスクロールUIで現在のソースコードスコープが表示されます。
- 開発コンテナーCLIトピック - 更新された開発コンテナーCLIについて学びます。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
リリースパーティを視聴: VS Codeチームが新機能の一部について語るのを聞いてください。イベントの録画は、YouTubeチャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
タイトルバーのカスタマイズがより簡単に
カスタムタイトルバー(Windows、macOS、およびウェブのデフォルト)を使用している方は、タイトルバーにインタラクティブなコンテンツが追加されていることに気づいたかもしれません。これらの要素を個別に非表示にする設定はすでにありますが、タイトルバーを右クリックしてコンテキストメニューにアクセスすると、メニューバー(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の課題トラッカーにこれらのケースを記録したいと思います!
コマンドラインオプションマージ
コマンドラインオプションを使用して、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を使用してシェル統合スクリプトを取得し、クロスプラットフォームでリモートウィンドウに接続されている場合でも機能します。つまり、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を含むすべてのプラットフォームに適用されます。デフォルトは、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が利用可能であることを確認しました。人気のスペルチェック拡張機能の作者に連絡を取り、コミット説明テキストのスペルチェックを提供するために拡張機能を更新する方法を示すプルリクエストを提出しました。
デバッグ
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は自動タスクの実行フローを簡素化できます。デフォルトでは、フォルダが信頼されている場合、自動タスクが実行され、それ以外の場合はフォルダごとに一度プロンプトが表示されます。この動作は、自動タスクを実行する前に常に(on
)または決して(off
)プロンプトを表示するかをtask.allowAutomaticTasks
設定(デフォルトauto
)で構成できます。
言語
JSON整形時の改行保持
JSONドキュメントで1行を整形する際に、最初の行の位置を保持できるようになりました。例えば、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環境ワークフローのアイデアのためのサンドボックスとして機能するWWBDという新しい実験的なPython拡張機能があります。現時点では、新しい仮想環境のセットアップをユーザーが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プルリクエストと課題
プルリクエストと課題の作業、作成、管理を可能にするGitHubプルリクエストと課題拡張機能にさらに進展がありました。このリリースのハイライトは次のとおりです。
- 閲覧者の最後のレビューからのプルリクエストの変更のみを表示する新しいボタンがあります。
- ソース管理ビューの新しいコミットとプルリクエストの作成アクションにより、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のナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。
設定プロファイル
この数ヶ月間、コミュニティから最も要望の多かった機能の一つであるVS Codeの設定プロファイルのサポートに取り組んできました。この機能は、Insidersリリースでworkbench.experimental.settingsProfiles.enabled
設定を介してプレビューとして利用できます。ぜひお試しいただき、VS Codeリポジトリで課題を作成するか、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 #152913にコメントしてフィードバックをお寄せください。
コードアクションのリファクタリングプレビューも、新しいコードアクションコントロールからアクセスできます。有効な項目にカーソルを合わせると、プレビュー方法が表示されます。コードアクションの選択やプレビューのために、カスタムキーバインディングがサポートされています。
このマイルストーンでは、クイックフィックス (⌘. (Windows, Linux Ctrl+.)) を含むコードアクションのカスタムキーバインディングも追加しました。keybindings.json
に希望のキーボードショートカットを含む以下のスニペットを追加することで試すことができます。
[
{
"key": "ctrl+k",
"when": "codeActionMenuVisible",
"command": "focusPreviousCodeAction"
},
{
"key": "ctrl+j",
"when": "codeActionMenuVisible",
"command": "focusNextCodeAction"
}
]
ウェブ版とデスクトップ版VS Code間での編集セッション
編集セッションの作業が継続されています。これにより、ウェブ版またはデスクトップ版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のExplorerからテキストエディターにファイルをドラッグする)もあれば、オペレーティングシステムから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
句を受け取ります。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を試して、ご意見をお聞かせください!
Debug Adapter Protocol
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ツールを構築できます!興味があれば、関連プロジェクトをチェックしてください。
- 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でアプリケーションを稼働させるために必要なすべてを含む拡張可能なテンプレートを使用します。テンプレートには、ベストプラクティス、アプリケーションコード、再利用可能なインフラストラクチャ・アズ・コード資産が含まれています。それだけでなく、「Hello World!」をはるかに超えるエンドツーエンドのシナリオをカバーしています。
Azure Developer CLIを使用すると、アプリケーションの初期化、プロビジョニング、デプロイが可能です。さらに良いことに、'azd up'
を使用すれば、これらをワンステップで行えます!サポートされているazd
コマンドのリストについては、Developer 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
- 🔨 名前にドットを含むファイルのMarkdown診断問題を修正 PR #153206
- @Balastrong (Leonardo Montini): 警告メッセージを適切に表示 PR #154266
- @CGNonofr (Loïc Mangeonjean): Monacoコードアクションプロバイダーにトリガーとドキュメントを提供 PR #149937
- @eamodio (Eric Amodio): Closes #54285 webview/contextの貢献を追加 PR #154524
- @eltociear (Ikko Ashimine): languageDetectionWorkerServiceImpl.tsのタイプミスを修正 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): Proposal 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)
- 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 (易良): 修正: タイプミス 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: 数値定数をサポート 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のconfigとトークナイザーを追加 PR #3102