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

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

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

テーマ: GitHub Light
エクスプローラーから拡張機能をインストール
VS Codeは、VSIXファイルを右クリックして拡張機能VSIXをインストールのコンテキストメニュー項目を選択することで、エクスプローラーから拡張機能VSIXファイルをインストールできるようになりました。
入力ぼかしコマンド
新しい内部コマンドworkbench.action.blurが利用可能になり、フォーカス可能な入力からフォーカスを削除します。このコマンドには、キーボードショートカット設定でキーボードショートカットを割り当てることができます。
統合ターミナル
ローカルエコー
ターミナルでの変更は、通常、ターミナルプロセスに情報を送信し、処理され、VS Codeに戻ってきて初めて反映されます。これは、SSHサーバーやCodespaceへの接続が不安定または遠距離の場合に遅くなることがあります。
このリリースでは、ターミナルに「ローカルエコー」モードが追加されました。これは、ローカルで行われた変更とカーソル移動を予測し、サーバーへのラウンドトリップを必要とせずにUIに表示しようとします。デフォルトでは、予測された文字は「薄暗く」表示されます。

これを設定するために使用できる設定は2つあります。
terminal.integrated.localEchoLatencyThresholdは、ローカルエコーがアクティブになる検出遅延のしきい値をミリ秒単位で設定します。この値は、常に機能をオンにする場合は0、無効にする場合は-1に設定できます。デフォルトは30です。terminal.integrated.localEchoStyleは、ローカル文字のスタイルまたは色を設定し、デフォルトはdimです。
IntelliSense
サイズ変更可能な提案
このマイルストーンでは、提案UIにいくつかの改善を加えました。まず、サイズ変更が可能になりました。側面や角をドラッグしてコントロールのサイズを変更できます。

テーマ: GitHub Light、フォント: FiraCode
提案リストのサイズはセッション間で保存および復元されます。詳細ペインのサイズは、そのサイズがより可変であるため、セッションごとにのみ保存されます。また、editor.suggest.maxVisibleSuggestions設定は廃止されました。
提案のステータスバー
提案コントロールは、ウィンドウの下部に独自のステータスバーを表示できるようになりました。editor.suggest.showStatusBar設定を使用して有効にします。これにより、詳細の切り替えが簡単になり、補完が挿入、置換、またはその両方をサポートしているかどうかが表示されます。

テーマ: GitHub Light、フォント: FiraCode
上記のサンプルでは、「挿入」を選択するとMath.floorceilになり、「置換」を選択するとMath.floorになります。
新しいeditor.suggest.insertMode設定を使用すると、挿入と置換のどちらを優先するかを設定できます。提案が両方をサポートしている場合、あなたの設定がデフォルトになります。
カーソルを移動して提案を選択
最後に、提案が表示されている間にカーソルを移動できるようになりました。たとえば、単語の最後に提案をトリガーし、左に移動してさらに提案を表示し、置換を使用して単語を上書きすることができます。

テーマ: GitHub Light
Emmet
Emmetのカスタムスニペットが復活しました。さらに、スニペットファイルが保存されるか、emmet.extensionsPath設定が更新されると、スニペットは自動的に更新されるようになりました。

ソース管理
ソース管理入力ボックスがコミットメッセージ履歴を保存
これは、SCMコミット履歴をナビゲートするための機能リクエストに対処するものです。↑ (Windows, Linux Up)および↓ (Windows, Linux Down)を押すと、それぞれ前後のコミットが表示されます。入力ボックスの最初と最後の位置に直接移動するには、Altを対応する矢印キーと組み合わせて押します。

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

Git: リベースコマンド
新しいGit: Rebase branch...コマンドが追加され、UIを使用してブランチをリベースできるようになりました。
Git: 再帰的クローンコマンド
Git: Clone (Recursive)コマンドを使用すると、ネストされたGitサブモジュールを含むGitリポジトリを再帰的にクローンできるようになりました。
タイムライン: 絵文字ショートコードのレンダリング
:smile:などの絵文字ショートコードがタイムラインビューでレンダリングされるようになりました。

言語
Markdownスマート選択
以下の新しいコマンドを使用して、Markdownドキュメントの選択範囲を拡張および縮小します。
- 展開: ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
- 縮小: ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)
選択は以下に適用され、従来の階層パターンに従います。
- ヘッダー
- リスト
- ブロック引用
- フェンス付きコードブロック
- HTMLコードブロック
- 段落

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は、ファイルエクスプローラーからフォルダーのダウンロードアクションを提供し、すべてのファイルとフォルダーをディスクにダウンロードできるようになりました。

注: これには、Microsoft EdgeまたはGoogle Chromeの最新バージョンが必要です。
ワークスペースを開く通知
トップレベルに.code-workspaceファイルを含むフォルダーを開くと、それを開くように促す通知が表示されるようになりました。これはデスクトップ版のVS Codeでは常にそうでしたが、ブラウザでも動作するようになります。

誤って閉じないようにする
新しい設定window.confirmBeforeCloseが追加され、ワークベンチを閉じるか離れる前に確認ダイアログが表示されるようになりました。
可能な値は次のとおりです。
keyboardOnly: 閉じるためにキーバインディングを使用した場合にのみ確認が表示されます(例: ⌘W (Windows, Linux Alt+F4))。(デフォルト)always: マウスジェスチャーで閉じた場合でも、確認ダイアログは常に表示されます。never: 確認は決して表示されません。

注: この設定がすべてのケースをカバーしない場合があります。ブラウザは、確認なしでタブまたはウィンドウを閉じることを決定する場合があります。
拡張機能への貢献
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を有効にすると、将来のリリースでデフォルトにする予定のこの新しいエクスペリエンスが有効になります。

テーマ: 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のデフォルトスタイルをカラーテーマトークンにフックするようにしました。これにより、一般的な要素(テキスト、ボタン、入力)がテーマ可能になり、製品のデフォルトスタイルと一致するようになります。これを含む拡張機能は以下の通りです。

ツリー内のCodiconの色
ThemeIconカラーAPIの最終決定により、拡張機能の作成者はカスタムツリービューのcodiconにテーマカラーを使用できるようになりました。
![]()
グローバル状態の同期
拡張機能は、新しく導入された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で学生向けの新しいビデオとリソースも作成しました。

新しいコマンド
| キー | コマンド | コマンド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 に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
vscodeへの貢献者
- Justin Steven (@justinsteven): (1.49.3で修正済み) CVE-2020-16881の修正がバイパスされる PR #107952
- Ashkan (@a5hk): closes #97890 PR #108779
- Daniel Huth (@Agreon): Non-Wrapping EditorGroup-focus actionsを追加 PR #108071
- Andrey Sinitsyn (@asn007): fix(git): win32でファイルの追加、元に戻す、リポジトリのクリーンアップ時に致命的なエラー [#108690] PR #108691
- Jordan Bayles (@baylesj): Git: Clone Recursivelyオプションを追加 PR #109133
- 大石隆則 (@bicstone)
- 言語パック適用時にUIアイテムの順序が不正 PR #109433
- Git: タグを'...'メニューに追加 PR #109282
- Borja Zarco (@bzarco): 起動構成の入力変数解決を修正。 PR #97440
- Dhairya Nadapara (@dhairyanadapara): FindInFileインターフェースにpreserve caseとexcluse設定を追加 PR #107910
- Evan Krause (@evangrayk): 展開されていないコメントが非表示の場合、エディターにフォーカスしない PR #97101
- Fons van der Plas (@fonsp): メッセージ「すべての変更をステージングしますか?」 PR #109272
- John Murray (@gjsjohnmurray): #108673を修正 FileSystemProviderのエラーメッセージをsettings.jsonの作成失敗通知に含める PR #108694
- matvii (@hodovani):
mapをforEachに置き換え PR #109217 - Jean Pierre (@jeanp413)
- 通知を中クリックするとクリップボードの内容がペーストされる問題を修正 PR #109349
- 設定ターゲットがユーザー以外の場合にファイルの自動保存を無効にできない問題を修正 PR #109278
- ChangeEncodingActionでファイルの内容をストリームとして読み込む PR #108052
- アウトラインビュー要素のオーバーフローを修正 PR #108038
- Kenny Smith (@kjs3): MacOSのフォワード削除用のゴミ箱/削除キーバインディング PR #108863
- Li Xueli (@mixj93): fix: 無題エディターラベルの余分な空白を削除 PR #108039
- @Nafana: ^で始まるMarkdown参照リンクはクリックできないようにすべき PR #108015
- Pierre Papin (@pi-r-p): ウェブビューでのダウンロードの問題を修正 PR #108603
- Rakib Fiha (@RakibFiha): shebangをcode.shと同じに変更 PR #109372
- Ryan Clarke (@ryanclarke): IConfigurationPropertySchemaに新しいプロパティを追加 PR #108120
- Sebastian Andil (@selrond): gitパッケージ内の
No Nerifyのtypoを修正 PR #108329 - Simon Siefke (@SimonSiefke): typoを修正: eventLister -> eventListener PR #108066
- トメル・スタブ (@tomerstav)
- 現在のブランチを別のブランチにリベース PR #108913
- showOptionsにnewEditorGroupというオプションパラメータを追加 PR #107555
- 注: これは最終的にマージされませんでしたが、それでも作業に感謝しています。
- Tony Xia (@tony-xia): Persisten -> Persistent PR #108389
- @turara: 「Preserve case」置換オプションのキーバインディングショートカットを追加 PR #107597
- @vivekmthr: CodeLensがマウスアップでアクティブ化される #107736 PR #108323
vscode-json-languageserviceへの貢献
- Albert Nigmatzianov (@bogem): READMEを改善 PR #78
vscode-html-languageserviceへの貢献
- Jaime Oliveira (@IxquitilisSaid): beautify-html wrap_attributesのドキュメントを更新 PR #92
- Nicholas Steven Darmawan (@steve1998): HTMLエンティティのホバーを実装 PR #89
vscode-css-languageserviceへの貢献者
vscode-eslintへの貢献者
- Brandon Mills (@btmills): eslint.probeのデフォルトドキュメントにマークダウンを追加 PR #925
- Brad Zacher (@bradzacher): これはワークスペースのみの拡張機能であることを示すことでリモート開発をサポート PR #1084
- Clément Tessier (@ctessier): README.mdのtypoを修正 PR #1105
language-server-protocolへの貢献者
- @KamasamaK
- Remy Suen (@rcjsuen): スラッシュをtextDocument/semanticTokensに修正 PR #1111
- Andreas Matthias (@AndreasMatthias): ドル記号をエスケープする。 PR #1124
vscode-emmet-helperへの貢献
- Yasar Siddiqui (@yasarsid): Emmet展開でd: は"display: grid"ではなく"display: block"に展開すべき PR #35
lsif-nodeへの貢献
- Noah Santschi-Cooney (@Strum355): lsif-util: vertex extra infoセクションの\"を"に置き換えることで#70を修正 PR #112
debug-adapter-protocolへの貢献者
- Jonah Graham (@jonahgraham): バグ #122: ProgressStartEventのrequestIdが整数である PR #123
- Mathias Fußenegger (@mfussenegger): toolsページにnvim-dapを追加 PR #140
- Suzy Mueller (@suzmue): adapters.mdのGoデバッグ拡張機能情報を更新 PR #142
- Ethan Reesor (@firelizzard18): byebug-dapとruby-dapを追加 PR #144
vscode-vsceへのコントリビューション
- James George (@jamesgeorge007): fix: 未知の引数を処理 PR #503
vscode-js-debugへの貢献者
- hp8wvvvgnj6asjm7: サポートされていないOSでNode.jsを実行するとデバッガーが動作しない PR #791