2019年1月 (バージョン 1.31)
アップデート 1.31.1: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Visual Studio Code の2019年1月リリースへようこそ。このバージョンには、気に入っていただけるであろう重要なアップデートが多数含まれています。主なハイライトの一部を以下に示します。
- 拡張機能のインストール時にリロードなし - 新しい拡張機能をインストールしても中断されません。
- ツリーUIの改善 - エクスプローラーのナビゲーションとフィルタリング、水平スクロールが改善されました。
- メインメニューのアップデート - Goアクションメニューの再設計、編集メニューの切り取りコマンド。
- 複数行の問題出力 - 問題パネルで複数行の問題の詳細をすべて表示します。
- すべての参照の検索履歴 - 以前の参照検索をすばやく再実行します。
- HTML、CSS、JSONのセマンティック選択 - 言語のセマンティクスに基づいて選択範囲を拡大/縮小します。
- 統合ターミナルのリフローサポート - パネル幅が変更されると、ターミナルテキストが自動的にリフローします。
- コマンドベースのユーザー入力変数 - タスクおよびデバッグ構成用のカスタムユーザー入力。
- 更新された拡張機能APIドキュメント - 拡張機能ガイドとともに完全に書き換えられました。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
また、Cloud Developer Advocate のBrian Clark によるこの1.31リリースのハイライトビデオもご覧ください。
リリースノートは、VS Codeの重点分野に関連する以下のセクションにまとめられています。さらに詳しい更新は以下の通りです。
- ワークベンチ - Zenモードで行番号を非表示に、新しいScreencastモードでキーストロークを表示します。
- エディター - スマート選択の改善、参照CodeLensの場所の調整。
- 統合ターミナル - WindowsでのConPTYサポート、検索機能の改善。
- 拡張機能の作成 - 拡張機能の変更イベント、ブラウザーでのリソースを開くアクション。
Insiders: 新しい機能をできるだけ早く見たいですか?毎日のInsidersビルドをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。Visual Studio Codeの最新ニュース、アップデート、コンテンツについては、Twitterで@codeをフォローしてください!
拡張機能
インストール時のリロードなし
VS Code をリロード (再起動) せずに拡張機能をインストールできることは、最も多くの票を集めた機能リクエストの1つであり、今回のリリースで実現しました。拡張機能をインストールまたは有効にする際に、VS Code をリロードする必要がなくなりました。
以下の例では、ユーザーは .vue ファイルを開いた後、Vetur 拡張機能をインストールするという推奨事項に従います。Vetur 拡張機能が提供する言語機能 (構文の強調表示、診断エラーなど) が、推奨拡張機能をインストールした直後に利用可能になっていることに注目してください。

アクティブ化されていない場合、拡張機能をアンインストールまたは無効にした場合もリロードは不要です。
注: 外部の貢献 (他の拡張機能の拡張ポイントへの貢献) が原因でリロードが必要な拡張機能もあります。これには、extensions.onDidChange イベントをリッスンすることによる外部の貢献ポイント所有者からの採用が必要です。
Workbench
新しいツリーウィジェット
ウィジェットのゲームを次のレベルに引き上げました。パフォーマンスの問題に対処し、いくつかのワークベンチ領域でより多くの機能を提供できるように、新しいツリーウィジェットが作成されました。新しいツリーウィジェットは、高性能リストウィジェットの合成によって作成されました。このエンジニアリング作業とパフォーマンスの改善については、別のブログ記事を執筆する予定です。今のところ、機能に焦点を当てます。
注: 新しいツリーは、ファイルエクスプローラー、すべてのデバッグツリー、検索、および Peek References で採用されました。以下の機能は、明示的に無効にされている場合を除き、これらのUI領域のほとんどに適用されます。
キーボードナビゲーションの改善
ツリーには、simple、highlight、filter の3種類のキーボードナビゲーションがあります。highlight と filter の両方で、ツリー内で入力すると、ツリーの上部にウィジェット (コントロール) が表示され、ツリーをナビゲートしていることを示します。

このウィジェットを使用して、highlight モードと filter モードを切り替えることもできます。モードを切り替えるキーボードショートカットが必要な場合は、list.toggleFilterOnType コマンドを実行するキーバインドを設定できます。ワークベンチ > リスト: キーボードナビゲーション (workbench.list.keyboardNavigation) 設定は、ツリー要素の最初の数文字を入力するだけでその要素にフォーカスする simple モードを含む、デフォルトのモードを設定します。
リスト/ツリーアクションにシングルレターのキーバインドを使用しているユーザーは、listAutomaticKeyboardNavigation コンテキストキーを使用することでこの機能を引き続き使用できます。たとえば、VIM 拡張機能は、自動キーボードナビゲーションを無効にするためにこのコンテキストキーを false に設定し、list.toggleKeyboardNavigation コマンドに / キーバインドを追加するため、ユーザーは / を入力するだけでツリーをナビゲートできます。これについては、VSCodeVIM プルリクエストで詳しく学習できます。
テーマの作成者は、次の新しいテーマキーを使用してウィジェットの色をカスタマイズできます。
listFilterWidget.backgroundlistFilterWidget.outlinelistFilterWidget.noMatchesOutline
注: これらのキーボードナビゲーションモードは現在、解決済みのツリーノードでのみ機能します。たとえば、ファイルエクスプローラーでは、フォルダーが一度も展開されなかった場合、ツリーはその子を検索しません。このエクスペリエンスを改善するために、いくつかのオプションを検討しています。
階層的なすべて選択
ツリーで Ctrl+A (macOSでは Cmd+A) を押すと、ツリーの選択範囲が階層的に展開されるようになりました。

カスタマイズ可能なインデント
ワークベンチ > ツリー: インデント (workbench.tree.indent) 設定を使用して、ワークベンチ全体のすべてのツリーのノードインデントをカスタマイズできるようになりました。
すべて展開/折りたたみ
ツリーノードを展開/折りたたむときに Alt キーを押したままにすると、再帰的に機能するようになりました。再帰的な展開は、ツリーで以前に表示されたノードでのみ機能することに注意してください。たとえば、ファイルエクスプローラーは、ユーザーが以前に一度も展開しなかったフォルダーを自動的に展開しません。
水平スクロール
ワークベンチ > ツリー: 水平スクロール (workbench.tree.horizontalScrolling) 設定により、エクスプローラー、検索、SCM、デバッグなど、より多くのツリーとリストで水平スクロールが有効になりました。
問題パネル
複数行メッセージ
問題パネルに複数行の診断メッセージが別々の行で表示されるようになりました。以下の例は、TypeScriptからの複数行エラーメッセージがどのように表示されるかを示しています。

折りたたみ/展開ボタンまたは問題: メッセージを1行で表示および問題: メッセージを複数行で表示コマンドを使用して、完全なメッセージを表示または非表示に切り替えることもできます。
キーボードショートカットを使用したコードアクションのトリガー
問題パネルからコードアクションをトリガーできるようになりました。クイックフィックスコマンドと同じデフォルトのキーボードショートカット ⌘. (Windows、Linux Ctrl+.) を使用します。
Goメニューの改善
Go メニューに、より多くのナビゲーションアクションが追加され、見つけやすくなりました。

エクスプローラーコンテキストメニューの切り取りコマンド
多数のリクエストに基づいて、エクスプローラーのコンテキストメニューに切り取りコマンドを追加しました。

高速スクロール
Alt キーを押すと、エディターとエクスプローラーで高速スクロールが有効になります。デフォルトでは、高速スクロールは5倍の速度倍率を使用しますが、エディター: 高速スクロール感度 (editor.fastScrollSensitivity) 設定で倍率を制御できます。
Zenモードが行番号を非表示に
Zenモードをオンにすると、エディターの行番号も非表示になります。この動作は zenMode.hideLineNumbers 設定で制御できます。
カスタムメニューを使用したLinuxでのキーボードナビゲーションの追加
カスタムメニューで Page Up/Down および Home/End キーを使用して、メニューの先頭または末尾にすばやくジャンプできるようになりました。
Windows/Linuxでアプリケーションアイコンをダブルクリックして閉じる
技術的なトレードオフにより、デフォルトでは、WindowsおよびLinuxのカスタムタイトルバーは、アプリケーションアイコンをダブルクリックしてウィンドウを閉じる機能を削除します。この機能は window.doubleClickIconToClose 設定を有効にすることで取り戻すことができますが、この場所からウィンドウをドラッグしたり、Windowsでシステムコンテキストメニューを取得したりできなくなるという注意点があります。
エディタータブの閉じる順序
新しい設定 workbench.editor.focusRecentEditorAfterClose により、エディタータブが閉じられる順序を変更できます。デフォルトでは、タブは最後に使用された (MRU) 順序で閉じられます。この設定を変更すると、代わりにタブを右から左に閉じることができます。
新しいタイトル変数
window.title 設定内で使用できる3つの新しい変数があります。
${activeFolderShort}: ファイルが含まれているフォルダーの名前。${activeFolderMedium}: ファイルが含まれているフォルダーのパス (ワークスペースフォルダーからの相対パス)。${activeFolderLong}: ファイルが含まれているフォルダーのフルパス。
出力パネル
出力パネルのスマートスクロール動作がより効率的になりました。出力パネルのどこかをクリックするとスクロールがロックされ、最後の行をクリックするとロックが解除されます。
スクリーンキャストモード
VS Code に新しいスクリーンキャストモードが追加され、カーソル位置とキーストロークが強調表示されます。スクリーンキャストモード (開発者: スクリーンキャストモードの切り替え) は、デモンストレーション目的で役立ちます。

Editor
スマート選択
選択メニューの選択範囲の拡大と選択範囲の縮小の実装の改善に取り組みました。言語サーバーがセマンティクス知識に基づいて選択ステップを指定できるAPIを追加する過程にあります。さらに、デフォルトの実装も改善しました。

スマート選択が改善されるにつれて、さらなる機能にご期待ください。smart-selectラベルを使用して、現在取り組んでいる内容を確認してください。
参照履歴
参照ビューに参照: 履歴を表示コマンドが追加されました。これにより、以前の検索結果を含むクイックピックが表示され、以前の検索をすばやく再実行できます。

参照CodeLens
参照CodeLensを選択すると、ピークエディターが開きます。これは references.preferredLocation 設定で制御できるようになりました。オプションは peek と view で、後者は新しいビューで参照を表示します。
スニペットの説明
長い説明のスニペットを作成する場合、以前は長い単一の文字列を記述する必要がありました。body のように配列を使用するサポートはありませんでした。これは変更され、長い説明は文字列配列を使用して記述できるようになりました。
{
"prefix": "happy",
"body": "#Happy Coding!",
"description": ["First Line", "Second Line", "Third Line"]
}
レガシー検索モードの削除
20リリース前、VS Code の検索にripgrepを使用し始めました。古いNode.jsベースの検索実装は、設定 search.useLegacySearch の背後で引き続き利用可能でした。しかし、マリー・コンドーが言うように、もはや喜びをもたらさないものは整理しなければなりません。後方参照や先読みなどの正規表現機能を使用している場合は、search.usePCRE2 設定をオンにしてください。
JSONとして設定を編集するためのシンプルなテキストエディターの使用
同様のテーマで、設定UIがいくつかリリースされてから、JSON設定の編集エクスペリエンスを簡素化することを検討しています。settings.json ファイルを開くか、設定UIの {} ボタンをクリックするか、Preferences: Open User Settings (JSON) コマンドを呼び出すことで、JSONとして設定を編集すると、以前の分割JSONエディターではなく、シンプルなJSONエディターが表示されます。Preferences: Open Default Settings (JSON) コマンドを使用して、デフォルト設定のリストを引き続き表示できます。
左側にデフォルト設定がある分割JSONエディターが本当に恋しい場合は、workbench.settings.useSplitJSON 設定を有効にすることで復元できます。希望する場合は常にJSONとして設定を編集できることに注意してください。
拡張機能のネットワークプロキシサポート
設定Http: Proxy Support (http.proxySupport) は、デフォルトですべての拡張機能に対してネットワークプロキシサポートを有効にするようになりました。

言語
TypeScript 3.3
TypeScript 3.3.1 を同梱するようになりました。このTypeScriptアップデートには、いくつかの重要なバグ修正と改良が含まれています。
markdown.previewFrontMatter設定の削除
markdown.previewFrontMatter 設定は削除されました。Markdownプレビューは常にYAMLフロントマターを非表示にするようになりました (これは markdown.previewFrontMatter のデフォルト設定でした)。
Markdown yaml Preamble や GitHub Markdown Preview などのMarkdown拡張機能は、プレビューでフロントマターをテーブルとしてレンダリングします。
セマンティック選択
HTML、CSS/LESS/SCSS、JSON でセマンティック選択が利用できるようになりました。

統合ターミナル
リフローのサポート
ターミナルは、水平方向にサイズ変更されると、行を折り返したり元に戻したりするようになりました。

WindowsでのConPTYサポート
Windows ConPTY API を介したターミナルプロセスの管理が、Windows Insiders fast ring (ビルド番号18309+) でオプトインオプションとして利用できるようになりました。
{
"terminal.integrated.windowsEnableConpty": true
}
これにより、Windows Consoleチームが提供するConPTYシステムがターミナルのバックエンドとして使用されます。これを有効にすると、Windowsターミナルの多くの問題、特に色サポート、対話型アプリケーション、VTシーケンスをネイティブにサポートするシェルに関する問題が修正されるはずです。
WSLターミナルでの256 ANSIカラーサポートのビフォーアフターはこちらです。


リンクに使用される現在の作業ディレクトリ
LinuxおよびmacOSでは、ターミナルは、ターミナルの初期ディレクトリではなく、現在の作業ディレクトリを基準にしてリンクを解決するようになりました。

ターミナル検索の改善
ターミナルの検索は、増分的な「入力しながら検索」機能と、単一の行で複数の用語を検索する機能をサポートするようになりました。
commandsToSkipShell設定の改善
以前は、terminal.integrated.commandsToSkipShell 設定は、ターミナルによる評価をスキップしてVS Codeによって処理されるすべてのコマンドのリストでした。これは、設定ファイルに100以上のコマンドのリストが必要になるため、不便でした。これは、追加と削除のリストに変更され、デフォルトのリストへの変更のみを含めるようになりました。
{
"terminal.integrated.commandsToSkipShell": [
// Make ctrl+n open a new file when the terminal is focused
"workbench.action.files.newUntitledFile",
// Send ctrl+e to the terminal
"-workbench.action.quickOpen"
]
}
新しいバッファ実装が有効になりました
v1.29で導入されたTypedArray/ArrayBufferベースのターミナルバッファが有効になり、古い実装は削除されました。これにより、ターミナルのスループットが大幅に向上し、メモリ使用量も大幅に削減されるはずです。
デバッグとタスク
カスタムコマンドのユーザー入力変数
前のマイルストーンで導入された入力変数は、タスクまたはデバッグ構成でユーザー入力を要求するための強力なメカニズムです。最初に、promptString と pickString 入力変数が利用可能になりました。
このマイルストーンでは、入力変数が補間されるときに任意のコマンドを実行する新しいタイプの入力変数 command を導入しています。コマンドは拡張機能によって貢献できるため、新しい実装によってユーザー入力変数を拡張できるようになりました。
次の例は、特定のフォルダーで見つかったすべてのテストケースのリストからユーザーがテストケースを選択できるようにするデバッグ構成で、command 型のユーザー入力変数を使用する方法を示しています。何らかの拡張機能が、構成可能な場所にあるすべてのテストケースを特定し、それらのいずれかを選択するためのピッカーUIを表示する extension.mochaSupport.testPicker コマンドを提供すると想定しています。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "${workspaceFolder}/tests"
}
}
]
}
タスク出力でターミナルの分割をサポート
新しいターミナルパネルを作成する代わりに、タスクの出力を分割ターミナルパネルに表示するように構成できるようになりました。タスク構成では、presentation セクションの group 属性を使用して、タスクの出力を表示する場所を定義できます。
以下の2つのタスクの両方を実行すると、分割されたターミナルに表示され、両方を同時に見ることができます。
{
"version": "2.0.0",
"tasks": [
{
"label": "Task One",
"type": "shell",
"command": "echo One && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
},
{
"label": "Task Two",
"type": "shell",
"command": "echo Two && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
}
]
}

プレビュー機能
プレビュー機能はリリース準備ができていませんが、使用できる程度には機能しています。開発段階での皆様の早期フィードバックをお待ちしております。
ワークベンチのグリッドレイアウト
ワークベンチのレイアウトは、エディター自体が使用するのと同じグリッドレイアウトを使用するように再設計されています。ここで行われている作業は、長期的にワークベンチレイアウトを維持するエンジニアリング作業を簡素化するだけでなく、新しいエクスペリエンスをより簡単に実現するのにも役立ちます。
このマイルストーンでは、新しいグリッドレイアウトでより簡単に実現できることを示す1つのエクスペリエンス、エディター領域の切り替えをリリースしています。実験的なグリッドレイアウトが有効になっている場合 ("workbench.useExperimentalGridLayout": true)、コードエディターを非表示にする新しいコマンドToggle Editor Areaがあります。これにより、以下に示すように、エディター領域全体を占めるVS Codeターミナルパネルを作成できます。

ターミナルから code file.txt を使用してファイルを開いても、期待どおりにエディターが開きます。この機能はまだ開発中であり、既知の問題がありますが、ぜひ試して問題を報告してください。この作業に関する問題の最新情報については、このクエリで確認できます。
HTMLおよびCSSカスタムデータサポート
この機能はプレビュー段階であるため、設定、貢献ポイント、およびデータ形式は変更される可能性があります。

現在、フロントエンド開発者はHTML/CSSのスーパーセットでコードを記述することがよくあります。
- Web Componentsにより、
<my-button type="alert"></my-button>のようなカスタムHTML要素が可能です。 - PostCSSにより、
sizeのようなカスタムCSSプロパティや、:any-linkのようなまだ標準化されていないCSS機能が可能です。 - さまざまなフレームワークにより、ソースHTML/CSSでさらに柔軟性が向上します。
このイテレーションでは、1.30で導入されたHTMLカスタムデータサポートを改善し、CSSカスタムデータサポートを追加しました。
- カスタムデータを読み込むには、
html.experimental.customDataまたはcss.experimental.customDataを使用します。(html.experimental.custom.tagsおよびhtml.experimental.custom.attributesは削除されました。) - または、JSONを
contributes.html.experimental.customDataまたはcontributes.css.experimental.customDataとともに拡張機能にバンドルします。 - 最後に、vscode-html-languageservice または vscode-css-languageservice を使用する言語サーバーを記述している場合は、カスタムデータを使用して言語サービスを作成できます。
カスタムデータは、VS Code のHTML/CSSの理解を強化します。たとえば、これらのHTML/CSS JSONの貢献により、VS CodeはカスタムHTMLタグ/属性およびCSSプロパティ/擬似クラスの補完とホバーを提供できます。
{
"version": 1,
"tags": [
{
"name": "my-button",
"description": "My button",
"attributes": [
{
"name": "type",
"description": "My button type",
"values": [{ "name": "alert" }]
}
]
}
]
}
{
"version": 1,
"properties": [
{
"name": "my-size",
"description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
}
],
"pseudoClasses": [
{
"name": ":my-link",
"description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
}
]
}
上記のサンプルはoctref/simple-customdataで利用でき、より充実したサンプルはoctref/svg-dataで利用できます。
これらのガイドは、データ形式と、設定および拡張機能の貢献ポイントを通じてそれらを使用する方法について説明しています。
拡張機能作成
拡張機能の変更イベント
extensions.all 配列が変更されたときに発生する新しいイベント extensions.onDidChange が追加されました。これは、拡張機能がインストール、アンインストール、有効化、または無効化されたときに発生する可能性があります。拡張機能のインストール時にリロードなしセクションを参照してください。
/**
* An event which fires when `extensions.all` changes. This can happen when extensions are
* installed, uninstalled, enabled or disabled.
*/
export const onDidChange: Event<void>;
注: 新しい貢献ポイントを導入する拡張機能作成者は、このイベントをリッスンし、それに応じてワークベンチの状態を更新する必要があります。
ブラウザでリソースを開く
いくつかの拡張機能が、opn や open のようなnodeモジュールを使用してURLをブラウザで開いていることを確認しました。この機能の要望に応え、新しいAPI vscode.env.openExternal を追加しました。これはURLを想定しており、ウェブサイトのリンク、メールのリンク、またはアプリケーションURLハンドラを開くために使用できます。また、PDFファイルのように、ファイルURLもそのデフォルトのアプリで開くために受け入れられます。
// open default browser
await vscode.env.openExternal(
vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);
注: 現在 opn または open モジュールを使用している拡張機能作成者は、この新しいAPIに切り替える必要があります。
グローバルストレージパス
拡張機能には、読み書きアクセス権を持つローカルディレクトリを指すグローバルストレージパス ExtensionContext.globalStoragePath が提供されるようになりました。これは、すべてのワークスペースからアクセスできる大きなファイルを保存する必要がある場合に最適なオプションです。
/**
* An absolute file path in which the extension can store global state.
* The directory might not exist on disk and creation is
* up to the extension. However, the parent directory is guaranteed to be existent.
*
* Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
*/
globalStoragePath: string;
VS Codeは、拡張機能が削除されたときにこのパスをクリーンアップします。
注: 現在、ワークスペース間で状態を保存するためにカスタムファイルシステムロケーションを使用している拡張機能作成者は、この新しいAPIに切り替える必要があります。
CodeActionKind.intersects
CodeActionKind.intersects メソッドは、CodeActionProvider がCode Actionを計算する必要があるかどうかをチェックするのに役立ちます。
import * as vscode from 'vscode';
export class OrganizeImportsProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range,
context: vscode.CodeActionContext,
token: vscode.CancellationToken
): vscode.CodeAction[] {
// Only return organize imports actions if they were explicitly requested
// We can check this using `intersects`.
if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
// Organize imports actions were not requested
return [];
}
// Organize imports was requested
...
}
}
contributes.resourceLabelFormatters
拡張機能は、ワークベンチのあらゆる場所でURIを表示する方法を指定するリソースラベルフォーマッターを貢献できるようになりました。たとえば、次のように拡張機能が remotehub スキームを持つURIのフォーマッターを貢献できます。
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
これは、remotehub スキームを持つすべてのURIが、URIの path セグメントのみを表示してレンダリングされ、区切り文字は / になることを意味します。remotehub URIを持つワークスペースは、ラベルにGitHubサフィックスを持ちます。
キーバインドに引数を追加
package.json でキーバインドを定義するときに、引数を定義できるようになりました。実行時に、これらの引数はコマンドに渡されます。
以下のサンプルでは、{foo: 1, bar: 2} です。
"keybindings": {
"key": "cmd+i",
"command": "myCommand",
"args": {
"foo": 1,
"bar": 2
}
}
createTerminal環境の完全な制御
新しい設定 TerminalOptions.strictEnv がtrueに設定されている場合、ターミナル環境に一切変更を加えず、拡張機能によって渡されたとおりに正確に使用されます。
// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
name: 'Test terminal',
env: {
FOO: 'BAR'
},
strictEnv: true
});
Node.jsの更新
VS Codeが実行されているElectronのバージョンが更新され、Node.jsが 8.9 から 10.2.0 に更新されました。すべての拡張機能は、この新しいバージョンのNode.jsで実行されるようになります。Node.js 10での非推奨リストについては、Node v10.0.0 deprecationsを参照してください。
更新されたOcticons
Octiconsのバージョンを8.3.0に更新し、以下のアイコンをサポートするようになりました。
![]()
$(arrow-both)$(bold)$(color-mode)$(eye-closed)$(fold-down)$(fold-up)$(grabber)$(italic)$(kebab-horizontal)$(kebab-vertical)$(note)$(organization-filled)$(person-filled)$(project)$(request-changes)$(screen-full)$(screen-normal)$(smiley)$(tasklist)$(text-size)$(unverified)$(verified)
サポートしているアイコンの完全なリストは、ドキュメントで確認できます。変更の完全な詳細リストについては、Octicon changelogを参照してください。
提案された拡張API
各マイルストーンには新しい提案APIが付属しており、拡張機能開発者はこれらを試すことができます。いつものように、皆様からのフィードバックをお待ちしております。提案APIを試すには、次の手順を実行します。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能の
package.jsonファイルに次の行が必要です:"enableProposedApi": true。 - vscode.proposed.d.tsファイルの最新バージョンをプロジェクトにコピーします。
提案APIを使用する拡張機能は公開できないことに注意してください。次回のリリースでは互換性のない変更が行われる可能性があり、既存の拡張機能を壊すことは決して望ましくありません。
SignatureHelpContext.activeSignatureHelp
提案されている SignatureHelpContext.activeSignatureHelp フィールドは、以前アクティブだったシグネチャを追跡します。
import * as vscode from 'vscode';
class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// The active signature help when this provider was triggered or undefined if
// no signature help was active.
console.log(context.activeSignatureHelp);
...
}
}
プロバイダーはこれを使用して、シグネチャヘルププロバイダーが再トリガーされる前にどのオーバーロードが選択されたかを追跡できます。
自動修正とCodeAction.isPreferred
Code Action API は、VS Code のクイックフィックス (エディターに表示される電球) を強化します。特定のエラーに対して多くのクイックフィックスがあるかもしれませんが、多くの場合、これらのクイックフィックスの1つが問題に対する最も合理的な修正です。たとえば、スペルミスを修正する方が、新しいフィールドを生成するよりも一般的に可能性が高い修正です。

提案されたAPIを使用すると、拡張機能は CodeAction に isPreferred を設定して、それが根本的な問題に対する最も合理的な修正であることを示すことができます。推奨される修正は、自動修正コマンド (⌥⌘. (Windows、Linux Shift+Alt+.)) を使用して自動的に適用できます。

推奨されるクイックフィックスは、一般的に次のとおりである必要があります。
- 根本的なエラーを正しく修正する (抑制しない)。
- エラーに対する合理的な修正であること。
- 予期せず広範な操作を実行しないこと。
リファクタリングCode Actionも、最も合理的なリファクタリングであることを示すために preferred としてマークできます。たとえば、複数の定数を抽出リファクタリングが利用可能であっても、ユーザーは多くの場合、最も近いローカルに抽出したいだけです。そのリファクタリングCode Actionが isPreferred とマークされている場合、ユーザーはそれに対して単一のキーバインドを設定できます。
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true
}
}
すべてのソースアクションを修正
提案されている source.fixAll CodeActionKind は、ファイル内のエラーを自動修正できる拡張機能の慣例を確立します。この新しいソースアクションの種類は、インポートの整理に似ており、すべての修正アクションのキーバインドを簡単に構成したり、保存時に自動修正を有効にしたりできます。
// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
}
TSLint 拡張機能は、この提案されているソースCode Actionの種類を使用して、保存時にすべての修正と自動修正を実装しています。
Debug Adapter Protocol
データブレークポイントのデバッグアダプタープロトコル案
データブレークポイント (別名「ウォッチポイント」) に関する進行中の作業のフォローアップステップとして、データブレークポイントのデバッグアダプタープロトコルの設計においていくつかの進捗がありました。提案されたDAPの変更は、このブランチにあり、対応するTypeScript APIはデータブレークポイントの提案で見つけることができます。
デバッガー拡張機能でデータブレークポイントのサポートに関心がある場合は、提案を参照し、フィードバックを提供してください。
ライブテーマ編集
カラーテーマ拡張機能を開発する際に、拡張機能開発ホストウィンドウで色の変更がライブで適用されるのを確認できます。

ファイルアイコンテーマでも同じように機能します。
エンジニアリング
Electron 3.0のアップデートとElectron 4.0の調査
このマイルストーンでは、Electron 3をVS Codeにバンドルする調査を完了し、このElectronバージョンを安定版として初めて出荷しました。これは主要なElectronリリースであり、Chrome 66とNode.js 10.x (現在のChrome 61とNode.js 8.xに比べて大幅な進歩) が付属しています。
同時に、Electron 4への更新の調査を開始し、間もなくInsidersにプッシュしたいと考えています。
より良いパフォーマンス情報
このリリースでは、開発者: 起動パフォーマンスコマンドの出力がエディターに表示され、DevToolsには表示されなくなりました。これにより、読みやすくなり、アクセスしやすくなりました。さらに、情報に関する多くの問題が修正されました。
WinJS.Promiseの削除 ✅
VS Code が開始された当時、JavaScript は今日のようなものではありませんでした。たとえば、ネイティブのプロミスはなく、チームは非同期作業のために WinJS.Promise を使用することにしました。今日、状況は異なります。ネイティブのプロミスは本物であり、WinJS.Promise は廃止されています。昨年の半ばに、コードベースから WinJS.Promise を削除する取り組みを開始し、12月に完了しました。
厳密なnullチェック
VS Code のメインコードベースの厳密なヌルチェックの作業を続けました。皆様のご協力のおかげで、このマイルストーンでは、多数のテストファイルに対して厳密なヌルチェックを有効にすることができ、多数のエラーを排除しました。
次のマイルストーンでも厳密なヌルチェックの取り組みを継続します。
拡張機能への貢献
私たちのチームは、いくつかの VS Code 拡張機能を維持または貢献しています。特に今月は以下です。
TSLint のサポート
新しいTSLint 拡張機能は、source.fixAll コードアクションを使用して保存時の自動修正をサポートするようになりました。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
非推奨のTSLint (eg2.tslint) 拡張機能のすべてのユーザーは、新しいTSLint 拡張機能に移行することをお勧めします。
Stylus言語のサポート
Stylus言語拡張機能は、vscode-css-languageservice から厳選されたデータを使用して、ステータス警告と構文ドキュメントを含む最新の補完を提供できるようになりました。

GitHubプルリクエスト
このマイルストーンでは、GitHubプルリクエスト拡張機能の改善作業を続けました。
以下にいくつかの新機能を示します。
- GitHub レビューをサポート。コメントを個別に追加するだけでなく、レビューにグループ化できるようになりました。
- ワークスペースが GitHub リポジトリである場合、Live Share セッションに参加すると、拡張機能がシームレスに動作します。
- GraphQL をプロジェクトに徐々に導入した結果、説明ビューでプルリクエストの詳細情報が表示されるようになり、拡張機能全体のパフォーマンスが向上しました。
- プルリクエストをマージする際に、マージコミットを作成、Squash and Merge、またはRebase and Mergeを選択できるようになりました。
- パフォーマンスの改善。プルリクエストの閲覧、ファイルの変更、プルリクエストのチェックアウト時にGitHubへのAPI呼び出しとgit操作の両方を削減し、特にWindowsで拡張機能の応答を高速化しました。
拡張機能の完全なリリースノートは、vscode-pull-request-github releases で読むことができます。
新しいドキュメント
Python Jupyter Notebooks
新しいJupyter Notebooks の操作のトピックでは、VS Code 内からJupyter Notebooks を開く、デバッグする、エクスポートする方法について説明しています。
JavaScript および TypeScript のドキュメントの改善
JavaScript および TypeScript の記事を更新し、最新の状態に保ち、より役立つ情報を提供するようにしました。
JavaScript および TypeScript のページでは、VS Code がこれらの言語で提供する機能の概要を説明しています。これらの機能の詳細な説明とチュートリアルは、目次のNode.js / JavaScript および TypeScript の下の新しいページに移動されました。
更新された拡張機能APIドキュメント
拡張機能作成者向けに、VS Code API ドキュメントは書き直され、独自の目次に移動されました。

ここには、次の記事があります。
注目すべき修正点
- 7570: VS Code がオフラインで開かない
- 14372: 拡張機能: 無効化状態をウィンドウ間で伝える必要がある
- 34396: 単一CPU VMでの高いCPU使用率
- 58167: OS再開後、ターミナルとミニマップの復元テクスチャが破損する
- 59794: editor.accessibilitySupport が 'auto' に設定されている場合、ターミナルスクリーンリーダーサポートが機能しない
- 61649: デバッグで未定義のプロパティ 'onError' を読み取れない
- 63832: 拡張機能のデバッグ中にlspサーバーにアタッチできない
- 64948: GDB C/C++ デバッガがエラーを出して起動しない
- 65697: nodeクラスターフォークプロセスでautoAttachChildProcessesによるstopOnEntryデバッグが尊重されない
- 66302: Ctrl + L はデフォルトでreplをクリアするようにバインドされるべき
- 66681: 「比較のために選択」および「選択と比較」コマンドが仮想ドキュメントに対して表示されない
このリリースには、Microsoft Security Response Center CVE-2019-0728 のセキュリティアップデートも含まれています。
ありがとうございます
最後に、そしてもちろん最も重要なこととして、Visual Studio Codeをさらに良くするために協力してくれた以下の方々に、心からの感謝を申し上げます!
課題追跡への貢献。寄せられた課題の管理にご協力いただける場合は、Community Issue Tracking ページをご覧ください。
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- Prabhanjan S Koushik (@skprabhanjan)
- Eric Amodio (@eamodio)
- Christopher Leidigh (@cleidigh)
vscodeへの貢献者
- Alec Chan (@aechan): 検索: クリアボタンの動作の改善 PR #63082
- Alexander Eyers-Taylor (@aeyerstaylor)
- Agustín Rodríguez (@agurodriguez): 'Report Issue' および 'Process Explorer' ウィンドウがフルスクリーンモードで開かないようにする PR #64839
- Anirudh Rayabharam (@anirudhrb): issue 65204: open keybindings icon disappears を修正 PR #65968
- @asaf050: ターミナルのコンテキストメニューからターミナルを終了できるようにする PR #66535
- Chris Patterson (@chrisrpatterson): ビルドバッジURLを更新 PR #67008
- Christian Alexander (@ChristianAlexander): git add -N で追加されたファイルの表示処理を追加 PR #59163
- Christian Flach (@cmfcmf): タスクに terminalGroup を追加し、分割ペインで実行できるようにする PR #65973
- Christian Oliff (@coliff): EditorConfig.org へのHTTPSリンク PR #65358
- Danny Tuppeny (@DanTup): タイポの修正: "accepeted" => "accepted" PR #64976
- @davidwu226: 無効なJSONを修正。 PR #65447
- Donald Pipowitch (@donaldpipowitch): .vscodeignore のシンタックスハイライトを追加 PR #64960
- Thai Pangsakulyanont (@dtinth): tsconfig.json の解析時に JSON.parse の代わりに jsonc.parse を使用し、tsconfig.json にコメントが含まれている場合に
-bフラグがアクティブにならないバグを修正。 PR #67535 - Thien Do (@dvkndn): nvmrc を node 8 に更新 PR #67183
- Ashwin Ramaswami (@epicfaace)
- Phil (@flurmbo): md 画像リンクを検出 PR #66958
- li zixiang (@fuafa): findModel.test.ts に厳密なヌルチェックを追加 PR #66436
- Gabriel Arjones (@g-arjones): #59635 を修正 PR #60111
- @g1tman: ターミナルが非表示の場合、リサイズ時にフォントを取得しない PR #66781
- Gabriel DeBacker (@GabeDeBacker): ターミナル作成時にVSCodeのプロセス環境を無視できるようにする PR #64733
- Chris Ganga (@gangachris)
- src/vs/base/test/common/async.test.ts の厳密なヌルチェックを有効にする PR #65442
- ./vs/base/test/common/keyCodes.test.ts の厳密なヌルチェックを有効にする PR #65454
- ./vs/base/test/common/octicon.test.ts の厳密なヌルチェックを有効にする PR #65458
- ./vs/base/test/node/config.test.ts の厳密なヌルチェックを有効にする PR #65471
- ./vs/base/test/common/event.test.ts の厳密なヌルチェックを有効にする PR #65444
- ./vs/base/test/common/history.test.ts の厳密なヌルチェックを有効にする PR #65453
- windowsFinder の厳密なヌルチェックを有効にする PR #65551
- find コントローラーの厳密なヌルチェックを有効にする PR #65553
- Gaurav Gupta (@gaurav5430): ./vs/platform/contextkey/test/common/contextkey.test.ts の厳密なヌルチェックを有効にする PR #65474
- Guy Waldman (@guywald1): [git] 特定の参照からブランチを作成するコマンドを追加 PR #59078
- Henk Mollema (@henkmollema): 著作権年を2019年に更新 PR #65875
- Ilya Biryukov (@IlyaBiryukov): Gitログ、globalConfig、ツリー差分APIを追加 PR #64826
- James Dinh (@jamesdinht): ファイルテストの厳密なヌルチェックを有効にする PR #65249
- James George (@jamesgeorge007): ユーザー定義スニペットで複数行の説明をサポート PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC): [テーマ] エディターを再起動せずにテーマをリロードする機能を追加 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne): xtermjs のバグを回避するためにレイアウトの更新をトリガーすることで #58159 を修正 PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010): 更新を完全に無効にする、手動にする、自動にする設定を許可する PR #60973
- Kumar Harsh (@kumarharsh): fix(loc): 透明な色の説明の誤った表現を修正 PR #66334
- Anton Marchenko (@marchenko-am): #64379 を修正 - SimpleFindWidget の位置が (非表示状態で) 変更された PR #64558
- Mathias Rasmussen (@mathiasvr): HTML スニペット: 一貫したボイドタグ PR #66072
- Maksymilian Barnaś (@maxbarnas): #61410 「フォルダー内で検索」アクションにキーバインドを追加 PR #61526
- Mrigank Krishan (@Mrigank11): 既知の巨大なフォルダを .gitignore に追加するように促す、#44304 を修正 PR #44562
- J.M. Rütter (@mynetx): ターミナル分割時に一時的に表示される未定義のタイトルを非表示にする PR #61981
- Néstor Hernández Ojeda (@nesukun): 強制プッシュのために scm/git コンテキストメニューにエントリを追加 PR #60387
- Noj Vek (Manoj P) (@nojvek): #27107 を修正 - リンクにユーザーのターミナルの cwd を使用 PR #64750
- Nuno Lopes (@nunottlopes): Windows でスペースを含むパスでターミナル内のアクティブなファイルを実行する問題を修正 PR #65331
- Oleg Voloshin (@oniondomes): workspaceStats テストの厳密なヌルチェックを有効にする PR #65429
- Raul Piraces Alastuey (@piraces): suggestMemory.test.ts に厳密なヌルチェックを追加 PR #66754
- Prateek Singh (@punteek): simpleServices テストの厳密なヌルチェックを有効にする PR #65571
- Rich Evans (@rcbevans): ウィジェットを閉じるための xterm mouseleave を追加 PR #66576
- Matthias Reitinger (@reima): キーバインディングリストヘッダーの動作に関する問題を修正 (#_41558) PR #60217
- Romain Marcadier-Muller (@RomainMuller): 参照が使用されている場合の「tsc watch」タスクを修正 PR #67148
- Rudi Chen (@rudi-c): breadcrumbs.ts、outlineModel.ts、breadcrumbsModel.ts で strictNullChecks を有効にする PR #65062
- Segev Finer (@segevfiner)
- @SimonEggert: タブを閉じる順序の設定を追加 PR #66635
- Prabhanjan S Koushik (@skprabhanjan)
- Tereza Tomcova (@the-ress): bootstrap.js で UNC パスを正しく処理する PR #66128
- Tiago Ribeiro (@TiagoR98): 機能 #24344 を実装 PR #65072
- Tyler James Leonhardt (@TylerLeonhardt): シングルクォートがあるがスペースがないというエッジケースを処理 PR #66359
- Alexander (@usernamehw)
- Comparers テストの厳密なヌルチェックを有効にする PR #65301
- 検査 TM ウィジェットにコントラスト比を追加 PR #64495
- quickOpenScorer テストの厳密なヌルチェックを有効にする PR #65299
- カーソルを中括弧内に移動する PR #67164
- ユーザー設定ファイルをいじらずに commandsToSkipShell を除外/含める PR #66179
- Notifications テストの厳密なヌルチェックを有効にする PR #65291
- snippetVariables テストの厳密なヌルチェックを有効にする PR #65236
- SplitView テストの厳密なヌルチェックを有効にする PR #65307
- テーマ/アイコンテーマフィルターの後にスペースを追加 PR #64745
- GridView テストの厳密なヌルチェックを有効にする PR #65305
- ダーティ状態が上部の境界線で強調表示されている場合、タブの閉じるボタンを完全に非表示にする PR #64718
- Dipen Ved (@vedipen)
- @vemoo: 名前付き複数行問題パターンの解析を修正 PR #65840
- Vladimir Kotikov (@vladimir-kotikov):
git pullを実行する前に自動的に変更をスタッシュするオプションを追加 PR #59849 - Jeremy Shore (@w9jds): #57910 を修正 - 自動フェッチタイムアウトの設定を追加 PR #59988
- Matthew Walinga (@walinga): ステージラインコマンド使用時に空の最終行削除をステージング PR #59974
- Yisrael Veller (@YisraelV)
vscode-eslintへの貢献者
- Jonathan T L Lee (@Lee182): Issue 529, pnpm のサポートを追加 PR #572
- Loune Lam (@loune): disable-eslint の修正と改善 PR #588
language-server-protocolへの貢献者
- Laurent Tréguier (@LaurentTreguier): 重複するラベルプロパティを削除 PR #638
- Jason Axelson (@axelson): 変更ログリンクを修正 PR #654
vscode-languageserver-nodeへの貢献者
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker): package.json に repository.directory フィールドを追加 PR #439
- Laurent Tréguier (@LaurentTreguier): 構成がリソーススコープを常に使用しない問題を修正 PR #446
- Aleksey Kladov (@matklad): readme に
npm run symlinkについて言及 PR #452
debug-adapter-protocolへの貢献者
- Ben Jackson (@puremourning): 実装リストに vimspector を追加 PR #21
- Sean Allred (@vermiculus): 概要における様々なタイポを修正 PR #22
vscode-vsceへのコントリビューション
- Alexander (@usernamehw): コンソールメッセージに色を追加 PR #324
vscode-json-languageserviceへの貢献
vscode-css-languageserviceへの貢献者
- Krister Kari (@kristerkari): :export ブロック内の不明なプロパティについて警告しない PR #137
- Simon Chan (@yume-chan)
- Matthew Dean: Less のルート関数、ルックアップ、匿名ミキシンをサポート PR #135
vscode-html-languageserviceへの貢献
- Liam Newman (@bitwiseman): 1.9.0-beta1 に更新 PR #43
vscode-generator-codeへの貢献者
- Aurélien Pupier (@apupier): 改行に関する markdownLint ガイドラインに従う #154 PR #155
vscode-recipesへの貢献
- Alan Agius (@alan-agius4): docs: ng test コマンドを更新 PR #179
- Bryan Chapel (@bryanchapel): README.md を更新 PR #176
- @CannibalKush: Angular フローの変更 PR #177
- zhan ishzhanov (@janat08): JEST レシピの引数を分割 PR #174
localizationへの貢献
Microsoft Localization Community Platform (MLCP) を使用している Cloud + AI Localization コミュニティメンバーは600人以上おり、Visual Studio Code に約100人のアクティブな貢献者がいます。
新しい翻訳の提供、翻訳への投票、プロセス改善の提案など、皆様の貢献に感謝いたします。
貢献者の概要はこちらです。貢献者名リストを含むプロジェクトの詳細については、https://aka.ms/vscodeloc のプロジェクトサイトをご覧ください。
- ブルガリア語: Любомир Василев.
- チェコ語: Samuel Tulach。
- デンマーク語: Johan Fagerberg。
- オランダ語: Jos Verlinde, Eric Algera。
- フィンランド語: Petri Niinimäki, Valtteri Vatanen。
- フランス語: Mohamed Sahbi, Thomas Gouthière。
- ドイツ語: Frank Lindecke, Hans Meiser, Jakob von der Haar, Sebastian Seidl。
- ヘブライ語: Kyle Orin。
- ヒンディー語: Satish Yadav, nirav adatiya, shaswat rungta, Dhanvi Kapila。
- ハンガリー語: Péter Nagy。
- 簡体字中国語: 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭。
- インドネシア語: Azhe Kun。
- イタリア語: Michael Longo。
- 日本語: nh, Masakazu TENMYO, 裕子 知念。
- 韓国語: SeungJin Jeong。
- ノルウェー語: Stephan Eriksen。
- ポーランド語: grzegorz m, Jakub Jedryszek。
- ポルトガル語 (ブラジル): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni。
- ポルトガル語 (ポルトガル): Vitor Barbosa。
- スペイン語: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta。
- タミル語: Mani M。
- トルコ語: Muhammed Emin TİFTİKÇİ。
- ウクライナ語: Did Kokos。
- ベトナム語: Việt Anh Nguyễn。