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 ファイルを右クリックし、コンテキストメニュー項目 Install Extension 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 上矢印) および ↓ (Windows, Linux 下矢印) を押します。入力ボックスの最初と最後の位置に直接移動するには、対応する矢印キーと組み合わせて Alt を押します。
Git: サブメニューのタグコマンド
タグ関連の Git コマンドが、... の Git メニューに追加されました。
Git: Rebase コマンド
UI を使用してブランチをリベースできる新しい Git: Rebase branch... コマンドが追加されました。
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)
新しいFile System Access API を活用することで、ブラウザーで実行中の VS Code は、ファイルエクスプローラーからフォルダー内のすべてのファイルとフォルダーをディスクにダウンロードするアクションを提供できるようになりました。
注: これには、Microsoft Edge または Google Chrome の最新バージョンが必要です。
ワークスペースを開く通知
トップレベルに .code-workspace
ファイルを含むフォルダーを開くと、それらを開くよう求める通知が表示されるようになりました。これはデスクトップ版 VS Code では常にそうでしたが、ブラウザーでも動作するようになります。
誤って閉じるのを防ぐ
ワークベンチを閉じたり離れたりする前に確認ダイアログを表示する新しい設定 window.confirmBeforeClose
が追加されました。
可能な値は次のとおりです。
keyboardOnly
閉じるためにキーバインディングを使用した場合にのみ確認が表示されます (例: ⌘W (Windows, Linux Alt+F4))。(デフォルト)always
: マウスジェスチャーで閉じても、確認ダイアログは常に表示されます。never
: 確認は決して表示されません。
注: この設定はすべてのケースをカバーするわけではありません。ブラウザーは確認なしにタブまたはウィンドウを閉じることを決定する場合があります。
拡張機能への貢献
GitHub プルリクエストとイシュー
GitHub Pull Requests and Issues 拡張機能の作業が継続されています。これにより、プルリクエストやイシューの作業、作成、管理が可能になります。
すべての新機能と更新については、拡張機能の 0.21.0 リリースに関する完全な変更ログを参照してください。
リモート開発
コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できるリモート開発拡張機能の作業が継続されています。
1.51 の主な機能は次のとおりです。
- ターミナルセッションへの永続的な接続/再接続機能。
- ポートフォワーディングのエクスペリエンスが向上しました。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
設定の同期
設定の同期が、拡張機能のグローバル状態も同期するようになりました。拡張機能は、新しく導入された setKeysForSync API を使用して、同期する状態を提供する必要があります。
プロキシ認証情報を記憶する
ネットワーク接続でプロキシによる認証が必要な場合に表示されるログインダイアログを刷新しています。新しい設定 window.enableExperimentalProxyLoginDialog: true
を有効にすると、将来のリリースでデフォルトにする予定のこの新しいエクスペリエンスが有効になります。
テーマ: 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 のデフォルトスタイルを含めるようにしました。これにより、一般的な要素 (テキスト、ボタン、入力) がテーマに対応し、製品のデフォルトスタイルと一致するようになります。これを含む拡張機能は以下の通りです。
ツリー内の Codicon カラー
ThemeIcon
カラー API の最終決定により、拡張機能の作成者はカスタムツリービューの codicon にテーマカラーを使用できるようになりました。
グローバル状態の同期
拡張機能は、設定の同期が有効な場合に同期されるべき値のキーを、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 で、学生向けの新しいビデオやリソースも作成しました。
新しいコマンド
キー | コマンド | コマンド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 に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
vscode
への貢献者
- Justin Steven (@justinsteven): (1.49.3で修正済み) CVE-2020-16881 の修正がバイパスされる可能性 PR #107952
- Ashkan (@a5hk): #97890 をクローズ PR #108779
- Daniel Huth (@Agreon): 折り返さない EditorGroup-focus アクションを追加 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 インターフェースに大文字小文字の保持と除外設定を追加 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): 修正: 無題のエディターラベルの余分な空白を削除 PR #108039
- @Nafana: ^ で始まる Markdown 参照リンクはクリック可能にすべきではない PR #108015
- Pierre Papin (@pi-r-p): webview でのダウンロードの問題を修正 PR #108603
- Rakib Fiha (@RakibFiha): shebang を code.sh と同じに変更 PR #109372
- Ryan Clarke (@ryanclarke): IConfigurationPropertySchema に新しいプロパティを追加 PR #108120
- Sebastian Andil (@selrond): git パッケージ内の
No Nerify
のタイプミスを修正 PR #108329 - Simon Siefke (@SimonSiefke): タイプミスを修正: eventLister -> eventListener PR #108066
- Tomer Stav (@tomerstav)
- 現在のブランチを別のブランチにリベース PR #108913
- showOptions に newEditorGroup というオプションパラメータを追加 PR #107555
- 注: これは結局マージされませんでしたが、それでもその作業に感謝します。
- Tony Xia (@tony-xia): Persisten -> Persistent PR #108389
- @turara: 「大文字小文字の保持」置換オプションのキーバインディングショートカットを追加 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 のタイプミスを修正 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: 頂点追加情報セクションの \" を " に置き換えることで #70 を修正 PR #112
debug-adapter-protocol
への貢献者
- Jonah Graham (@jonahgraham): バグ #122: ProgressStartEvent の requestId が整数である PR #123
- Mathias Fußenegger (@mfussenegger): ツールページに 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): 修正: 不明な引数を処理 PR #503
vscode-js-debug
への貢献者
- hp8wvvvgnj6asjm7: サポートされていないオペレーティングシステムで Node.js を実行するとデバッガーが機能しない PR #791