🚀 VS Codeでを入手しましょう!

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

アップデート 1.51.1: このアップデートでは、これらのissueに対処しています。

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


Visual Studio Code の 2020 年 10 月リリースへようこそ。10 月のイテレーション計画でお知らせしたように、issue グルーミングガイドに記載されているように、GitHub issue とプルリクエストの整理に焦点を当てました。

また、GitHub のパートナーと GitHub Codespaces についても協力しましたが、これは当初の予想よりも多くの作業が必要となりました。そのため、11 月のイテレーションの一部についても、引き続き整理作業を行う予定です。

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

ワークベンチ

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

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

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: Rebase コマンド

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

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

Git: クローン (再帰的) コマンドを使用すると、ネストされた 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)

新しい 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 Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の開発が継続されています。これにより、プルリクエストと issue の作業、作成、管理を行うことができます。

すべての新機能と更新の詳細については、拡張機能の 0.21.0 リリースの変更ログをご覧ください。

Remote Development

Remote Development extensions の開発が継続されています。これにより、コンテナー、リモートマシン、または 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 資格情報マネージャー、Linux の gnome keyring) に保存されます。

セッションごとにこのダイアログを一度だけ表示しますが、将来的にこの決定を見直す可能性があります。記憶するように選択した認証情報が有効でない場合は、ダイアログが再度表示されます。再度入力すると、認証情報を変更できます。

このオプションを有効にして、issue トラッカーを通じて、期待どおりに動作しないものがあればお知らせください。

TypeScript 4.1 ベータ版のサポート

VS Code は、TypeScript 4.1 ベータ版と nightly ビルドをサポートしています。4.1 アップデートでは、再帰的条件型のサポートや、ツール改善など、いくつかの新しい TypeScript 言語機能が導入されています。焦点分野の 1 つは、JSDoc コメントの @see タグの初期サポートの追加でした。

TypeScript 4.1 nightly ビルドの使用を開始するには、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 イベントを使用して、折りたたみ範囲を更新する必要があることをエディターに通知できます。

詳細とフィードバックについては、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 を Trusted Types に準拠させる

VS Code を「Trusted Types」に準拠させる取り組みを継続しています。目標は、DOM ベースのクロスサイトスクリプティングの脆弱性を防止することです。Trusted Types の詳細については、web.dev の Trusted Types サイト を参照し、issue #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 に貢献してくれた次の皆様に心から感謝申し上げます。

issue トラッキングへの貢献

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