2022年7月 (バージョン 1.70)
Update 1.70.1: このアップデートでは、これらの問題に対処しています。
Update 1.70.2: このアップデートでは、これらの問題に対処しています。
Update 1.70.3: このアップデートはWindows 7ユーザーのみが利用でき、Windows 7をサポートする最後のリリースです。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の2022年7月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くのアップデートが含まれており、主なハイライトは以下の通りです。
- タイトルバーのカスタマイズ - メニューバー、コマンドセンター、レイアウトコントロールの表示/非表示。
- 折りたたみ選択 - エディター内で独自の折りたたみ領域を作成します。
- 検索での複数選択 - 複数の検索結果を選択して操作します。
- ツリービューの検索とフィルタリング - 検索エクスプローラーなどのツリービューで検索とフィルタリングを行います。
- ターミナルの改善 - シェル統合がデフォルトでオンになり、PowerShellのキーバインディングが拡張されました。
- コマンドラインオプション --merge - 3-way マージエディターをデフォルトのマージツールとして使用します。
- ノートブック: 最も最近失敗したセルに移動 - ノートブックのエラーに直接ジャンプします。
- 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ユーザーの場合、問題 #156397のため、タイトルバーの空白部分を右クリックしてもコンテキストメニューは開きません。非表示にしたいタイトルバーの項目のいずれかを右クリックする必要があります。
メニューバーの折りたたみ機能の改善
コマンドセンターの追加に伴い、メニューバーをハンバーガーメニューに縮小してスペースを確保しようとしました。ユーザーからのフィードバックを受けて、メニューの大部分が折りたたまれるまでは以前のメニューバーの折りたたみ動作に戻し、その後でハンバーガーメニューに切り替えるようにしました。
macOSタイトルバーのズーム機能のアクセシビリティ
また、コマンドセンターの体験を向上させる一環として、macOSのタイトルバーにインタラクティブなコンポーネントがある場合、タイトルバーもUIの残りの部分と一緒にズームされ、アクセシビリティが向上しました。
折りたたむ選択範囲
コマンド選択範囲から手動折りたたみ範囲を作成(⌘K ⌘, (Windows, Linux Ctrl+K Ctrl+,))は、現在選択されている行から折りたたみ範囲を作成し、それを折りたたみます。この範囲は手動折りたたみ範囲と呼ばれ、折りたたみプロバイダーによって計算された範囲の上に位置します。
手動折りたたみ範囲は、コマンド手動折りたたみ範囲を削除(⌘K ⌘. (Windows, Linux Ctrl+K Ctrl+.))でもう一度削除できます。
手動折りたたみ範囲は、折りたたみに対するプログラミング言語のサポートがない場合に特に役立ちます。
折りたたまれた範囲を保持する
VS Codeは、折りたたみ範囲が折りたたみプロバイダーによって計算された範囲の一部でなくなった場合でも、折りたたみ範囲を保持するようになりました。典型的な例は、ユーザーがファイルをコメントアウトしたり、文字列リテラルを開始したり、すべての範囲を作成できなくする構文エラーを作成したりする場合です。このような折りたたみ範囲は「回復された」範囲になります。これらは、折りたたみプロバイダーが同じ場所で範囲を戻すか、手動折りたたみ範囲を削除コマンドを使用すると削除されます。
折りたたみコントロールの非表示
ガター内の折りたたみコントロールは、設定 "editor.showFoldingControls": "never"
で非表示にできるようになりました。折りたたみコマンドとショートカットを使用すると、折りたたみ範囲を展開したり折りたたんだりすることができます。
3-wayマージエディターの改善
新しい3-wayマージエディターの磨き上げを続け、このリリースでデフォルトで有効にしました。マージエディターは、ソース管理ビューで競合しているファイルをクリックすることで開くことができます。
ハイライトには、片側からのすべての変更を受け入れる新しいコマンド、改善されたコンテキストメニュー、強化された差分色、競合する変更と非競合の変更へのより大きな強調が含まれます。
また、マージの競合の精度を向上させるための代替差分アルゴリズムの検討も開始しました。差分エディターまたはマージエディターで最適でない変更のハイライトや配置に遭遇した場合は、これらのケースをGitHubイシュートラッカーに記録したいと思います!
コマンドラインオプションマージ
VS Codeでマージエディターを起動するためにコマンドラインオプションを使用できるようになりました。
-m --merge <path1> <path2> <base> <result> Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.
これにより、たとえば.gitconfig
で設定した場合、VS CodeをGitのマージツールとして使用できます。
[merge]
tool = code
[mergetool "code"]
cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED
ファイル装飾の検索
検索ビューの検索結果には、ファイルの「問題」やソース管理情報を表すためのファイル装飾と色が右側に表示されるようになりました。これは、ファイルエクスプローラーに既に表示されているファイル装飾と同様です。
複数選択の検索
検索ビューも複数選択に対応しました。選択した結果の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"
がシェルに対して部分的にエスケープされているが、完全にはエスケープされていないことに気づきました。これは、プログラムに引数を渡そうとすると、誤ってシェルで特殊な動作がトリガーされる可能性があることを意味しました。これを整理した後、シェルにとって特別な意味を持つ文字を含む引数を設定することは有用なことであり、一部のユーザーがこの動作に依存していることに気づきました。
正しい修正方法について議論し、この動作はオプトインであるべきであり、デバッグアダプタプロトコル (DAP) への変更が必要であると決定しました。この変更をDAPに加え、VS Codeとjs-debugで実装し、他のデバッグアダプタもすぐにそれに続くはずです。
ノード起動構成で新しい動作を使用する方法は次のとおりです。
{
"type": "node",
"console": "integratedTerminal",
...
// If you pass args as a single string, the characters will not be escaped for the terminal,
// so the command in backticks will be evaluated, and output will be redirected to "outfile".
// The user is responsible for knowing the type of shell that this will be run in,
// and doing any escaping necessary.
"args": "`echo hello` > outfile",
// If you pass args as an array, the characters will be escaped for the terminal,
// so that the program receives them verbatim.
"args": ["`echo hello` > outfile"]
}
デバッグセッションのピッカー
デバッグ中に、コマンドパレットでデバッグ: デバッグセッションを選択を実行できるようになりました。これにより、アクティブなデバッグセッションのピッカーが表示され、個々のデバッグセッションを検索してフィルタリングできます。各ピッカー項目の説明には、該当する場合、それを生成したセッションが表示されます。
ピッカーで項目を選択すると、コールスタックビューでデバッグセッションにフォーカスが当たります。デバッグアクション(例:一時停止、ステップ、再起動、停止)は、フォーカスされたデバッグセッションに対して実行されます。セッションを選択すると、そのセッションのデバッグコンソールも表示されます。
タスク
「タスクの実行」コマンドのフィルタリングサポート
タスク: タスクを実行 (workbench.action.tasks.runTask
) アクションは、タスク名とタイプによるフィルタリングをサポートしており、タスクを選択して実行するためのより簡潔で設定可能な方法を提供します。
例
{
"key": "ctrl+h",
"command": "workbench.action.tasks.runTask",
"args": {
"task": "VS Code - Build",
"type": "npm"
}
}
自動タスクフローの改善
Trusted Workspace機能により、VS Codeは自動タスク実行のフローを簡素化できます。デフォルトでは、フォルダーが信頼されている場合は自動タスクが実行され、それ以外の場合はフォルダーごとに一度プロンプトが表示されます。この動作は、task.allowAutomaticTasks
設定(デフォルトはauto
)で、自動タスクを実行する前に常に(on
)または決して(off
)プロンプトを表示しないように設定できます。
言語
JSONのフォーマット時に改行を維持する
JSONドキュメントで行をフォーマットする際に、最初の行位置を保持できるようになりました。たとえば、1行に値を含む配列は、フォーマット後もこれらの値を同じ行に保持します。JSONファイル内の余分な改行も保持されます。この機能を有効にするには、設定エディターでJSON > フォーマット: 行を保持オプションを設定します。
ノートブック
最も最近失敗したセルに移動
最後に実行されたセルが失敗した場合、そのセルにジャンプするボタンが追加されました。同じ操作を行うには、ノートブック: 最も最近失敗したセルに移動を実行することもできます。
これは、一連のセルを実行し、どのセルが失敗してグループの実行を停止したかを知りたい場合に役立ちます。
ノートブックのMarkdownプレビューでの添付ファイルのレンダリング
Jupyterノートブック内に埋め込まれたbase64画像をレンダリングできるようになりました。
Jupyterノートブックに貼り付けられ、
で参照される画像は、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ウィンドウのリロード後もインタラクティブウィンドウセッションを復元できるようになりました。
制限事項: 生カーネルの状態はウィンドウリロード時に永続化されません(詳細については、このディスカッション項目を参照してください)。リモートJupyterサーバーを使用している場合、インタラクティブウィンドウはリロード時に以前のカーネルセッションに接続されます。
.envファイルからの環境変数の読み込み
.env
ファイルの変更の検出を含む、.env
ファイルからの環境変数の読み込みにいくつかの修正が加えられました。Pythonカーネルは、設定python.envFile
で定義されたファイルから環境変数を読み込むようになりました。
GitHubのプルリクエストと課題
プルリクエストと課題の作業、作成、管理ができるGitHub Pull Requests and Issues拡張機能にさらに進展がありました。このリリースの主なハイライトは以下の通りです。
- ビューアの最後のレビュー以降のプルリクエストへの変更のみを表示する新しいボタンが追加されました。
- ソース管理ビューの新しいコミット & プルリクエストを作成アクションにより、GitコミットとPR作成ビューへの移動を1ステップで行えます。
githubPullRequests.pullRequestDescription
設定を使用して、PRの説明のソーステキストを設定できます。
その他のハイライトについては、拡張機能の0.48.0の変更履歴をご覧ください。
リモート開発
コンテナ、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できるRemote Development拡張機能の作業は継続中です。
新しい拡張機能の機能とバグ修正については、Remote Developmentリリースノートで確認できます。
プレビュー機能
エディターのスティッキースクロール
スクロール中にユーザーがどのスコープにいるかを示すUIを表示できるようになりました。「スティッキースクロール」UIは、エディターの上部がどのクラス/インターフェース/名前空間/関数/メソッド/コンストラクターに属しているかを示し、ドキュメント内の位置を把握するのに役立ちます。editor.experimental.stickyScroll.enabled
設定でスティッキースクロールを有効にします。
<video src="/assets/updates/1_70/sticky-scroll.mp4" autoplay loop controls muted title=""Sticky scroll" showing the source code scope for a TypeScript file">
TypeScript 4.8のサポート
このアップデートには、次期TypeScript 4.8リリースへのサポートが含まれています。TypeScriptチームが現在取り組んでいることの詳細については、TypeScript 4.8イテレーション計画をご覧ください。
TypeScript 4.8のナイトリービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。
設定プロファイル
過去数ヶ月間、コミュニティから最も人気のある要望の1つであるVS Codeの設定プロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled
設定を介してInsidersリリースでプレビュー版として利用可能です。ぜひ試してみて、VS Codeリポジトリで課題を作成するか、課題 #116740にコメントしてフィードバックをお寄せください。
このマイルストーンでは、Web版VS Codeにおける設定プロファイルのサポートも追加しました。insiders.vscode.devと、同じworkbench.experimental.settingsProfiles.enabled
設定を使用して試すことができます。
テーマ: Light Pink
タスクの再接続
ウィンドウのリロード時に、task.experimental.reconnection
を有効にすることでウォッチタスクに再接続できるようになり、拡張機能の変更やVS Codeのバージョン更新後に作業に戻るのが速くなります。
コードアクション
VS Codeでコードアクションをより良い体験で提供するために取り組んできました。コードアクションには、リファクタリング、ソースアクション、クイックフィックスが含まれます。
新しい実験的なコードアクションコントロールは、リファクタリングまたはソースアクションを選択することでコンテキストメニューから、電球から、またはクイックフィックスを介して開くことができます。editor.experimental.useCustomCodeActionMenu
設定を介して試してみてください。VS Codeリポジトリで課題を作成するか、課題 #152913にコメントしてフィードバックをお寄せください。
コードアクションのリファクタリングプレビューも、新しいコードアクションコントロールからアクセスできます。有効な項目にカーソルを合わせると、プレビュー方法が表示されます。コードアクションの選択、および選択のプレビューにカスタムキーバインディングがサポートされています。
このマイルストーンでは、クイックフィックス(⌘. (Windows, Linux Ctrl+.))を含むコードアクションのカスタムキーバインディングもサポートしました。以下のスニペットを希望のキーボードショートカットでkeybindings.json
に追加することで試すことができます。
[
{
"key": "ctrl+k",
"when": "codeActionMenuVisible",
"command": "focusPreviousCodeAction"
},
{
"key": "ctrl+j",
"when": "codeActionMenuVisible",
"command": "focusNextCodeAction"
}
]
VS Code for the Webとデスクトップ間での編集セッション
編集セッションに関する作業は継続しており、VS Code for the Webまたはデスクトップ間でリポジトリでの作業を継続する際に、コミットされていない変更を引き継ぐことができます。主なハイライトは以下の通りです。
- 編集セッション機能をオフにすると、クラウドに保存されているすべての編集セッションを削除できるようになりました。
- Microsoft認証でのサインインがサポートされました。
- 編集セッションが見つからない場合は、編集セッション: 編集セッションを表示コマンドですべての編集セッションを表示できます。
編集セッションを試すには、設定でworkbench.experimental.editSessions.enabled
を設定し、編集セッション: 現在の編集セッションを保存コマンドを使用し、プロンプトが表示されたらGitHubまたはMicrosoft認証でサインインします。その後、別のマシンまたはVS Codeインスタンスのリポジトリで編集セッション: 最新の編集セッションを再開コマンドを使用して、すべての変更されたファイルの作業内容をワークスペースに復元します。編集セッション: サインアウトコマンドを使用して、いつでも編集セッションからサインアウトできます。
編集セッション体験の改善を続けていますので、ぜひお試しいただき、課題 #141293へのコメントでフィードバックをお寄せください。
拡張機能の作成
「when」句に対する「not in」演算子
「when」句にはすでに演算子in
が存在し、これによりコンテキストキーの値を配列またはオブジェクト型の値を持つ別のコンテキストキー内で動的に検索することができます。これとは逆の新しい演算子not in
を追加しました。詳細については、when句のコンテキストのドキュメントを参照してください。
htmlLanguageParticipants貢献ポイント
新しい貢献ポイントhtmlLanguageParticipants
により、HTMLに似た言語は、コード補完、ホバー、アウトラインなどのすべてのHTML言語サーバー機能を継承したいと宣言できます。これは、完全な言語サーバーを実装したくないプログラミング言語拡張機能にとって便利です。
例として、組み込みのhandlebars
拡張機能は、package.json
内で自分自身をhtmlLanguageParticipants
に追加するようになりました。
"contributes": {
"htmlLanguageParticipants": [
{
"languageId": "handlebars"
}
]
}
Quarkus拡張機能はすでにこの貢献ポイントを採用しています。これは、組み込みのQute HTMLテンプレート言語に、追加の提案でHTML機能を強化します。
エディタAPIへのドロップ
テキストエディタのドロップAPIは、ファイルやその他のコンテンツをテキストエディタにドロップする処理を拡張機能に許可します。これらのドロップイベントは、VS Code内から発生することもあります(例えば、VS Codeのエクスプローラーからファイルをテキストエディタにドラッグする)、またはオペレーティングシステムからファイルをVS Codeにドロップすることによって生成されることもあります。
ファイルをエディタにドロップするには、ユーザーはkbsytyle(Shift)
を押しながらファイルをドラッグし、ファイル内の特定の場所にドロップします。この時点で、拡張機能はドロップされたデータに対して何をすべきかを選択できます。
このAPIの簡単な使用例については、エディタへのドロップ拡張機能サンプルを参照してください。
提案されたAPI
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行してください。これにより、対応するd.ts
ファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
ウェブビューコンテキストメニュー
新しいウェブビューコンテキストメニューの提案により、高度なウェブビューは、ユーザーがウェブビュー内で右クリックしたときに表示されるコンテキストメニューを簡単にカスタマイズできるようになります。この新しい貢献ポイントはVS Codeの通常のコンテキストメニューを使用するため、カスタムメニューはエディターの残りの部分にぴったりと収まります。ウェブビューは、ウェブビューの異なるセクションに対してカスタムコンテキストメニューを表示することもできます。
この新しいAPIを試すには、contribWebviewContext
の提案を有効にする必要があります。
"enabledApiProposals": [
"contribWebviewContext"
]
ウェブビューに新しいコンテキストメニュー項目を追加するには、新しいwebview/context
セクションの下のmenus
に新しいエントリを追加します。各貢献は、command
(タイトルもそこから取得されます)とwhen
句を受け取ります。コンテキストメニューが拡張機能のウェブビューにのみ適用されるように、when句にはwebview == 'YOUR_WEBVIEW_VIEW_TYPE'
を含める必要があります。
"contributes": {
"menus": {
"webview/context": [
{
"command": "catCoding.yarn",
"when": "webview == 'catCoding'"
},
{
"command": "catCoding.insertLion",
"when": "webview == 'catCoding' && webviewSection == 'editor'"
}
]
},
"commands": [
{
"command": "catCoding.yarn",
"title": "Yarn 🧶",
"category": "Cat Coding"
},
{
"command": "catCoding.insertLion",
"title": "Insert 🦁",
"category": "Cat Coding"
},
...
]
}
ウェブビュー内では、data-vscode-context
データ属性(またはJavaScriptではdataset.vscodeContext
)を使用して、HTMLの特定の領域のコンテキストを設定することもできます。data-vscode-context
の値は、ユーザーが要素を右クリックしたときに設定するコンテキストを指定するJSONオブジェクトです。最終的なコンテキストは、ドキュメントのルートからクリックされた要素までをたどって決定されます。
例えば、このHTMLを考えてみましょう。
<div class="main" data-vscode-context='{"webviewSection": "main", "mouseCount": 4}'>
<h1>Cat Coding</h1>
<textarea data-vscode-context='{"webviewSection": "editor", "preventDefaultContextMenuItems": true}'></textarea>
</div>
ユーザーがtextarea
を右クリックすると、以下のコンテキストが設定されます。
webviewSection == 'editor'
— これは親要素からのwebviewSection
を上書きします。mouseCount == 4
— これは親要素から継承されます。preventDefaultContextMenuItems == true
— これは、VS Codeが通常ウェブビューのコンテキストメニューに追加するコピーと貼り付けのエントリを非表示にする特殊なコンテキストです。
ユーザーが<textarea>
内で右クリックすると、次のように表示されます。
ビューサイズ
ビューサイズ提案により、拡張機能は貢献するビューに重みを提供できます。
"contributes": {
"views": {
"github-pull-request": [
{
"id": "github:createPullRequest",
"type": "webview",
"name": "Create Pull Request",
"size": 2
},
{
"id": "github:compareChanges",
"name": "Compare Changes",
"size": 1
}
]
}
}
サイズはCSSプロパティflex-grow
と同様に機能します。上記の例では、"size": 2
のビューは"size": 1
のビューの2倍のサイズになります。サイズプロパティは、ビューコンテナーが同じ拡張機能によって貢献されている場合にのみ尊重されます。
拡張可能なHTMLノートブックレンダラー
組み込みのノートブックレンダラーは、拡張機能がHTMLコンテンツのレンダリングをカスタマイズできる実験的なAPIを公開するようになりました。このAPIは現在、HTMLコンテンツの初期レンダリング後に呼び出される単一のフックpostRender
を公開しています。
この実験的なAPIの使用を試すには、拡張機能がvscode.builtin-renderer
APIを拡張する必要があります。
"contributes": {
"notebookRenderer": [
{
"id": "vscode-samples.my-custom-html-extension",
"displayName": "My custom html renderer extension",
"entrypoint": {
"extends": "vscode.builtin-renderer",
"path": "./out/main.js"
}
}
]
}
その後、レンダラーはvscode-builtin-renderer
にレンダリングフックを登録できます。
import type { RendererContext } from 'vscode-notebook-renderer';
export async function activate(ctx: RendererContext<void>) {
const htmlRenderer = await ctx.getRenderer('vscode.builtin-renderer');
if (!htmlRenderer) {
throw new Error(`Could not load 'vscode.builtin-renderer'`);
}
htmlRenderer.experimental_registerHtmlRenderingHook({
// Invoked after the HTML content for `outputItem` has been rendered to `element`
postRender(outputItem: OutputItem, element: HTMLElement): HTMLElement | undefined {
// You can either modify `element` or return a replacement element
}
});
}
この新しいAPIを試して、ご意見をお聞かせください!
デバッグアダプタプロトコル
RunInTerminalRequest の argsCanBeInterpretedByShell
RunInTerminalRequest
は、新しいプロパティargsCanBeInterpretedByShell
をサポートしています。これは、コマンドargs
内の特殊なシェル文字がエスケープせずに残されるべきかどうかをクライアントに伝えます。これは、ターミナルで起動し、シェルによって解釈されるべき文字を含む起動設定をユーザーが記述できるようにするためです。
エンジニアリング
Electron サンドボックスサポートの進捗
このマイルストーンでは、Electronのサンドボックスをデフォルトで有効にするための実質的な進歩を遂げました。8月にはInsiders向けにサンドボックスを有効にし、最終的にはStable VS Codeでデフォルトにする予定です。
ご興味のある方は、設定で"window.experimental.useSandbox": true
を設定するとサンドボックスモードが有効になります。変更に気づくことはないはずですが、問題を発見した場合は、私たちに報告してください。
Markdown言語サーバー
このイテレーションでは、VS CodeのMarkdown記述ツールの大半をライブラリと言語サーバーに抽出しました。これには、パス補完、ドキュメントアウトライン、診断に関するツールが含まれます。
VS Codeの組み込みMarkdown拡張機能は、すでにこの新しい言語サーバーを使用するように切り替わっていますが、動作に違いがあることに気づかないことを願っています。この切り替えは、Markdownツールを独自のプロセスに移動させるため、パフォーマンスの向上に役立つはずです。言語サーバーへの移行は、実験的なMarkdownリンク診断のパフォーマンス向上にも役立ちました。
他のツールやエディターもこれらの新しいパッケージの恩恵を受け、さらに貢献できることを願っています。一緒に、誰もがより良いMarkdownツールを構築できます!興味があれば、関連プロジェクトをチェックしてください。
- Markdown Language Service — Markdownを扱うためのツールを提供するTypeScriptライブラリ。
- Markdown Language Server — 言語サービスを使用して構築されたMarkdown用の言語サーバー。
Debianパッケージの依存関係
Debianパッケージの依存関係は、ハードコーディングではなくスクリプトによって生成されるようになりました。これにより、2016年に提出された問題がクローズされ、一部のマシンで依存関係が不足していると実行時にプログラムがクラッシュする問題が解決されました。
ドキュメントと拡張機能
開発コンテナCLI
dev container command-line interface (CLI) のトピックが、CLIの最新バージョンに更新されました。dev container 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
コマンドのリストについては、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
- 🔨 名前にドットを含むファイルでのマークダウン診断問題を修正 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テストを追加: コンマ、コメント、シバン PR #154625
- @FantasqueX (FantasqueX): 非推奨のcanceledをCancellation Errorに置換。 PR #156094
- @ferdnyc (Frank Dana)
- RPM: /usr/bin/code をパッケージで所有させる PR #142907
- fakerootラッパーを削除し、.rpmパッケージをビルドする 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)
- #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アクションv1の非推奨化 PR #156271
- @ssigwart (Stephen Sigwart)
- エディター領域内のターミナルがリロードされない問題を修正 PR #151852
- サジェストウィジェットがハングアップする問題を修正 PR #152011
- 検索エディターのファイルフィルターのキーバインディングを追加 PR #153954
- スペース、その後の行:列でターミナルリンクを検出 PR #153957
- ウェブビューが表示された後にメニューショートカットが機能しない問題を修正 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: 数値定数をサポート 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