に参加して、VS Code の AI 支援開発について学びましょう。

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ファイルを右クリックして拡張機能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 Up)および (Windows, Linux Down)を押すと、それぞれ前後のコミットが表示されます。入力ボックスの最初と最後の位置に直接移動するには、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: リベースコマンド

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

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.insertSpaceAfterOpeningAndBeforeClosingEmptyBracesおよびtypescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces書式設定構成オプションは、空の括弧の間にスペースを挿入するかどうかを制御します。これらの設定のデフォルト値はtrueです。たとえば、JavaScriptの場合、

class Foo {
    doFoo() { }
}

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

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

ブラウザーのサポート

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

新しいファイルシステムアクセス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 Pull Requests and Issues

GitHub Pull Requests and Issues拡張機能の作業が続いており、プルリクエストとイシューの作業、作成、管理が可能です。

すべての新機能とアップデートについては、拡張機能の0.21.0リリースの完全な変更履歴を参照してください。

リモート開発

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

1.51の機能ハイライトは以下の通りです。

  • ターミナルセッションへの永続化/再接続機能。
  • 改善されたポートフォワーディングエクスペリエンス。

新しい拡張機能の機能とバグ修正については、Remote Developmentリリースノートを参照してください。

プレビュー機能

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

設定の同期

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

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

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

Proxy Login

テーマ: GitHub Light

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

このダイアログはセッションごとに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メモの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イベントを使用して、折りたたみ範囲を更新する必要があることをエディターに通知できます。

詳細とフィードバックの提供については、issue #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を信頼済みタイプに準拠させる

VS Codeを「信頼済みタイプ」に準拠させる取り組みを続けています。目標は、DOMベースのクロスサイトスクリプティングの脆弱性を防止することです。信頼済みタイプについては、web.devのTrusted Typesサイトで詳しく知ることができ、issue #103699で進捗状況を追跡できます。

ドキュメント

はじめに

エディターの使い始めをより簡単にする方法に注力しています。コーディング初心者向けのコーディングパックと新しいコンテンツを含む、新しい「Learn to Code」ランディングページをWebサイトに作成しました。また、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: v1.50でonDebugDynamicConfigurationsを持つ拡張機能が起動時に積極的にアクティブ化される
  • 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: サポートされていないOSでNode.jsを実行するとデバッガーが動作しない PR #791

© . This site is unofficial and not affiliated with Microsoft.