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 月のイテレーションの一部についても、引き続き整理作業を行う予定です。
この整理マイルストーンの間、いくつかの機能リクエストとコミュニティのプルリクエストにも対応しました。新機能と設定についてお読みください。
ワークベンチ
より目立つピン留めされたタブ
ピン留めされたタブは、非アクティブな場合でも常にピンアイコンを表示するようになり、識別しやすくなりました。エディターがピン留めされ、かつ保存されていない変更が含まれている場合、アイコンは両方の状態を反映します。
拡張機能ツリーでカスタムホバーを使用
拡張機能ツリービューでネイティブのツールチップを使用する代わりに、クロスプラットフォームで一貫性があり、全体的な 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: Rebase コマンド
新しい Git: ブランチをリベース... コマンドが追加され、UI を使用してブランチをリベースできます。
Git: 再帰的クローンコマンド
Git: クローン (再帰的) コマンドを使用すると、ネストされた 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 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
は、今後のリリースでデフォルトにする予定のこの新しいエクスペリエンスを有効にします。
テーマ: 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 デフォルトスタイルを含めました。これは、一般的な要素 (テキスト、ボタン、入力) がテーマ可能になり、製品のデフォルトスタイルと一致することを意味します。以下はこれを含む拡張機能です。
ツリーの 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
イベントを使用して、折りたたみ範囲を更新する必要があることをエディターに通知できます。
詳細とフィードバックについては、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 で、学生向けの新しいビデオとリソースを作成しました。
新しいコマンド
キー | コマンド | コマンド 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 トラッキングへの貢献
- 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: 再帰的にクローンするオプションを追加 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): fix #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): 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
- newEditorGroup という名前の showOptions にオプションのパラメーターを追加 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 デフォルトドキュメントに markdown を追加 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: vertex 追加情報セクションで \" を " に置き換えて #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): fix: 不明な引数を処理 PR #503
vscode-js-debug
への貢献
- hp8wvvvgnj6asjm7: サポートされていないオペレーティングシステムで Node.js を実行すると、デバッガーが動作しない PR #791