VS Codeのエージェントモードを拡張するには、を試してください!

2020年10月 (バージョン 1.51)

更新 1.51.1: この更新プログラムは、これらの問題に対処しています。

ダウンロード: Windows: x64 Arm64 | Mac: Intel | Linux: deb rpm tarball Arm snap


Visual Studio Code 2020年10月リリースへようこそ。10月のイテレーション計画で発表された通り、GitHub のイシューとプルリクエストの整理に注力しました。これは、イシューグルーミングガイドに記載されています。

また、GitHub のパートナーと GitHub Codespaces の作業も行いましたが、これは当初の予想よりも複雑なものでした。そのため、11月のイテレーションの一部でも引き続き整理作業に取り組みます。

この整理のマイルストーン期間中、いくつかの機能リクエストとコミュニティからのプルリクエストにも対応しました。新しい機能と設定については、引き続きお読みください。

Workbench

より目立つピン留めされたタブ

ピン留めされたタブは、非アクティブな状態でも常にピンアイコンを表示するようになり、識別しやすくなりました。エディターがピン留めされており、かつ未保存の変更が含まれている場合、アイコンは両方の状態を反映します。

Inactive pinned tabs showing pin icons

拡張機能ツリーはカスタムホバーを使用

拡張機能ツリービューでネイティブのツールチップを使用する代わりに、クロスプラットフォームで一貫性があり、全体の UX により適合するカスタムホバーを使用するようになりました。

Custom tree hover

同期せずに拡張機能をインストール

設定の同期が有効になっている場合でも、拡張機能を同期せずにインストールできるようになりました。

Install extension without syncing

テーマ: GitHub Light

エクスプローラーから拡張機能をインストール

VS Code は、エクスプローラーから VSIX ファイルを右クリックし、コンテキストメニュー項目 Install Extension VSIX を選択することで、拡張機能の VSIX ファイルをインストールできるようになりました。

入力ブラーコマンド

新しい内部コマンド workbench.action.blur が利用可能になりました。これにより、フォーカス可能な入力からフォーカスが外れます。このコマンドには、キーボード ショートカット設定でキーボード ショートカットを割り当てることができます。

統合ターミナル

ローカルエコー

ターミナルで変更を行うには、従来、情報をターミナルプロセスに送信し、処理し、VS Code に戻す必要がありました。これは、SSH サーバーCodespaceへの接続が不安定または遠隔地の場合に、速度が低下する可能性があります。

このリリースでは、ターミナルに「ローカルエコー」モードが追加されました。これは、ローカルで行われた変更やカーソル移動を予測し、サーバーとのラウンドトリップを必要とせずに UI に表示しようとします。デフォルトでは、予測された文字は「薄暗く」表示されます。

Gif showing typing with 250ms latency where characters entered immediately are dimmed

これを設定するために使用できる設定が2つあります。

  • terminal.integrated.localEchoLatencyThreshold は、ローカルエコーがアクティブになるミリ秒単位の検出遅延しきい値を設定します。これを 0 に設定すると常に機能がオンになり、-1 に設定すると無効になります。デフォルトは 30 です。
  • terminal.integrated.localEchoStyle は、ローカル文字のスタイルまたは色を設定します。デフォルトは dim です。

IntelliSense

サイズ変更可能なサジェスト

このマイルストーンでは、サジェストの UI にいくつかの改善を加えました。何よりもまず、サイズ変更が可能になりました。コントロールの側面や角をドラッグしてサイズを変更できます。

Resizable Suggestions control

テーマ: GitHub Light, フォント: FiraCode

サジェストリストのサイズはセッション間で保存および復元されます。詳細ペインのサイズはセッションごとにのみ保存されます。これは、そのサイズがより変動しやすいためです。また、editor.suggest.maxVisibleSuggestions 設定は廃止されました。

サジェストのステータスバー

サジェストコントロールは、ウィンドウの下部に独自のステータスバーを表示できるようになりました。editor.suggest.showStatusBar 設定を使用して有効にできます。これにより、詳細の切り替えが簡単になり、補完が挿入、置換、またはその両方をサポートしているかどうかが表示されます。

Suggestions Status Bar

テーマ: GitHub Light, フォント: FiraCode

上の例では、「挿入」を選択すると Math.floorceil になり、「置換」を選択すると Math.floor になります。

新しい editor.suggest.insertMode 設定を使用すると、挿入と置換のどちらを優先するかを設定できます。サジェストが両方をサポートしている場合、設定した優先順位がデフォルトになります。

サジェストを選択するためにカーソルを移動

最後に、サジェストが表示されている間にカーソルを移動できるようになりました。たとえば、単語の末尾でサジェストをトリガーし、左に移動してさらにサジェストを表示し、置換を使用して単語を上書きできます。

Moving cursor while suggestions are showing

テーマ: GitHub Light

Emmet

Emmet のカスタムスニペットが復活しました。さらに、スニペットファイルが保存されたり、emmet.extensionsPath 設定が更新されたりすると、スニペットは自動的にリフレッシュされるようになりました。

Emmet custom snippets working again

ソース管理

ソース管理入力ボックスがコミットメッセージ履歴を保存

これは、SCM コミット履歴をナビゲートする機能リクエストに対応するものです。それぞれ以前のコミットと次のコミットを表示するには、 (Windows, Linux 上矢印) および (Windows, Linux 下矢印) を押します。入力ボックスの最初と最後の位置に直接移動するには、対応する矢印キーと組み合わせて Alt を押します。

After typing a message in the SCM input box, then staging and committing changes, pressing the up arrow reveals the message that was just committed

Git: サブメニューのタグコマンド

タグ関連の Git コマンドが、... の Git メニューに追加されました。

Git tags submenu

Git: Rebase コマンド

UI を使用してブランチをリベースできる新しい Git: Rebase branch... コマンドが追加されました。

Git: 再帰的クローンコマンド

Git: Clone (Recursive) コマンドを使用すると、ネストされた Git サブモジュールを含む Git リポジトリを再帰的にクローンできるようになりました。

タイムライン: 絵文字ショートコードのレンダリング

タイムラインビューで :smile: のような絵文字ショートコードがレンダリングされるようになりました。

Timeline view with emoji

言語

Markdown スマート選択

以下の新しいコマンドを使用して、Markdown ドキュメントの選択範囲を拡張および縮小します。

  • 拡張: ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
  • 縮小: ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)

選択は以下に適用され、従来の階層パターンに従います。

  • ヘッダー
  • リスト
  • 引用ブロック
  • フェンス付きコードブロック
  • HTML コードブロック
  • 段落

Smart select within a Markdown document expands from a block element, to the block element containing it, to the rest of the content under a header, to the header itself

JavaScript および TypeScript の空の波括弧フォーマットオプション

新しいフォーマット設定オプション javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBracestypescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces は、空の波括弧の間にスペースを挿入するかどうかを制御します。これらの設定のデフォルト値は true です。例えば、JavaScript の場合

class Foo {
    doFoo() { }
}

"javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false を設定してコードをフォーマットすると、次のようになります。

class Foo {
    doFoo() {} // Notice that the space has been removed
}

ブラウザーのサポート

フォルダーのダウンロード (Edge, Chrome)

新しいFile System Access API を活用することで、ブラウザーで実行中の VS Code は、ファイルエクスプローラーからフォルダー内のすべてのファイルとフォルダーをディスクにダウンロードするアクションを提供できるようになりました。

Download folder

注: これには、Microsoft Edge または Google Chrome の最新バージョンが必要です。

ワークスペースを開く通知

トップレベルに .code-workspace ファイルを含むフォルダーを開くと、それらを開くよう求める通知が表示されるようになりました。これはデスクトップ版 VS Code では常にそうでしたが、ブラウザーでも動作するようになります。

Open workspace notification

誤って閉じるのを防ぐ

ワークベンチを閉じたり離れたりする前に確認ダイアログを表示する新しい設定 window.confirmBeforeClose が追加されました。

可能な値は次のとおりです。

  • keyboardOnly 閉じるためにキーバインディングを使用した場合にのみ確認が表示されます (例: ⌘W (Windows, Linux Alt+F4))。(デフォルト)
  • always: マウスジェスチャーで閉じても、確認ダイアログは常に表示されます。
  • never: 確認は決して表示されません。

Close confirmation dialog

: この設定はすべてのケースをカバーするわけではありません。ブラウザーは確認なしにタブまたはウィンドウを閉じることを決定する場合があります。

拡張機能への貢献

GitHub プルリクエストとイシュー

GitHub Pull Requests and Issues 拡張機能の作業が継続されています。これにより、プルリクエストやイシューの作業、作成、管理が可能になります。

すべての新機能と更新については、拡張機能の 0.21.0 リリースに関する完全な変更ログを参照してください。

リモート開発

コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できるリモート開発拡張機能の作業が継続されています。

1.51 の主な機能は次のとおりです。

  • ターミナルセッションへの永続的な接続/再接続機能。
  • ポートフォワーディングのエクスペリエンスが向上しました。

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

プレビュー機能

プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。

設定の同期

設定の同期が、拡張機能のグローバル状態も同期するようになりました。拡張機能は、新しく導入された setKeysForSync API を使用して、同期する状態を提供する必要があります。

プロキシ認証情報を記憶する

ネットワーク接続でプロキシによる認証が必要な場合に表示されるログインダイアログを刷新しています。新しい設定 window.enableExperimentalProxyLoginDialog: true を有効にすると、将来のリリースでデフォルトにする予定のこの新しいエクスペリエンスが有効になります。

Proxy Login

テーマ: GitHub Light

このダイアログは VS Code ウィンドウ内に表示され、認証情報を記憶する機能を提供するため、VS Code を起動するたびに認証情報を提供する必要がなくなります。認証情報は OS 標準の認証情報ストア (macOS ではキーチェーン、Windows では Windows Credential Manager、Linux では gnome keyring) に保存されます。

このダイアログは現在、セッションごとに1回のみ表示されますが、将来的にこの決定を再検討する可能性があります。記憶するように選択した認証情報が無効な場合は、ダイアログが再度表示されます。再度提供することで、認証情報を変更できます。

このオプションを有効にしていただき、予期せぬ動作があった場合は、弊社のイシュートラッカーを通じてお知らせください。

TypeScript 4.1 ベータのサポート

VS Code はTypeScript 4.1 ベータおよびナイトリービルドをサポートしています。4.1 の更新では、再帰的な条件型のサポートなど、いくつかの新しい TypeScript 言語機能とツール改善がもたらされます。特に注力した分野の1つは、JSDoc コメントでの @see タグの初期サポートの追加です。

TypeScript 4.1 ナイトリービルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールするだけです。フィードバックを共有し、TypeScript 4.1 でバグが発生した場合はお知らせください。

拡張機能作成

更新された拡張機能のサンプル

一部の拡張機能サンプルを更新し、カラーテーマトークンに接続された VS Code のデフォルトスタイルを含めるようにしました。これにより、一般的な要素 (テキスト、ボタン、入力) がテーマに対応し、製品のデフォルトスタイルと一致するようになります。これを含む拡張機能は以下の通りです。

Webview style samples

ツリー内の Codicon カラー

ThemeIcon カラー API の最終決定により、拡張機能の作成者はカスタムツリービューの codicon にテーマカラーを使用できるようになりました。

Tree view with icon colors

グローバル状態の同期

拡張機能は、設定の同期が有効な場合に同期されるべき値のキーを、globalState memento の新しく導入された setKeysForSync API を使用して提供することで、グローバル状態を同期できるようになりました。

/**
 * Set the keys whose values should be synchronized across devices when synchronizing user-data
 * like configuration, extensions, and mementos.
 *
 * Note that this function defines the whole set of keys whose values are synchronized:
 *  - calling it with an empty array stops synchronization for this memento
 *  - calling it with a non-empty array replaces all keys whose values are synchronized
 *
 * For any given set of keys this function needs to be called only once but there is no harm in
 * repeatedly calling it.
 *
 * @param keys The set of keys whose values are synced.
 */
setKeysForSync(keys: string[]): void;

コメントスレッドの返信ボタンの表示

コメント拡張機能は、新しいプロパティ CommentThread#canReply を使用して、コメントスレッド内の返信ボタンの表示を制御できるようになりました。これを false に設定すると、ユーザーはコメントスレッド内で返信ボタンまたはコメントボックスを見ることができません。

提案された拡張API

各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。

  • 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
  • 拡張機能のpackage.jsonファイルに次の行が必要です: "enableProposedApi": true
  • 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

折りたたみ範囲プロバイダーの変更イベント

折りたたみ範囲プロバイダーは、onDidChangeFoldingRanges イベントを使用して、折りたたみ範囲を更新する必要があることをエディターに通知できます。

詳細およびフィードバックの提供については、イシュー #108929 を使用してください。

パスワード API

認証プロバイダーに関する継続的な作業の一環として、機密情報を保存および取得するための API を導入しました。内部的には、これは VS Code がシークレットの保存に使用する keytar ライブラリのラッパーとして機能します。

/**
 * Retrieve a password that was stored with key. Returns undefined if there
 * is no password matching that key.
 * @param key The key the password was stored under.
 */
export function getPassword(key: string): Thenable<string | undefined>;

/**
 * Store a password under a given key.
 * @param key The key to store the password under
 * @param value The password
 */
export function setPassword(key: string, value: string): Thenable<void>;

/**
 * Remove a password from storage.
 * @param key The key the password was stored under.
 */
export function deletePassword(key: string): Thenable<void>;

/**
 * Fires when a password is set or deleted.
 */
export const onDidChangePassword: Event<void>;

エンジニアリング

VS Code を Trusted Types に準拠させる

VS Code を「Trusted Types」に準拠させる取り組みを継続しています。目標は、DOM ベースのクロスサイトスクリプティングの脆弱性を防ぐことです。Trusted Types の詳細については、web.dev のTrusted Types サイトで、また進捗状況はイシュー #103699 で確認できます。

ドキュメント

はじめに

エディターの利用開始をより簡単にする方法に注力しています。コーディングパックとコーディング初心者向けの新しいコンテンツを含む、ウェブサイトに新しい「Learn to Code」ランディングページを作成しました。また、code.visualstudio.com/learn で、学生向けの新しいビデオやリソースも作成しました。

Learn to code

新しいコマンド

キー コマンド コマンドID
左のエディターグループにフォーカス (折り返しなし) workbench.action.focusLeftGroupWithoutWrap
右のエディターグループにフォーカス (折り返しなし) workbench.action.focusRightGroupWithoutWrap
上のエディターグループにフォーカス (折り返しなし) workbench.action.focusAboveGroupWithoutWrap
下のエディターグループにフォーカス (折り返しなし) workbench.action.focusBelowGroupWithoutWrap
アクティビティバーにフォーカス workbench.action.focusActivityBar

注目すべき修正点

  • 43819: Windows: 使用中のファイルを含むフォルダーを削除しても、エラーメッセージが表示されない
  • 71315: ファイル削除後も行のフォーカスを維持すべき
  • 96522: マルチルートワークスペースで起動構成のユーザー入力変数が機能しない
  • 100255: ファイルを移動する際、以前のコンテンツでモデルを直接ロードすべき
  • 108578: onDebugDynamicConfigurations を持つ拡張機能が v1.50 で起動時に積極的にアクティブ化される
  • 109088: フォルダーに対して vscode.workspace.onWillCreateFiles/onDidCreateFiles イベントを送信する
  • 109226: 展開/折りたたみ中にデバッグホバーが移動する

ありがとうございます

最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。

問題追跡への貢献者

vscodeへの貢献者

vscode-json-languageserviceへの貢献

vscode-html-languageserviceへの貢献

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

language-server-protocolへの貢献者

vscode-emmet-helperへの貢献

lsif-node への貢献

debug-adapter-protocolへの貢献者

vscode-vsceへのコントリビューション

vscode-js-debugへの貢献者

  • hp8wvvvgnj6asjm7: サポートされていないオペレーティングシステムで Node.js を実行するとデバッガーが機能しない PR #791