2022年5月 (バージョン 1.68)
更新 1.68.1: この更新は、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の2022年5月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるであろう多くの更新があります。主なハイライトをいくつかご紹介します。
- 表示言語の構成 - インストール済みおよび利用可能な言語パックをそれぞれの言語で表示します。
- 問題パネルのテーブルビュー - エラーと警告をテーブルとして表示し、ソースで素早くフィルター処理できます。
- 非推奨の拡張機能 - 拡張機能が非推奨であるか、置き換えるべきかを確認します。
- 拡張機能のスポンサーシップ - お気に入りの拡張機能を開発する開発者を支援します。
- .gitignore に基づいてエクスプローラーのファイルを非表示にする - 既存の
.gitignore
を再利用して、エクスプローラーのファイルを非表示にします。 - ターミナルの色とコントラストの強化 - 一致する背景色、最小コントラスト比を見つけます。
- Git ブランチ保護 - VS Code 内でブランチ保護が利用可能です。
- TypeScript のソース定義への移動 - シンボルの JavaScript 実装に直接ジャンプします。
- Web 版 VS Code のローカリゼーション - vscode.dev が選択したブラウザ言語と一致するようになりました。
- 開発コンテナーの仕様 - 進化する開発コンテナーの仕様について詳しく知る。
- プレビュー: Markdown リンク検証 - ヘッダー、画像、ファイルへの破損したリンクを検出します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
ワークベンチ
表示言語の構成の改善
表示言語の構成 コマンドが更新され、次のものが含まれるようになりました。
- その言語での言語名。
- マシンにインストールされていない言語を表示する 利用可能な言語 セクション。言語を選択すると、自動的にインストールされ、その言語が適用されます。
テーマ: Panda Theme
これにより、利用可能な言語パックの発見が容易になるはずです。ご意見をお聞かせください!
問題パネルのテーブルビュー
今回のマイルストーンでは、問題パネルの表示モードをツリーとテーブルの間で切り替える新しい機能を追加しました。ツリービューと比較して、テーブルは各問題のソース(言語サービスまたは拡張機能)を表面化するため、ユーザーはソースによって問題をフィルター処理できます。
問題パネルの右上にある テーブルとして表示/ツリーとして表示 ボタンでビュー UI を切り替えるか、問題: デフォルトビューモード 設定 (problems.defaultViewMode
) でデフォルトビューモードを変更できます。
非推奨の拡張機能
今回のマイルストーンでは、VS Code での非推奨の拡張機能のサポートを追加しました。拡張機能は単に非推奨になることもあれば、別の拡張機能に置き換えられる形で非推奨になることも、その機能が VS Code に組み込まれた際に非推奨になることもあります。VS Code は、以下に示すように、拡張機能ビューで非推奨の拡張機能をレンダリングします。
現在メンテナンスされていない非推奨の拡張機能。
別の拡張機能に置き換えられた非推奨の拡張機能。この場合、VS Code はユーザーがこの拡張機能をインストールすることを許可しません。
その機能が VS Code に組み込まれており、設定を構成することで有効にできる非推奨の拡張機能。
VS Code は非推奨の拡張機能を自動的に移行またはアンインストールしません。推奨される拡張機能に切り替えるための 移行 ボタンが表示されます。
注: 非推奨の拡張機能のリストは VS Code によって管理されています。非推奨であると考える拡張機能がある場合は、このディスカッションにコメントしてご連絡ください。
拡張機能のスポンサーシップ
VS Code では、ユーザーがお気に入りの拡張機能をスポンサーできるようになりました。拡張機能がスポンサーされる場合、VS Code は以下のように拡張機能ビューの詳細ページに スポンサー ボタンを表示します。
スポンサー ボタンをクリックすると、拡張機能のスポンサーURLに移動し、そこでサポートを提供できます。お使いの拡張機能でこの機能を有効にする方法については、拡張機能のスポンサーシップを参照してください。
.gitignore に基づいてエクスプローラーのファイルを非表示にする
ファイルエクスプローラーは、.gitignore
ファイルによって除外されたファイルの解析と非表示をサポートするようになりました。これは、エクスプローラー: Git Ignore を除外 (explorer.excludeGitIgnore
) 設定で有効にできます。この設定は、files.exclude
と連携して、不要なファイルをエクスプローラーから非表示にします。
注: 現時点では、!package.json
のような否定されたグロブは解析できません。
ホバー位置をロックする
一部のカスタムホバーは、他の UI 要素 (例えば、スクロールバー) が存在するため、マウスオーバーが困難または不可能です。ホバーがアクティブなときに Alt
を押すと、それが「ロック」され、より広い境界線が与えられ、ホバーの外側でのマウスの動きによる非表示が防止されます。これは主に、ホバーがスクリーン拡大鏡と適切に連携するためのアクセシビリティ機能ですが、ホバーからテキストをコピーするのにも役立ちます。この機能は、editor.hover.sticky
設定で特に指定されていない限り、エディターホバーは常にマウスオーバーできるため、エディター外でのみ適用されることに注意してください。
設定エディターの改善
設定エディターでは、言語固有の設定にデフォルト値のオーバーライドインジケーターが表示されるようになりました。設定エディターの検索バーに言語フィルターを入力するか (@lang:javascript
など)、または検索バーの右にあるフィルターボタンをクリックして 言語 オプションを選択することで、言語固有の設定を表示できます。
デフォルト値のオーバーライドインジケーターが表示されると、言語固有の設定のデフォルト値が拡張機能によってオーバーライドされたことを示します。インジケーターは、どの拡張機能がデフォルト値をオーバーライドしたかも示します。
テーマ: Light Pink
このイテレーションでは、設定エディターの検索バーにすでに検索クエリがある場合に、設定エディター内の一部のリンクが適切にリダイレクトされない動作も修正されました。リンクには適切なスタイルが適用され、ホバーしたときにさらに分かりやすくなりました。
<video src="/assets/updates/1_68/settings-editor-working-links.mp4" autoplay loop controls muted title="設定エディターで「font」という単語を検索し、目次でターミナルカテゴリを選択すると、terminal.integrated.fontFamily 設定が表示され、その説明には editor.fontFamily 設定へのリンクが含まれています。リンクをクリックすると、設定に正しく移動します。">
テーマ: Light Pink
コメントウィジェットのプライマリボタン
コメントウィジェットは、最初 (最も右側) のアクションにプライマリボタンの色を使用します
ターミナル
検索一致の背景色
前回のリリースでは、ターミナルでの検索はすべての一致に境界線を表示するように実装されていましたが、これはセルの背景を動的に変更するサポートが可能になるまでの一時的な解決策でした。今では、一致をハイライト表示する際にテーマのデフォルトで色付きの背景が使用され、全体的なエクスペリエンスはエディターと似ているはずです。
terminal.findMatchBorder
または terminal.findMatchHighlightBorder
を採用したテーマ作者の方には、テーマにより適合するかコントラストを助ける場合は、terminal.findMatchBackground
と terminal.findMatchHighlightBackground
への移行をお勧めします。
コントラストと最小コントラスト比の改善
検索一致の背景に関する作業により、ターミナルが背景色と前景色をどのように扱うかについて、はるかに柔軟性が増しました。このため、ターミナルでのコントラストに関する改善が行われ、ターミナルの視覚がエディターに近づきました。さらに、視認性を高めるためにテキストの前景色を動的に変更する最小コントラスト比機能が追加されました。
-
コントラストが満たされない場合、輝度は反対方向に移動します。たとえば、より明るい灰色の背景に純粋な黒 (#_000000) の濃い灰色のテキストの場合にコントラストが満たされない場合、色は白に向かって移動しようとし、望ましいコントラスト比を最も満たす値が使用されます。
-
GPU アクセラレーションが無効になっている場合、選択はテキストの下に描画され、不透明な色をサポートします。以前は、これは部分的に透明である必要があり、前景色をぼやけさせていました。この変更のおかげで、選択色はエディターと同じ色を使用するようになりました。
-
Nerd fontのシンボルは、周囲のテキストと溶け込むように最小コントラスト比を適用するようになりましたが、Powerlineのシンボルやボックス描画文字は、前景文字のない反転したセルに隣接していることが多いため、最小コントラスト比を適用しません。
-
テーマは、高コントラストテーマでデフォルトで使用される固定の選択前景色を指定できるようになりました。
-
結果の前景色をより正確にするために、いくつかのバグが修正されました。
念のため、元の色を希望する場合は、"terminal.integrated.minimumContrastRatio": 1
を設定することで、最小コントラスト比を無効にできます。
タスク
デフォルトのタスクのグロブパターン
デフォルトのビルドタスクとテストタスクは、アクティブなファイルがファイル名グロブパターンに一致する場合にのみ「デフォルト」になるようにスコープを設定できるようになりました
{
"version": "2.0.0",
"tasks": [
{
"label": "echo txt",
"type": "shell",
"command": "echo TextFile",
"group": {
"kind": "build",
"isDefault": "**.txt" // This is a glob pattern which will only match when the active file has a .txt extension.
}
},
{
"label": "echo js",
"type": "shell",
"command": "echo JavascriptFile",
"group": {
"kind": "build",
"isDefault": "**.js" // This is a glob pattern which will only match when the active file has a .js extension.
},
}
]
}
ソース管理
新しいプルリクエストフローに合わせて、Git 拡張機能にいくつかの更新がありました。
Git: ブランチプレフィックス
新しいブランチ作成プロセスをよりスムーズにするため、新しいブランチを作成する際にプレフィックスとして使用する文字列を指定する新しい設定 git.branchPrefix
が追加されました。
Git: ブランチ名の生成
新しい設定 git.branchRandomName.enable
により、VS Code は新しいブランチを作成する際にランダムなブランチ名を提案するようになります。ランダムな名前は辞書から生成され、git.branchRandomName.dictionary
設定で制御できます。サポートされている辞書は、adjectives
(デフォルト)、animals
(デフォルト)、colors
、numbers
です。
Git: ブランチ保護
新しい git.branchProtection
設定により、特定のブランチを保護するように構成できます。VS Code は保護されたブランチへの直接コミットを回避し、代わりに新しいブランチを作成してコミットする機会を提供します。この動作は、git.branchProtectionPrompt
設定で細かく調整できます。
GitHub: プルリクエストテンプレートのサポート
GitHub 拡張機能はプルリクエストテンプレートを理解するようになり、新しくフォークされたリポジトリから PR を作成する際には常にそれをベースとして使用するようになりました。
ノートブック
セルの表示変更
ビューポート外のセルがいくつかのシナリオでどのように表示されるかを調整しました。
アウトラインビューでセルをクリックすると、そのセルがビューポート外にある場合、ノートブックはそのセルがビューポートの上部1/5程度に表示されるようにスクロールします。これは、テキストエディターのアウトラインの動作と一致します。
カーソルがセルエディターにある場合、カーソルをエディターの最初または最後の行を超えて移動して、次のセルエディターに移動できます。現在、カーソルをビューポート外にあるセルのエディターに移動すると、ノートブックはビューポートの中央にセルを表示するためにジャンプするのではなく、エディター内のその行が表示されるのに十分なだけスクロールします。
検索と置換がカーソル/選択からのクエリシードをサポート
ノートブックエディターの検索コントロールが、エディターの選択範囲から検索文字列をシードすることをサポートするようになりました。この動作は、エディター設定 editor.find.seedSearchStringFromSelection
によって制御されます。
デバッグ
launch.json なしで実行とデバッグ
launch.json
設定ファイルをセットアップせずに F5
を押すか、デバッグビューの 実行とデバッグ ボタンを選択すると、VS Code は現在アクティブなファイルのプログラミング言語に基づいてデバッガーを選択します。ファイルが開いていない場合は、使用したいデバッガーを尋ねられます。このエクスペリエンスは少しわかりにくい場合があるため、いくつかの改善を行いました。
デバッグを開始しようとする前に拡張機能がすでにアクティブ化されていた場合、その拡張機能のデバッガーが一番上にソートされます。これは、たとえば、以前にその拡張機能からのコマンドを実行したことによって、またはその拡張機能をアクティブ化する言語のファイルを開いたことによって、またはワークスペースに一致する workspaceContains
パターンによって拡張機能がアクティブ化された場合に役立ちます。このセッションでデバッガーを使用したことがある場合も、一番上にソートされます。
Chrome/Edge デバッガーは、ブラウザでアプリを実行するFlutter 拡張機能のような他のデバッガーとの混同を避けるため、Web アプリ (Chrome) および Web アプリ (Edge) に名称変更されました。
言語
TypeScript 4.7
VS Code には、TypeScript 4.7.3 がバンドルされるようになりました。この主要な TypeScript には、改善された制御フロー分析や Node.js の ECMAScript モジュールサポートを含む新しい言語機能が追加されています。また、新しいツール機能も含まれており、いくつかの重要なバグも修正されています!
ソース定義への移動
VS Code の最も長く続いている、最も多く投票されている機能リクエストの1つは、VS Code が外部ライブラリからの関数やシンボルの JavaScript 実装にナビゲートできるようにすることです。現在、定義へ移動 は、ターゲット関数またはシンボルの型を定義する型定義ファイル (.d.ts
ファイル) にジャンプします。これは、これらのシンボルの型やドキュメントを検査する必要がある場合に役立ちますが、コードの実際の実装を隠してしまいます。現在の動作は、.d.ts
からの TypeScript の型を理解できない多くの JavaScript ユーザーを混乱させることもあります。
定義へ移動 をシンボルの JavaScript 実装にナビゲートするように変更することは単純に聞こえるかもしれませんが、この機能リクエストがこれほど長く開かれたままになっているのには理由があります。JavaScript (特に多くのライブラリで出荷されるコンパイル済み JavaScript) は、.d.ts
よりもはるかに分析が困難です。node_modules
下のすべての JavaScript コードを分析しようとすると、処理が遅くなり、メモリ使用量も劇的に増加します。また、VS Code の IntelliSense エンジンが理解できない JavaScript パターンも多数存在します。
そこで、新しい ソース定義へ移動 コマンドが登場します。エディターのコンテキストメニューまたはコマンドパレットからこのコマンドを実行すると、TypeScript はシンボルの JavaScript 実装を追跡し、そこに移動しようとします。これには数秒かかる場合があり、常に正しい結果が得られるとは限りませんが、多くの場合に役立つはずです。
この機能の改善に積極的に取り組んでいますので、コードベースで試してフィードバックを共有してください。
オブジェクトメソッドスニペット
オブジェクトメソッドスニペットは、指定されたインターフェースを実装するオブジェクトリテラルにメソッドを迅速に追加するのに役立ちます。
オブジェクトリテラル内では、各可能なメソッドについて2つの提案が表示されます。1つはメソッド名のみを挿入するもの、もう1つはメソッドの完全な署名を挿入するものです。また、"typescript.suggest.classMemberSnippets.enabled": false
または "javascript.suggest.classMemberSnippets.enabled": false
を設定することで、オブジェクトメソッドスニペットを完全に無効にすることもできます。
グループ対応のインポート整理
JavaScript および TypeScript の インポート整理 コマンドを使用すると、インポートのリストをすばやくクリーンアップできます。実行すると、未使用のインポートが削除され、インポートがアルファベット順にソートされます。
しかし、一部のコードベースでは、インポートの整理方法についてある程度の手動制御を好む場合があります。外部と内部のインポートをグループ化するのが最も一般的な例です。
// local code
import * as bbb from './bbb';
import * as ccc from './ccc';
import * as aaa from './aaa';
// built-ins
import * as path from 'path';
import * as child_process from 'child_process';
import * as fs from 'fs';
// some code...
以前のバージョンの VS Code で、ここで インポート整理 を実行すると、次の結果になりました。
// local code
import * as child_process from 'child_process';
import * as fs from 'fs';
// built-ins
import * as path from 'path';
import * as aaa from './aaa';
import * as bbb from './bbb';
import * as ccc from './ccc';
// some code...
うっ!これは、すべてのインポートがアルファベット順にソートされ、VS Code がその際にコメントや改行を維持しようとするためです。
しかし、TypeScript 4.7 では、インポート整理 がグループ認識になりました。上記のコードで実行すると、期待されるものと少し似たものになります。
// local code
import * as aaa from './aaa';
import * as bbb from './bbb';
import * as ccc from './ccc';
// built-ins
import * as child_process from 'child_process';
import * as fs from 'fs';
import * as path from 'path';
// some code...
インポートがグループ内に留まりながらソートされていることに注目してください。はるかに良くなりました!
暗黙的なプロジェクトで厳密なヌルチェックが有効に
厳密なヌルチェックは、JavaScript と TypeScript の両方で、暗黙的なプロジェクトでデフォルトで有効になりました。これにより、より正確な IntelliSense と、一般的なプログラミングミスを捕捉できる改善された型チェックが得られるはずです。
この新しい動作は、jsconfig
または tsconfig
プロジェクトの一部ではないすべてのファイルにのみ適用されます。"js/ts.implicitProjectConfig.strictNullChecks": false
を設定することで無効にできます。jsconfig
または tsconfig
の一部であるファイルの場合、構成ファイルで厳密なヌルチェックを有効にする必要があります。
Markdown 参照リンクの定義へ移動
Markdown ファイルの参照リンクで 定義へ移動 を使用できるようになりました。これにより、参照から現在のファイル内のリンク定義にジャンプします。
JSON Schema サポートの拡張
組み込みの JSON 言語サービスは、JSON Schema Draft 2019-09 および JSON Schema Draft 2020-12 のサポートを改善しました。このようなスキーマが使用されても警告が表示されなくなりました。
まだ完全にサポートされていない機能もあります。それらがスキーマで使用されている場合、警告が表示されます。サポートされていないプロパティは次のとおりです。
- $id を持つサブスキーマ
- $recursiveRef/Anchor (Draft 2019-09)
- $dynamicRef/Anchor (Draft 2020-12)
Web 用 VS Code
コアローカリゼーションのサポート
Web 版 VS Code の初期ローカリゼーションサポートを導入しました。VS Code は世界中で使用されており、多くのユーザーにとって英語は母国語ではありません (またはまったく慣れていない言語です!)。長年にわたり、VS Code ユーザーは英語以外の言語で VS Code を使用するために、マーケットプレイスから言語パックをインストールしていました。Web 版 VS Code では、今日の Web の動作により適合した異なるアプローチを採用することにしました。
ブラウザをコアサポート言語のいずれかに設定したユーザーの場合、vscode.dev はその言語で翻訳を自動的に適用します。サポートされている言語は、vscode-loc リポジトリに文書化されています。
たとえば、Microsoft Edge で表示言語を構成するには、設定 > 言語 を使用します。
設定が完了すると、vscode.dev (または insiders.vscode.dev) に移動すると、ドイツ語で表示されます。
テーマ: Panda Theme
今後数ヶ月で、拡張機能(VS Codeに同梱されているものとそうでないものの両方)のローカリゼーションを有効にし、拡張機能の作成者が非英語話者のユーザーもサポートできるようにします。乞うご期待!
リモートリポジトリ
Remote Repositories > Continue Working On... コマンドを使用して GitHub または Azure Repos リポジトリをローカルにクローンし、デスクトップ版 VS Code で開く際に、remoteHub.gitProtocol
を構成して、常に http
または ssh
URL を使用してクローンできるようになりました。
開発コンテナーの仕様
マイクロソフトと GitHub の開発コンテナーチームは、新しい開発コンテナー仕様の積極的な開発を続けており、今回のイテレーションではいくつかの注目すべきハイライトがありました。
参照実装
私たちは、仕様の参照実装としてオープンソースのコマンドラインインターフェイス(CLI)をリリースしました。このCLIは、devcontainer.json
から開発コンテナーをビルドして起動し、直接使用することも、製品体験に統合することもできます。
CLI は新しいdevcontainers/cli リポジトリで利用できます。そのREADME で開始方法を学び、このブログ投稿 で詳細を読むことができます。
CLI は現在も活発に開発が進められており、個々のユーザーに対するサポートの強化など、より多くのシナリオをサポートするために進化し続けます。私たちはこの過程で皆様からのフィードバックを eagerly 求めており、CLI に関するフィードバック専用のissue を開設しました。追加の issue や PR も歓迎します。
CIにおける開発コンテナー
継続的インテグレーション(CI)ビルドでリポジトリの開発コンテナーを実行するための GitHub アクションと Azure DevOps タスクが利用可能です。これにより、ローカル開発で使用しているのと同じセットアップを CI でコードをビルドおよびテストするために再利用できます。詳細については、devcontainers/ci README を参照してください。
GitHubアクションの利用例
- name: Build and run dev container task
uses: devcontainers/ci@v0.2
with:
imageName: ghcr.io/example/example-devcontainer
runCmd: make ci-build
Azure DevOpsタスクの利用例
- task: DevcontainersCI@0
inputs:
imageName: 'yourregistry.azurecr.io/example-dev-container'
runCmd: 'make ci-build'
sourceBranchFilterForPush: refs/heads/main
仕様
仕様に関する活発な開発は続いており、devcontainers/spec リポジトリに初期バージョンが公開されました。
CLI と同様に、さらなる更新と進捗にご期待ください。皆様からのフィードバックをお待ちしております。
関連情報
開発コンテナーと仕様に関するすべての詳細については、https://containers.dev をご覧ください。
拡張機能への貢献
Python
起動時のインタプリタ検出なし
Python 拡張機能は、以下のいずれかの場合にのみ自動的に検出をトリガーするようになりました。
- Python: インタプリタの選択 コマンドを使用して、別のインタプリタを選択する。
- 特定のスコープ (ワークスペースまたはグローバル) が初めて開かれる。
- Python がインストールされていない。
起動時に自動的に検出がトリガーされないため、瞬時のロードと、言語サーバーなどの他の機能のより高速な起動につながります。ただし、Jupyter 拡張機能がインストール/有効になっている場合、起動時に Jupyter によって検出が引き続きトリガーされます。
ローカリゼーションを有効にする
Python 拡張機能は、VS Code がサポートするすべての言語での翻訳をサポートするようになりました。vscode-nls を使用して、コマンド、通知、タイトルなどの翻訳を取得する方法を更新しました。これらの翻訳は、最新かつ正確であることを保証するために、ローカリゼーションチームによって維持されています。
Jupyter
Web拡張機能
Jupyter 拡張機能のウェブ版におけるコア機能のサポートについて進捗がありました。
今月、以下の機能がWeb拡張機能に移植されました。
- httpsサポート
- カーネル補完
- ipywidgets
- ノートブックデバッグ
- 変数表示
- エクスポート
- インタラクティブウィンドウ
機能を試してみたい場合は、ローカルマシンからJupyterを起動してください。
jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net
その後、vscode.dev内からJupyter: 接続するJupyterサーバーを指定コマンドを使用してそれに接続します。
詳細 (およびコメント) については、このディスカッション項目を参照してください。
リモート開発
リモート開発拡張機能の開発は続いており、これらを使用すると、コンテナー、リモートマシン、またはLinux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。
GitHub プルリクエストと課題
プルリクエストと課題の作業、作成、管理を可能にするGitHub プルリクエストと課題拡張機能にさらなる進展がありました。このリリースで注目すべき点は次のとおりです。
- プルリクエストの作成 ビューでの自動マージチェックボックス
その他のハイライトについては、拡張機能の 0.44.0 リリース用の変更ログ を確認してください。
リモートリポジトリ拡張機能
GitHub リポジトリとAzure Reposの両方の拡張機能が、VS Code がサポートするすべての言語での翻訳をサポートしています。
プレビュー機能
Markdownリンクの検証
Markdown で作業していると、誤って無効なファイルリンクや画像参照を追加してしまうことがあります。ファイル名が _
(アンダースコア) の代わりに -
(ダッシュ) を使用していたことを忘れていたり、リンク先のファイルが別のディレクトリに移動されたりしたのかもしれません。多くの場合、これらの間違いは Markdown プレビューを表示した後、あるいは公開した後になって初めて気づきます。VS Code の新しい実験的な Markdown リンク検証は、これらの間違いを検出するのに役立ちます。
リンク検証では、VS Code は Markdown のヘッダー、画像、その他のローカルファイルへのリンクを分析します。無効なリンクは、警告またはエラーとして報告されます。
VS Code は、他の Markdown ファイル内の特定のヘッダーへの無効なリンクも検出できます。
リンク検証はデフォルトでオフになっています。"markdown.experimental.validate.enabled": true
を設定することで、リンク検証を試すことができます。
リンク検証をカスタマイズするために使用できる設定がいくつかあります。
-
markdown.experimental.validate.fileLinks.enabled
- ローカルファイルへのリンクの検証を有効/無効にする:[link](/path/to/file.md)
-
markdown.experimental.validate.headerLinks.enabled
- 現在のファイル内のヘッダーへのリンクの検証を有効/無効にする:[link](#_some-header)
-
markdown.experimental.validate.referenceLinks.enabled
- 参照リンクの検証を有効/無効にする:[link][ref]
。 -
markdown.experimental.validate.ignoreLinks
- 検証をスキップするリンクのリスト。これは、ディスクには存在しないが Markdown が公開されると存在するファイルへのリンクに役立ちます。
新機能についてのご意見をお聞かせください!
ファイルを貼り付けて Markdown リンクを挿入
Markdown に画像またはファイルリンクを挿入する貼り付けの実験的なサポートを追加しました。
これには、markdown.experimental.editor.pasteLinks.enabled
と "editor.experimental.pasteActions.enabled"
の両方を有効にする必要があります。現在、VS Code のファイルエクスプローラーからファイルをコピーできます。画像ファイルを貼り付けると画像参照が挿入され、通常のテキストファイルを貼り付けるとそれらのファイルへのリンクが挿入されます。
ターミナルシェル統合
シェル統合 (terminal.integrated.shellIntegration.enabled
設定で有効化) とコマンド装飾が、今回のイテレーションで磨き上げられ、改善されました。
いくつかの更新が含まれます
- 146377
bash-git-prompt
やその他のプログラムが動作するようにシェルステータスを永続化する - 148635
zsh
にカスタムZDOTDIR
の使用を許可する - 145801 低速なマシンでデコレーションが同期しなくなる問題を修正
- 146873
bash
の既存のデバッグトラップの処理を改善 - 148839 これはどのように機能しますか? コマンドとタブホバーでのアクティベーションステータスを含むメッセージングを洗練する
- 151223 バッファクリア後、コマンドが正しく追跡されることを確認
Windows のウィンドウコントロールオーバーレイ
Electron が提供する API を採用し、Windows でウィンドウコントロールオーバーレイをサポートしました。この変更の主なユーザー向けメリットは、Windows 11 のスナップレイアウト機能へのアクセスです。いくつかの永続的な問題があるため、ウィンドウコントロールオーバーレイはデフォルトでオフになっていますが、実験的な設定 window.experimental.windowControlsOverlay.enabled
でオンにできます。
コマンドセンター
ファイル、コマンドなどをすばやく選択できるシンプルな方法であるコマンドセンターを追加しています。
これは window.experimental.commandCenter
設定で有効にできますので、ご意見をお聞かせください。
マージエディター
より良いマージ体験の作業を開始しました。まだ初期段階であり、フィードバックを受け付ける準備はまだできていませんが、git.experimental.mergeEditor
を介して試すことができます。これを有効にすると、マージ競合のあるファイルが新しいマージエディターで開き、競合の解決が簡単になります。
引き続き取り組んでまいります。Insiders を利用して、私たちの進捗を追跡してください。この取り組みにご協力いただいている Mingpan と Google の友人たちに心から感謝申し上げます。❤️
拡張機能作成
インライン補完の最終化
インライン補完APIを最終化しました。これにより、拡張機能はサジェストウィジェットから独立したインライン補完を提供できます。インライン補完は、すでに受け入れられたかのように、しかしグレー色でレンダリングされます。ユーザーは suggestions を循環し、Tab
キーでそれらを受け入れることができます。インライン補完を使用する拡張機能の例は、GitHub Copilotです。詳細情報は、vscode.d.ts
ファイルのAPIのエントリポイントであるlanguages.registerInlineCompletionItemProvider
で確認できます。
InputBox バリデーションメッセージの重大度の最終化
ユーザー入力の検証において重大度を提供する InputBox API(window.showInputBox
および window.createInputBox
を介して)が最終化されました。
例えば、ユーザーの入力に基づいて情報メッセージを表示したい場合、検証メッセージは以下を返すことができます。
{
message: 'this is an info message';
severity: InputBoxValidationSeverity.Info;
}
これは次のように表示されます
ノートブックエディター API
新しいノートブックエディター API は、TextEditor
に似た新しい NotebookEditor
型を導入していますが、通常のテキストエディターの代わりにノートブック用です。
const editor = vscode.window.activeNotebookEditor;
if (editor) {
// Access the underlying notebook document associated with the editor
console.log(editor.notebook.uri);
// Change the selection in the current notebook
editor.selection = new vscode.NotebookRange(1, 3);
}
window.activeNotebookEditor
を使用して現在のノートブックエディターを取得し、window.onDidChangeActiveNotebookEditor
のようなイベントを使用して、ユーザーが新しいノートブックエディターに切り替えるのを監視できます。
タイムラインビューに基づく拡張機能のアクティベーション
タイムラインビューが表示されたときに新しいアクティベーションイベントが追加されました。このイベント onView:timeline
は、すべての拡張機能で使用できますが、提案されている Timeline
API を実装する拡張機能に最も役立ちます。
UX ガイドライン
拡張機能の作成者向けのUX ガイドラインが更新され、より多くの VS Code ユーザーインターフェース要素をカバーするように拡張されました。
改訂された概要ページでは、VS Code UI を順に見て、インターフェースと一般的な UI 要素を視覚的に紹介します。
関連するガイド、APIリファレンス、拡張機能のサンプルへのリンクが、各エリア専用のページに追加されました。さらに、すべてのガイドラインの例の画像が更新され、最新のUIバージョンが紹介されています。
これらの UI 要素を追加したり貢献したりする拡張機能に関する推奨される「すべきこと」と「すべきでないこと」について、今すぐ読むことができます。
拡張機能のスポンサーシップ
今回のマイルストーンで、拡張機能の package.json
に sponsor
フィールドを導入し、拡張機能がスポンサーシップにオプトインできるようにしました。sponsor
オブジェクトには、拡張機能作者のスポンサーシップリンクの url
フィールドがあります。例えば、
"sponsor": {
"url": "https://github.com/sponsors/nvaccess"
}
拡張機能がこれにオプトインした場合、VS Code は上記の拡張機能のスポンサーシップセクションに示されているように、拡張機能ビューの詳細ページに スポンサー ボタンを表示します。
注: スポンサーシップを有効にして拡張機能を公開するには、最新のvsce コマンドラインツール (>=2.9.1
) を使用してください。
提案されたAPI
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposals
に追加します。 - 最新のvscode-dtsを使用して、
vscode-dts dev
を実行してください。これにより、対応するd.ts
ファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
DataTransfer からファイルを読み取る
新しい dataTransferFiles
API の提案により、拡張機能は vscode.DataTransfer
オブジェクトからファイルを読み取ることができます。DataTransfer
型は、ツリーのドラッグアンドドロップ API、およびエディターへのドロップとコピーペースト API の提案で使用されます。
export class TestViewDragAndDrop implements vscode.TreeDataProvider<Node>, vscode.TreeDragAndDropController<Node> {
...
public async handleDrop(target: Node | undefined, sources: vscode.DataTransfer, token: vscode.CancellationToken): Promise<void> {
// Get a list of all files
const files: vscode.DataTransferFile[] = [];
sources.forEach((item) => {
const file = item.asFile();
if (file) {
files.push(file);
}
});
const decoder = new TextDecoder();
// Print out the names and first 100 characters of the file
for (const file of files) {
const data = await file.data();
const text = decoder.decode(data);
const fileContentsPreview = text.slice(0, 100);
console.log(file.name + ' — ' + fileContentsPreview + '\n');
}
...
}
}
ファイルデータ転送項目は、VS Code の外部から来た場合にのみ (デスクトップからツリービューやエディターにドラッグアンドドロップする場合など)、現在 DataTransfer
に追加されます。
コピーペースト API
新しい documentPaste
API の提案により、拡張機能はテキストエディター内でのコピーと貼り付けにフックできます。これにより、貼り付け時に挿入されるテキストを変更できます。また、拡張機能はテキストをコピーする際にメタデータを保存し、貼り付け時にこのメタデータを使用することもできます (たとえば、2つのコードファイル間で貼り付けを行う際にインポートを持ち込むなど)。
ドキュメント貼り付け拡張機能のサンプルは、この API の動作を示しています。
/**
* Provider that maintains a count of the number of times it has copied text.
*/
class CopyCountPasteEditProvider implements vscode.DocumentPasteEditProvider {
private readonly countMimeTypes = 'application/vnd.code.copydemo-copy-count';
private count = 0;
prepareDocumentPaste(
_document: vscode.TextDocument,
_range: vscode.Range,
dataTransfer: vscode.DataTransfer,
_token: vscode.CancellationToken
): void | Thenable<void> {
dataTransfer.set(this.countMimeTypes, new vscode.DataTransferItem(this.count++));
}
async provideDocumentPasteEdits(
_document: vscode.TextDocument,
range: vscode.Range,
dataTransfer: vscode.DataTransfer,
token: vscode.CancellationToken
) {
const countDataTransferItem = dataTransfer.get(this.countMimeTypes);
if (!countDataTransferItem) {
return undefined;
}
const textDataTransferItem = dataTransfer.get('text/plain') ?? dataTransfer.get('text');
if (!textDataTransferItem) {
return undefined;
}
const count = await countDataTransferItem.asString();
const text = await textDataTransferItem.asString();
// Build a snippet to insert
const snippet = new vscode.SnippetString();
snippet.appendText(`(copy #${count}) ${text}`);
return new vscode.SnippetTextEdit(range, snippet);
}
}
vscode.languages.registerDocumentPasteEditProvider(
{ language: 'markdown' },
new CopyCountPasteEditProvider()
);
新しいノートブックワークスペース編集の提案
新しい notebookWorkspaceEdit
API の提案により、拡張機能はノートブックの内容を編集できるようになります。これは、以前の notebookEditorEdit
の提案を置き換えるものです。
この提案では、ノートブックにセルを挿入、置換、または変更するワークスペース編集を作成できます。
const currentNotebook = vscode.window.activeNotebookEditor?.notebook;
if (currentNotebook) {
const edit = new vscode.WorkspaceEdit();
edit.set(
currentNotebook.uri,
vscode.NotebookEdit.insertCells(/* index*/ 1, [
// ... new notebook cell data
])
);
await vscode.workspace.applyEdit(edit);
}
エンジニアリング
プルリクエストの使用
vscode リポジトリの main
ブランチへの直接プッシュから離れ、現在ではすべての変更をプルリクエスト (PR) を使用して VS Code に独占的にプッシュしています。各 PR が他のチームメンバーから少なくとも1つの承認を得ることを必須としています。これを利用して、PR がマージされる前にいくつかの基本的なチェックに合格することも必須になりました。これらは、TypeScript コンパイル、書式設定ルール、単体テスト、統合テストなどのタスクであり、通常10分以上はかかりません。このフローに切り替えることで、プログラミングミスによる Insiders ビルドの破損回数が減少しました。
VS Code OSS ビルド
本番ビルドと同じビルド定義を再利用する新しい公開Code OSS ビルドがあります。このビルドは現在、各 PR で30分以内に実行され、速度向上に引き続き投資していく予定です。
ドキュメント
更新されたバージョン管理ビデオ
Visual Studio での Git の使用の入門ビデオが、VS Code に組み込まれた Git 統合の使用を開始するのに役立つように作り直されました。
その他の優れたビデオは、VS Code YouTube チャンネルでも見つけることができます。
code.visualstudio.com の vscode.dev
Web 版 VS Code を使いたいけど URL を忘れてしまった? vscode.dev は VS Code のダウンロードページに目立つように表示されるようになったので、ブラウザで VS Code をすばやく起動できます。
注目すべき修正点
- 141157 デバッグモードではないときに F11 をクリックすると、全画面表示ではなくデバッグがオンになる
- 148864 TypeScript ファイルの未バインドブレークポイント
- 149638 遅延変数評価ボタンが、ノード間に問題のある間隔とずれを引き起こす
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
Web拡張機能
Web 拡張機能としてコードを実行する拡張機能を有効にする拡張機能作成者 (以下は2022年5月2日から6月6日までのリスト)
- パイプラインエディター (Alexey Volkov)
- Markdown Base64 画像 ID (amoxuk)
- Apache Daffodil VS Code 拡張機能 (Apache Software Foundation)
- ウェブ検索 (Ben Rogers)
- CloudStudio.coding (CloudStudio)
- スクリーンショットクリップボード (Darren Daniel Day)
- Galaxy Workflows (davelopez)
- React スニペット (dotkiro)
- Draw (hall)
- ブログツール (Huka)
- Katalon Runner (Katalon Studioz)
- zzzGCS-Uploader (KillerBees)
- WhatTheCommit (Lasse Gaardsholt)
- TEI 日本語エディター (ldas)
- TypeScript エラートランスレーター (Matt Pocock)
- Mintlify (Mintlify)
- Play DJMAX (minwook-shin)
- Sciter JS (MustafaHi)
- NewWeb (newsearchwebtesting)
- ループ開発キット (Olive AI)
- チューバッカ (Otter)
- Grammarly (Rahul Kadyan)
- Reflame (Reflame)
- SAS (SAS Institute Inc.)
- vscode-solidity (sevillal)
- Slint (夜間ビルド) (Slint)
- Markdown Images (Steven Gourley)
- スマートソート (杉山 守)
- fiber-ifttt-starlark (t-codespaces)
- Markdown プレビュースタイル (ベータ) (TakumiI)
- TATEditor for VS Code (TATEditor)
- kodeine (tored)
- Vue 言語機能 (Volar) (Vue)
- Watermelon (WatermelonTools)
- todoist (Waymondo)
- 選択範囲の配置 (Wupb)
- Transient Emacs (yasuyuky)
- 次のエラーへ移動 (yy0931)
- 追加コマンド (zardoy)
問題追跡
問題追跡への貢献者
プルリクエスト
vscode
への貢献者
- @a-stewart (Anthony Stewart): webview の位置決めバグの回避策 PR #137506
- @aifreedom (Song Xie)
- 日付文字列を適切なロケールでフォーマット PR #150133
- ログ文字列の "synchronizing" のスペルミスを修正 PR #150236
- @AlbertHilb: KaTeX レンダラーへのすべての呼び出しに共有の
macros
オブジェクトを渡す PR #148006 - @andrewbranch (Andrew Branch)
- [typescript-language-features] completions テレメトリに
flags
を追加 PR #148313 - [typescript-language-features] 文字列補完のコミット文字なし PR #148597
- [typescript-language-features] completions テレメトリに
- @bl-nero (Bartosz Leper): 逆アセンブリビューでの無限ループを修正 PR #148556
- @CGNonofr (ロイク・マンジョンジャン)
- Monaco エディターに高コントラストライトテーマを追加 PR #148249
- monaco API にエディター監視メソッドを追加 PR #148777
- @dlech (David Lechner): ICodeEditor.restoreViewState() で null を許可 PR #146866
- @eugenesimakin (Eugene): Suggest ウィジェットの editor.letterSpacing を継承 (125622 を修正) PR #148283
- @gjsjohnmurray (John Murray): Git SCM ビューのファイルコンテキストメニューに「コンテナフォルダを開く」などを追加 PR #149150
- @holazz (zz): "pnpm-lock.yaml" を "package.json" の子パターンに追加 PR #146869
- @ilumer (ilumer): build/npm/preinstall.js の node バージョンチェックを修正 PR #150547
- @jasonwilliams (Jason Williams): タスクでグロブを有効にする、そうでない場合はデフォルトにフォールバック - #88106 を修正 PR #141230
- @jeanp413 (Jean Pierre)
- Markdown リンクの定義へ移動を有効にする PR #148017
- 終了時にフォーカスがない場合、ターミナル分割幅が永続化されない問題を修正 PR #149594
- @justanotheranonymoususer: 拡張機能の出力ラベルをURLに追加 PR #150065
- @Lazyuki: monarchLexer で maxTokenizationLineLength をチェック PR #145979
- @Long0x0: ホワイトスペースレンダリング時の誤った合字を修正 PR #150349
- @MachineMitch21 (Mitch Schutt): エディタドロップターゲットのデバッグしきい値四角のクリーンアップ PR #149570
- @Mingpan: [未完成のプロトタイプ] Git の 3 者間マージ PR #150388
- @PF4Public: extensions/markdown-math の依存関係構文の変更 PR #149501
- @pksunkara (Pavan Kumar Sunkara): feat: インレイヒント displayStyle PR #150118
- @prashantvc (Prashant Cholachagudda): 拡張機能検索テキストの長さをテレメトリに追加 PR #148785
- @quanzhuo (Quan Zhuo): javascript に newpromise スニペットを追加 PR #148755
- @r3m0t (Tomer Chachamu): 誤ったプロバイダーからのアクセストークンを修正 PR #150473
- @Raymo111 (Raymond Li): タイポ修正 PR #149509
- @remcohaszing (Remco Haszing): tsconfig.tsbuildinfo を json として指定 PR #149065
- @robinkar (Robin Karlsson): Web で HTTP アップグレードヘッダーの大文字/小文字を許可 PR #150961
- @roj1512 (Roj): PR 作成時の複数行コミットメッセージの処理 PR #149426
- @ShenHongFei (沈鸿飞): WebviewPanel に加えて、WebviewView も TypedArrays の転送をサポートする PR #148429
- @susiwen8 (susiwen8): fix:
create fork
メッセージを閉じるとフォークが作成される PR #148438 - @weartist (Han): #130527 を修正 PR #146710
- @wkillerud (William Killerud): SassDoc ドキュメントに onEnterRule を追加 PR #150599
- @yhatt (Yuki Hattori): #147936 を修正 PR #148503
vscode-extension-samples
への貢献
- @KamasamaK: 未使用の enableProposedApi を削除 PR #609
vscode-generator-code
への貢献者
- @segevfiner (Segev Finer): vscode-webpack テンプレートから $tslint-webpack-watch を削除 PR #346
vscode-html-languageservice
への貢献
- @hahn-kev (Kevin Hahn): データプロバイダーで void 要素の指定を許可 PR #125
vscode-js-debug
への貢献者
- @ashgti (John Harrison): インデックス付きソースマップのサポートを追加。 PR #1261
vscode-languageserver-node
への貢献者
- @d-biehl (Daniel Biehl): DiagnosticRequestor で診断をクリーンアップ PR #976
- @DanTup (Danny Tuppeny)
- @heejaechang (Heejae Chang): ファイルイベントの購読解除を確実に行う PR #929
- @Vtec234 (Wojciech Nawrocki): fix:
showDocument
が失敗した場合にfalse
を返す PR #951
vscode-pull-request-github
への貢献者
- @jpspringall: Issue #3371 | GitHub Enterprise AuthProvider の場合の getAuthSessionOptions を更新 PR #3565
debug-adapter-protocol
への貢献者
- @apupier (Aurélien Pupier)
- @lemmy (Markus Alexander Kuppe): TLA+ を debug-adapter-protocols のリストに追加 PR #267
language-server-protocol
への貢献者
- @asashour (Ahmed Ashour)
- @KamasamaK
- @michaelmesser (Michael Messer): index.html の最新バージョンを更新 PR #1478
- @pedro-w (Peter Hull): ファイルの終わりに改行を追加 PR #1486