April 2018 (Version 1.23)
Update 1.23.1: Das Update behandelt diese Probleme.
Downloads: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Willkommen zur April 2018-Version von Visual Studio Code. In diesem Meilenstein konzentrierte sich das VS Code-Team auf API-Arbeiten zur Unterstützung von Erweiterungsautoren, aber es gibt in dieser Version immer noch viele Updates, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:
- Hervorgehobene Einzugsanleitungen – Hilft bei der Visualisierung des Quellcode-Einzugs.
- Code-Aktionen beim Speichern ausführen – Führt beim Speichern Aktionen wie „Imports organisieren“ aus.
- NPM-Skript-Explorer – Finden, Ausführen und Debuggen von NPM-Skripten in Ihrem Projekt.
- Probleme-Ansicht Filterung – Wählen Sie aus, welche Dateien Fehler und Warnungen anzeigen.
- Spaltenauswahl mit der mittleren Maustaste – Mittlere Maustaste mit Ziehen für schnelle Spaltenauswahl.
- CSS-Regionen-Faltung – Erstellen Sie Regionen in Ihrem CSS/SCSS/Less-Code für hilfreiche Code-Faltungen.
- Verbesserte CSS-Unterstützung für neue Eigenschaften – Intelligente Vorschläge für experimentelle CSS-Eigenschaften.
- Markdown-Header-Suche – Suchen Sie nach Markdown-Headern in Ihrem gesamten Arbeitsbereich.
- Erweiterungsentwicklung – Benutzerdefinierte Aktivitätsleisten-Ansichten – Erweiterungsautoren können ihre eigenen Elemente in der Aktivitätsleiste erstellen.
- Neues Tutorial zur Bereitstellung von Websites – Erfahren Sie, wie Sie eine statische Website in Azure Storage bereitstellen.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Sie können sich auch dieses Highlight-Video zur Version 1.23 von Cloud Developer Advocate Brian Clark ansehen.
Die Release Notes sind in die folgenden Abschnitte unterteilt, die sich auf die Fokusbereiche von VS Code beziehen. Hier sind einige weitere Updates:
- Editor – Bessere Unterstützung für Unicode-Dateien, stabilere Editor-Positionierung.
- Workbench – Suchergebnisse kopieren, verbesserter Git-Clone-Workflow, VS Code-Prozess-Explorer.
- Debugging – Logpoint-Ausdrücke unterstützen intelligente Vervollständigungen und die Anzeige strukturierter Objekte.
- Sprachen – JavaScript/TypeScript: Importe organisieren-Aktion, persistente Markdown-Vorschauen.
- Erweiterungsentwicklung – Neue Webview- und FileSystemProvider-APIs, 'Source'-Aktionen auf Dateiebene.
Insiders: Möchten Sie neue Funktionen so schnell wie möglich sehen? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.
Editor
Hervorgehobene Einzugsanleitungen
VS Code kann nun die aktive Einzugsanleitung hervorheben, wenn Sie den Cursor zwischen verschiedenen Quellcodeblöcken bewegen.

Der Name der Hervorhebungsfarbe ist editorIndentGuide.activeBackground, den Sie in der Einstellung workbench.colorCustomizations ändern können.
"workbench.colorCustomizations": {
"editorIndentGuide.activeBackground": "#ff0000"
}
Code-Aktionen beim Speichern ausführen
Die neue Einstellung editor.codeActionsOnSave ermöglicht es Ihnen, eine Reihe von Code-Aktionen zu konfigurieren, die beim Speichern einer Datei ausgeführt werden. Zum Beispiel können Sie für JavaScript, TypeScript und andere Erweiterungen, die eine Code-Aktion zum Organisieren von Importen bereitstellen, das Organisieren von Importen beim Speichern aktivieren, indem Sie diese Einstellung vornehmen.
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
Sie können auch pro Sprache aktivieren oder deaktivieren, welche Code-Aktionen beim Speichern ausgeführt werden, indem Sie eine sprachenspezifische Einstellung verwenden. Die folgenden Einstellungen aktivieren das Organisieren von Importen beim Speichern nur für TypeScript-Dateien:
"[typescript]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"[typescriptreact]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
Spaltenauswahl mit der mittleren Maustaste
In VS Code kann die Spaltenauswahl (Rechteckauswahl) durch Halten von Shift und Alt und anschließendes Verwenden der linken Maustaste hinzugefügt werden. Jetzt kann auch die mittlere Maustaste verwendet werden, um eine Spaltenauswahl zu erstellen.

Hinweis: Wenn
editor.multiCursorModifieraufctrlCmdgesetzt ist, sind die Modifikatoren unter WindowsShiftundCtrlund unter macOSShiftundCmd.
Verbesserte Handhabung von UTF-16-kodierten Dateien
VS Code unterstützte schon immer die UTF-16-Kodierung für Dateien, benötigte aber eine BOM (Byte Order Mark), um diese Kodierung korrekt zu erkennen. Wenn VS Code keine BOM fand, wurde die Datei nicht geöffnet und der Benutzer sah eine Informationsmeldung.
Mit dieser Version haben wir dieser Meldung eine neue Aktion hinzugefügt, um die Datei als Text im Editor zu öffnen.

Sobald sie geöffnet ist, können Sie die Kodierung ändern, um zu versuchen, den Text zu dekodieren.
Darüber hinaus verwendet VS Code nun eine Heuristik, die versucht, UTF-16 ohne BOM automatisch zu erkennen. Diese Heuristik sollte für alle UTF-16-Dateien funktionieren, die nur ASCII-Zeichen enthalten.
Verbesserte Editor-Positionierung
In bestimmten Fällen, wenn sich die Scrollhöhe des Editors änderte (z. B. beim Ändern der Größe eines umgebrochenen Editors, beim Zoomen mit dem Mausrad oder beim Modifizieren eines CodeLens), versuchte der Editor, die zentrierte Zeile im Viewport beizubehalten. VS Code behält nun die erste Zeile im Viewport bei, was ein stabileres Erscheinungsbild bietet.

Workbench
Probleme-Ansicht Filterung
Sie können nun Dateien in der Probleme-Ansicht mithilfe von Filtern ein- oder ausschließen.
- Verwenden Sie Glob-Muster im Filter-Eingabefeld, um Dateien einzuschließen/auszuschließen. Ein Ausschlussmuster muss mit
!präfixiert sein. Zum Beispiel entfernt!*.jsalle Dateien mit der Endung .js. - Es gibt eine Schaltfläche Filterung mit Dateiausschluss-Einstellungen, um alle Dateien zu entfernen, die Ihrer
files.exclude-Einstellung entsprechen.
Das kurze Video unten zeigt die Filterung des Projekt-out-Verzeichnisses basierend auf der files.exclude-Einstellung und das Ignorieren aller node_modules durch Eingabe von !**/node_modules/** im Filter-Eingabefeld.

NPM-Skript Ausführung
Mit der Einstellung npm.enableScriptExplorer können Sie einen Explorer aktivieren, der die in Ihrem Arbeitsbereich definierten Skripte anzeigt.

Der Explorer unterstützt
- Öffnen Sie ein Skript innerhalb einer
package.json-Datei oder im Abschnittscripts, wenn diepackage.json-Datei ausgewählt ist. Dies ist die Standardaktion beim Auswählen eines Skripts. - Führen Sie ein Skript als Aufgabe aus, wobei die Ausgabe im integrierten Terminal angezeigt wird.
- Debuggen Sie ein Skript. Um den Node-Debugger zu starten, muss das Skript eine Node-Debug-Option wie
--inspect-brkdefinieren (siehe auch).
Verwenden Sie die Einstellung npm.exclude, um Skripte in package.json-Dateien auszuschließen, die sich in bestimmten Ordnern befinden.
Git-Clone-Verbesserungen
Es gab mehrere Verbesserungen am Git-Clone-Workflow. Beim Ausführen des Befehls Git: Clone
- Ein natives Dialogfeld wird verwendet, um den Speicherort des Repositorys auszuwählen.
- Die neue Benachrichtigungsfortschritts-API wird verwendet, was die Statusberichterstattung der Operation verbessert.
- VS Code wird Sie fragen, ob Sie das geklonte Repository zu Ihrem Arbeitsbereich hinzufügen oder es direkt öffnen möchten.
Die Git-Erweiterung hat auch die neue vorgeschlagene API zur Verarbeitung von systemweiten URIs übernommen und ruft Git-Clone für bestimmte URIs auf. Hier ist ein Beispiel-URI, der https://github.com/microsoft/vscode-vsce.git klont:
vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git
Wenn Sie dies ausprobieren möchten:
- Windows: Geben Sie in der Eingabeaufforderung ein:
explorer "vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git". - macOS: Geben Sie in einer Shell ein:
open vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git.
Ergebnisse über Kontextmenü kopieren
Das Kontextmenü des Suchergebnisbaums enthält drei neue Optionen: Kopieren, Pfad kopieren und Alle kopieren. Dies war eine stark 👍-te Anfrage, die das Teilen oder Exportieren Ihrer Suchergebnisse erleichtert.

Rückkehr der separaten Such-Einbeziehungs- und Ausschluss-Eingabefelder
Letzten Monat haben wir die Einbeziehungs- und Ausschluss-Eingabefelder in der Suchansicht zusammengelegt, um sie zu vereinfachen und zu optimieren und gleichzeitig etwas vertikalen Platz zu sparen. Wir haben jedoch von vielen von Ihnen gehört, dass dies nicht zu Ihrer Verwendung der Suchansicht passte. Schließlich haben wir uns entschieden, die Änderung einfach rückgängig zu machen, und so sind wir mit dieser Version wieder bei separaten Einbeziehungs-/Ausschlussfeldern, wie wir sie vor 1.22 hatten. Beachten Sie, dass Sie ! in den Mustern im Ausschlussfeld nicht verwenden müssen.

Benutzerdefinierte Aktivitätsleisten-Ansichten
Erweiterungsautoren können nun ihre eigenen Ansichtscontainer zur Aktivitätsleiste hinzufügen. Je nach installierten Erweiterungen können Sie nach einem Update UI wie benutzerdefinierte Explorer von der Datei-Explorer zu einem neuen benutzerdefinierten Ansichtscontainer verschoben sehen. Unten sehen Sie beispielsweise, dass die Explorer von den Erweiterungen Azure App Service und Azure Databases in eine dedizierte Azure-Ansicht verschoben wurden.

Sehen Sie die laufenden Visual Studio Code-Prozesse
Verwenden Sie den Befehl Entwickler: Prozess-Explorer öffnen oder den Menüpunkt Hilfe > Prozess-Explorer öffnen, um ein neues Fenster zu öffnen, das sich ständig aktualisierende Informationen über laufende VS Code-Prozesse enthält. Prozesse werden mit ihrer CPU- und Speichernutzung, PID und ihrem Anzeigenamen aufgeführt und können über ein Kontextmenü, das durch Rechtsklick erscheint, beendet werden.

Integriertes Terminal
Unterstützung für mehrere Stammordner für Terminal-Splitting
Sie können nun den Ordner auswählen, in den das Terminal aufgeteilt werden soll, wenn Sie sich in einem Multi-Root-Arbeitsbereich befinden. Das alte Verhalten kann durch die Tastenbelegung des Befehls workbench.action.terminal.splitInActiveWorkspace wiederhergestellt werden.
Sprachen
CSS-Regionen-Faltung
Sie können nun /* #region */ und /* #endregion */ verwenden, um eine Region in CSS/SCSS/Less als faltbar zu markieren. In SCSS/Less können Sie auch // #region und // #endregion als Faltungsmarkierungen verwenden.

Verbesserte CSS-Unterstützung für neue Eigenschaften
Zuvor zeigte VS Code eine Fehlermeldung "Unbekannte Eigenschaft" für einige experimentelle CSS-Eigenschaften, wie z. B. backdrop-filter.

Sie mussten entweder die CSS-Linting vollständig deaktivieren oder diesen Fehler ertragen, selbst wenn Sie CSS-Frameworks wie PostCSS verwenden, die es Ihnen ermöglichen, experimentelle CSS-Eigenschaften zu verwenden.
In dieser Version, mit Daten von Mozilla Developer Network, erkennt VS Code nun 87 neue CSS-Eigenschaften. Wenn Sie eine CSS-Eigenschaft auf MDN finden können, sollte VS Code sie erkennen.
Darüber hinaus bietet VS Code mit Daten von MDN verbesserte Vervollständigungen in CSS/SCSS/Less, die die Syntax und den Statuswert jeder CSS-Eigenschaft anzeigen.

Obwohl es noch keine integrierte Unterstützung für die Validierung von CSS-Eigenschaftswerten gibt, verwendet die Erweiterung CSSTree validator ebenfalls Daten von MDN und bietet Linting für jeden Eigenschaftswert basierend auf seiner Wertdefinitionssyntax.

Markdown-Arbeitsbereichssymbolsuche
Markdown unterstützt nun die Arbeitsbereichssymbolsuche. Nachdem Sie zum ersten Mal eine Markdown-Datei geöffnet haben, können Sie (⌘T (Windows, Linux Ctrl+T)) verwenden, um durch die Header aller Markdown-Dateien im aktuellen Arbeitsbereich zu suchen.

Persistente Markdown-Vorschauen
Markdown-Vorschauen werden nun automatisch wiederhergestellt, wenn Sie VS Code erneut öffnen.

Zuvor mussten Vorschauen bei jedem Neustart von VS Code neu geöffnet werden.
TypeScript 2.8.3
VS Code wird nun mit TypeScript 2.8.3 ausgeliefert. Diese Version behebt eine Reihe wichtiger Fehler.
JavaScript und TypeScript: Importe organisieren
Die Funktion "Importe organisieren" für JavaScript und TypeScript ist nun aus der Vorschau heraus. Führen Sie Importe organisieren (⇧⌥O (Windows, Linux Shift+Alt+O)) aus, um ungenutzte Importe schnell zu entfernen und die verbleibenden Importe in Ihrem JavaScript- und TypeScript-Quellcode zu sortieren.
Sie können nun auch konfigurieren, dass Importe beim Speichern ausgeführt werden, indem Sie die neue Einstellung editor.codeActionsOnSave verwenden. Hier sind die Einstellungen, um das Organisieren von Importen beim Speichern für TypeScript-Dateien zu aktivieren:
"[typescript]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"[typescriptreact]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
Debugging
Logpoint-Verbesserungen
Logpoints wurden in der letzten Version eingeführt und wir haben ihre Benutzerfreundlichkeit und Nützlichkeit verbessert.
-
IntelliSense (intelligente Vervollständigung) wurde für Ausdrücke in Log-Nachrichten und bedingten Haltepunkten hinzugefügt.
-
Bei Verwendung von Logpoints beim Debuggen von Node.js werden strukturierte Objekte, die in die Log-Nachricht eingebettet sind, als erweiterbare Objekte in der Debug-Konsole angezeigt.

-
Logpoints beim Debuggen von Node.js zeigen nun ihren Quellort in der Debug-Konsole an.

-
Da Logpoints und Haltepunkte durch Klicken auf ihr Symbol in der Randleiste des Editors leicht gelöscht werden können, können Sie versehentlich eine Log-Nachricht oder eine Haltepunktbedingung verlieren. Um dies zu verhindern, fordert VS Code nun auf, wenn ein Haltepunkt mit einer Bedingung oder Log-Nachricht durch Klicken auf die Randleiste gelöscht wird. Die Benachrichtigung gibt Ihnen die Möglichkeit, den Haltepunkt anstelle des Löschens zu deaktivieren.
-
Zu guter Letzt haben wir dem Debug-Menü die Aktion Neuer Haltepunkt > Logpoint... hinzugefügt.
Erweiterungsentwicklung
Beiträge zur Aktivitätsleiste
Da immer mehr Erweiterungen benutzerdefinierte Ansichten erstellen und die Mehrheit davon im Datei-Explorer beigetragen wird, stellten wir fest, dass der Explorer unübersichtlich wurde. Zur Skalierung bietet VS Code nun eine Möglichkeit, zur Aktivitätsleiste beizutragen. Als Beispiel gibt es nun einen Test-Beitrag zur Aktivitätsleiste. Erweiterungen können nun ihre eigenen Beiträge leisten.
Test-Ansichtscontainer
Zur Aktivitätsleiste wird nun ein neuer Test-Beitrag für Erweiterungen zur Verfügung gestellt, um testbezogene Ansichten beizutragen. Dieser Test-Beitrag ist leer und standardmäßig ausgeblendet und wird angezeigt, sobald ihm Ansichten beigesteuert werden. Das Beispiel zeigt, wie die benutzerdefinierte Ansicht mocha zur Aktivität Test in der Aktivitätsleiste beigesteuert wird.
"contributes": {
"views": {
"test": [
{
"id": "mocha",
"name": "mocha"
}
]
}
}

Benutzerdefinierte Ansichtscontainer
Eine Erweiterung kann nun zusätzliche Aktivitäten in der Aktivitätsleiste über den Beitragspunkt viewsContainers definieren.
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "package-explorer",
"title": "Package Explorer",
"icon": "resources/package-explorer.svg"
}
]
},
"views": {
"package-explorer": [
{
"id": "package-dependencies",
"name": "Dependencies"
},
{
"id": "package-outline",
"name": "Outline"
}
]
}
}

Symbolspezifikationen
-
Größe:Symbole sind 24x24, zentriert auf einem 50x40 Quadrat. -
Farbe:Symbole sollten eine einzelne monochrome Farbe verwenden. -
Format:Es wird empfohlen, Symbole als SVG zu erstellen, obwohl jeder Bilddateityp akzeptiert wird. -
Zustände:Alle Symbole erben die folgenden ZustandsstileZustand Deckkraft Standard 60% Hover 100% Aktiv 100%
Es wird ein Befehl registriert, um jeden registrierten Ansichtscontainer anzuzeigen. Im obigen Beispiel des Paket-Explorers wäre dies Ansicht: Paket-Explorer anzeigen. Sie finden auch alle aufgelisteten Ansichtscontainer, wenn Sie den Befehl Ansicht: Ansicht öffnen... ausführen.

Hinweis: Es wird empfohlen, zusammengehörige Ansichten in einem einzigen Ansichtscontainer zu gruppieren, anstatt einen Ansichtscontainer für jede Ansicht zu erstellen.
Benutzerdefinierte Ansichten in der Quellcodeverwaltung
Sie können nun eigene Ansichten für die Quellcodeverwaltung (SCM) in den Ansichtscontainer der Quellcodeverwaltung in der Aktivitätsleiste einbringen. Sie können diese Ansichten wie im Explorer ein-/ausblenden und neu anordnen.
"contributes": {
"views": {
"scm": [
{
"id": "git-compare",
"name": "Compare"
}
]
}
}

FileSystem-Anbieter
Erweiterungen können nun Dateien und Ordner aus beliebigen Quellen, wie FTP-Servern, bereitstellen, und VS Code behandelt sie wie reguläre Dateien. Verwenden Sie dazu die Schnittstelle FileSystemProvider, die eine Erweiterung mit einem URI-Schema verknüpft, z. B. ftp. Mit dieser Schnittstelle kann der Editor Dateien und Ordner erkennen und verwalten (erstellen, löschen, lesen und schreiben).

VS Code kann auch Konfigurationsdateien (settings.json, tasks.json, launch.json) lesen und ändern, die von FileSystemProvidern bereitgestellt werden.
Sprachidentifikatoren und Dokumentselektoren
Die Hinzufügung von FileSystemProvidern bedeutet, dass nicht alle Dateien auf der Festplatte liegen und Erweiterungen sich dessen bewusst sein sollten. Die kurze, aber wichtige Botschaft lautet, dass nicht alle Dokumente auf der Festplatte liegen und wenn Ihre Erweiterung auf Festplattenzugriff angewiesen ist, müssen Sie zuerst das Schema prüfen.
Um das Bewusstsein zu schärfen, haben wir eine Informationsmeldung hinzugefügt, die angezeigt wird, wenn Sie eine Sprachfunktion nur mit einem Sprachidentifikator und nicht mit einem Dokumentfilter registrieren. Weitere Details finden Sie im Thema Dokumentselektor.
Schließlich gibt es eine Beispielerweiterung, die Sie zum Testen verwenden können. Sie implementiert ein Dateisystem, das alles im Speicher behält, nichts auf der Festplatte hat und mit dem Sie Ihre Sprachfunktionen testen können. Holen Sie sich die Erweiterung hier.
Achtung: TextDocument.isUntitled
Aufgrund der Hinzufügung von FileSystemProvidern haben wir die Semantik von TextDocument.isUntitled angepasst, so dass sie nur für neu erstellte Dokumente (mit dem Schema untitled) true ist. Zuvor wurden alle Dokumente, die nicht von der Festplatte stammten, als nicht bezeichnet behandelt. Diese Änderung kann das Verhalten Ihrer Erweiterung beeinflussen, insbesondere wenn sie davon ausgeht, dass Dokumente, die nicht als nicht bezeichnet gekennzeichnet sind, auf der Festplatte gespeichert sind.
Diagnostiken lesen
Es gibt eine neue API zum Lesen von Diagnostiken und zum Benachrichtigen bei Änderungen von Diagnostiken, siehe languages.getDiagnostics und languages.onDidChangeDiagnostics. Zum Beispiel kann eine SCM-Erweiterung nun prüfen, ob keine Fehler vorhanden sind, bevor sie Änderungen mit dem Team teilt.
Verfeinerter RenameProvider
Wir haben die RenameProvider API verfeinert und sie kann nun optional eine neue Funktion namens prepareRename implementieren. Mit dieser Funktion kann der Anbieter VS Code helfen, das umzubenennende Symbol aufzulösen und zu validieren.
Offset-basierte Informationen in Dokumentänderungsereignissen einschließen
TextDocumentContentChangeEvent hat eine neue Eigenschaft, rangeOffset, die es Erweiterungen zusammen mit rangeLength ermöglicht, (Offset, Länge)-Koordinaten zu verwenden, um Textdokumentänderungen zu verfolgen.
CodeAction-Arten für Source
CodeActionKind.Source identifiziert Code-Aktionen, die für die gesamte Datei gelten. Das Organisieren von Importen ist ein gutes Beispiel für eine Source-Code-Aktion, da sie von jeder Position in einer Datei ausgelöst werden kann.
Source-Code-Aktionen werden nicht im normalen Quick Fix-Glühbirnenmenü angezeigt. Sie müssen explizit mit dem Befehl editor.action.sourceAction angefordert werden. Source-Code-Aktionen werden auch im neuen Kontextmenü Source Actions angezeigt.
Code-Aktionen zum Organisieren von Importen
Aufbauend auf Source-Code-Aktionen identifiziert die neu hinzugefügte CodeActionKind.SourceOrganizeImports eine Code-Aktion zum Organisieren von Importen. Diese Aktionen können mit editor.action.organizeImports ausgelöst werden und haben eine Standardtastenkombination: ⇧⌥O (Windows, Linux Shift+Alt+O).
Wenn Ihre Erweiterung bereits das Organisieren von Importen implementiert, empfehlen wir Ihnen dringend, sie zur Verwendung von CodeActionKind.SourceOrganizeImports zu migrieren, damit die Benutzer eine konsistentere Erfahrung über verschiedene Sprachen hinweg haben.
CodeActionProviderMetadata
registerCodeActionsProvider nimmt nun ein optionales Argument CodeActionProviderMetadata entgegen, mit dem Erweiterungen VS Code Informationen über die Art der von einem CodeActionProvider bereitgestellten Code-Aktionen geben können. Diese Informationen werden von VS Code verwendet, um die neuen Kontextmenüs Refactor und Source Action zu aktivieren. Das Kontextmenü Refactor wird zum Beispiel nur aktiviert, wenn ein CodeActionProvider mit CodeActionProviderMetadata registriert ist, das angibt, dass er refactor.*-Code-Aktionen zurückgibt.
Webview API
Die Webview API ermöglicht es Erweiterungen, vollständig anpassbare Ansichten innerhalb von VS Code zu erstellen. Zum Beispiel verwendet die integrierte Markdown-Erweiterung Webviews, um Markdown-Vorschauen zu rendern. Webviews können auch verwendet werden, um komplexe Benutzeroberflächen zu erstellen, die über die nativen APIs von VS Code hinausgehen.

Eine neue Seite zur Erweiterungsentwicklung behandelt die Webview API. Ein Beispiel für eine Webview API-Erweiterung finden Sie auch hier. Wir freuen uns darauf, zu sehen, wie Erweiterungsautoren diese mächtige neue API nutzen.
Anwendungsumfang-Einstellungen
Wenn Sie möchten, dass Ihre Einstellungen auf Anwendungsebene angewendet werden und nicht auf Fenster- oder Ressourcenebene überschrieben werden, können Sie dies jetzt mit dem Umfang application tun.
"configuration": {
"properties": {
"git.path": {
"type": "string",
"description": "Path to the git executable",
"scope": "application"
}
}
}
Hinweis: Die Eigenschaft isExecutable wurde zugunsten der Verwendung des application-Umfangs als veraltet markiert, da sie für denselben Zweck bestimmt war.
Vorgeschlagene Erweiterungs-APIs
In diesem Meilenstein haben wir mehrere neue vorgeschlagene Erweiterungs-APIs hinzugefügt. Wir planen, diese APIs in einem zukünftigen Meilenstein in den stabilen Zustand zu überführen, sobald wir uns ihrer ausreichend sicher sind. Wir freuen uns über jedes Feedback zur Funktionsweise für Ihre Erweiterung.
Hinweis: Diese APIs sind noch vorgeschlagen, daher müssen Sie sie aktivieren, indem Sie
"enableProposedApi": truezupackage.jsonhinzufügen und die Datei vscode.proposed.d.ts in Ihr Erweiterungsprojekt kopieren. Beachten Sie auch, dass Sie keine Erweiterung im Marketplace veröffentlichen können, die das AttributenableProposedApiverwendet.
Integrated Terminal API
Die Integrated Terminal API bietet mehrere vorgeschlagene Funktionen, die Erweiterungsautoren beim Zugriff auf alle Terminals helfen und auch die Multiplexing von Terminals über verschiedene Maschinen hinweg ermöglichen. Alle Terminals können nun über die API abgerufen werden, im Gegensatz zu früher, als eine Erweiterung nur auf Terminals zugreifen konnte, die sie selbst erstellt hatte.
console.log(window.terminals);
Dafür gibt es ein passendes Ereignis:
window.onDidOpenTerminal(terminal => {
console.log('New terminal: ' + terminal.name);
});
Sie können auch den Rohdatenstrom des Terminalprozesses abfangen, einschließlich ANSI-Escape-Sequenzen.
const terminal = window.createTerminal();
terminal.onData(data => {
console.log('Terminal data: ' + data);
});
Task API
Die Task API wurde weiter verfeinert, was das Abfragen und Ausführen von Tasks aus einer Erweiterung betrifft. Die neu unterstützte API ist
fetchTasksnimmt einen Filter entgegen, um nur nach einer Teilmenge von Tasks zu fragen.taskExecutionsunterstützt das Abrufen der Ausführungsobjekte für alle laufenden Tasks.TaskExecution-Objekte, die überexecuteTask,taskExecutionsoder eines der Ereignisse bereitgestellt werden, können mit===verglichen werden.
Die API befindet sich noch im vorgeschlagenen Zustand.
Protocol Handler API
Die Protocol Handler API ermöglicht es Erweiterungen, systemweite URIs zu verarbeiten. Diese Funktionalität ist nützlich für plattformübergreifende Integrationen, da sie es anderen Anwendungen ermöglicht, URIs an bestimmte Erweiterungen zu senden.
export interface ProtocolHandler {
handleUri(uri: Uri): void;
}
export namespace window {
/**
* Registers a protocol handler capable of handling system-wide URIs.
*/
export function registerProtocolHandler(handler: ProtocolHandler): Disposable;
}
Hier ist ein Beispiel für eine Protocol Handler-Registrierung:
function activate() {
registerProtocolHandler({
handleUri(uri: Uri) {
console.log('Received URI', uri.toString());
}
});
}
Für diese API gibt es eine strikte Beziehung zwischen URI-Autoritäten und den Erweiterungen, die sie verarbeiten werden: Die URI-Autorität muss die ID der Erweiterung sein (publisher.name). Nehmen Sie das folgende URI als Beispiel:
vscode://vscode.git/clone?url=foobar
\____/ \________/ \___/ \_________/
| | | |
scheme authority path query
Die Autorität dieses URI ist vscode.git, daher wird VS Code es an die Erweiterung vscode.git weiterleiten, vorausgesetzt, sie hat ordnungsgemäß einen Protocol Handler registriert.
Da URIs geöffnet werden können, bevor Erweiterungen überhaupt registriert sind, wurde auch ein neues Aktivierungsereignis onUri eingeführt. Dies ermöglicht es Ihrer Erweiterung, aktiviert zu werden, wenn ein URI geöffnet wird, der an sie gerichtet ist.
Hinweis: Die URI-Verarbeitung wird unter Linux noch nicht unterstützt.
Folding Provider API
Der in Version 1.22 vorgeschlagene Folding Range Provider wurde aktualisiert und ist nun eine offizielle API. Sprach-Erweiterungen können nun Syntax-bewusste Faltungsbereiche bereitstellen.
/**
* Register a folding range provider.
*
* Multiple providers can be registered for a language. In that case providers are asked in
* parallel and the results are merged.
* If multiple folding ranges start at the same position, only the range of the first registered provider is used.
* If a folding range overlaps with an other range that has a smaller position, it is also ignored.
*
* A failing provider (rejected promise or exception) will
* not cause a failure of the whole operation.
*
* @param selector A selector that defines the documents this provider is applicable to.
* @param provider A folding range provider.
* @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
*/
export function registerFoldingRangeProvider(
selector: DocumentSelector,
provider: FoldingRangeProvider
): Disposable;
Beiträge zu Erweiterungen
Unser Team pflegt oder trägt zu einer Reihe von VS Code-Erweiterungen bei. Am bemerkenswertesten in diesem Monat:
Sublime Text Keymap-Erweiterung
Die Sublime Text Keymap-Erweiterung kann nun Einstellungen aus Sublime importieren.
Bei der ersten Ausführung der Erweiterung wird eine Aufforderung angezeigt, die alle Ihre importierbaren Sublime-Einstellungen auflistet. Wenn Sie Ihre Einstellungen später importieren möchten, verwenden Sie den Befehl Sublime Text Keymap: Sublime Text-Einstellungen importieren aus der Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)).

Technik
Verbesserte Stabilität der Rauchtests
VS Code hatte schon immer einen Rauchtest, der zur strengen Qualitätskontrolle dient. Wir hatten den Rauchtest automatisiert, aber es nicht geschafft, ihn stabil zu machen. In diesem Meilenstein haben wir an der Verbesserung der Stabilität und Leistung des Rauchtests gearbeitet. Weitere Details finden Sie in Pull Request #47471.
Neue Dokumentation
Tutorial zur Bereitstellung von Websites mit Azure Storage
Wir haben ein neues Tutorial zum Bereitstellen statischer Websites in Azure zum Erstellen und Bereitstellen einer statischen Website mit Azure Storage.
VS Code Blogbeiträge
Es gab zwei aktuelle Beiträge im VS Code Blog:
- Bing-gestützte Suche nach Einstellungen in VS Code – Verbesserung der Suche nach Einstellungen durch Nutzung der Bing-Natursprachen-Dienste.
- Textpuffer-Neuentwicklung – Lesen Sie über die Entwicklung unserer optimierten Textpuffer-Implementierung.
Bemerkenswerte Änderungen
- 10663: Ansichtszustand beim Wechseln von Tabs in der Vergleichsansicht beibehalten
- 24634: macOS: Einstellung zum Aktivieren von acceptsFirstMouse für Fenster hinzufügen
- 29549: Multithread-Debugging sollte das Anhalten von Threads unterstützen
- 46785: Wenn kein Fokus auf einer Datei liegt, sollte "Im Finder anzeigen" den Ordner des Arbeitsbereichs öffnen
- 47274: Node Logpoints werden in der Debug-Konsole als VM-Quelle angezeigt
- 47478: Erkennung unvollständig installierter Erweiterungen
- 48733: Einführung einer Option debug.enableAllHovers zum Aktivieren von Aufrufen von Hover-Anbietern während des Debuggens
- 46414: Debugging eines Node.js-Prozesses in einem Terminal zeigt keine Ausgabe mehr in der Debug-Konsole
Vielen Dank
Nicht zuletzt ein großes Dankeschön! an die folgenden Personen, die dazu beigetragen haben, VS Code noch besser zu machen
Beiträge zu vscode
- @alexglazkov9: Integriertes Terminal wird nicht geöffnet, wenn das Fenster keine Ordner hat PR #46518
- Brett Cannon (@brettcannon): Leerzeichen zwischen # und
regionfür Faltung in Python zulassen PR #46885 - @cody: Suchleiste löschen aktivieren, auch wenn keine Ergebnisse gefunden wurden PR #48324
- @costincaraivan: Hinzufügen von Faltungsmarkierungen für region/endregion in YAML. PR #47722
- David (@ddruker): Auswahl durch Drücken der Escape-Taste im integrierten Terminal löschen PR #47042
- Dustin Campbell (@DustinCampbell): C#-TextMate-Grammatik mit den neuesten Fehlerbehebungen aktualisieren PR #47520
- Florian Traber (@floriantraber): Git-Löschaufforderung modal machen PR #47052
- Filip Malinowski (@fmal): Hintergrundfarbe explizit anstelle einer Kurzdeklaration festlegen PR #47785
- @ivorhuang: Debugger beim Neustart starten, falls der Debugger noch nicht gestartet wurde PR #47219
- Josh Goldberg (@JoshuaKGoldberg): Tippfehler isInsalled in der Quelle korrigiert PR #47435
- @KarelCasier: Konfigurationsparameter hinzufügen, um kollabierbare Cursor zu deaktivieren (#_37967) PR #38175
- Kenny Le (@kennyle1412): Terminal basierend auf dem Arbeitsbereichspfad aufteilen PR #46461
- Laurel Williams (@lwillia): Korrektur des dreifachen Klicks auf die Erweiterungs-ID, der zusätzliche Informationen auswählt PR #47921
- Matt Acosta (@mattacosta): PHP-Funktionen neu generieren. PR #47865
- Dmitry Ignatovich (@mechatroner): Parameter für große Dateien in die Benutzereinstellungen verschieben PR #44988
- Michael Klement (@mklement0): Aktualisiere package.json zur Unterstützung von PowerShell Core Shebang-Zeilen. PR #44239
- Niklas Mollenhauer (@nikeee): Ändere Hover#range zu optional PR #48004
- Pascal Fong Kye (@pfongkye): Aussagekräftige Warnmeldung beim Formatieren PR #47919
- Yemi Bedu @ P&R (@pr-yemibedu): Winzige typografische Änderung PR #47451
- Pradeep Murugesan (@pradeepmurugesan)
- Benas Svipas (@svipben): Unterschiedliche Randstile für hohen Kontrast PR #46956
- vincentLiu (@vincentLiuxiang): Exportiere SymbolEntry zur Wiederverwendung von QuickOpen PR #47544
Beiträge zu vscode-extension-samples
- Niklas Mollenhauer (@nikeee): Ändere den Ordner
clientzulsp-samplePR #59
Beiträge zu language-server-protocol
- Simon Marchi (@simark): Ändere TextDocumentSyncKindIncremental -> TextDocumentSyncKind.Increm... PR #419
- Adelar da Silva Queiróz (@adelarsq): Sortiere Sprachserver nach Sprache PR #424
- Geoffrey Gilmore (@ggilmore): Klare Anforderung "textDocument/didOpen" PR #431
- Junfeng Li (@autozimu): Tippfehler. PR #434
- Niklas Mollenhauer (@nikeee): Füge
undefinedzu TextDocuments#get(uri: string) hinzu PR #339 - Caleb Lloyd (@caleblloyd): Korrektur für sticky Sidebar, die auf dem Desktop aus dem Bild geht PR #444
- Diego Berrocal (@CestDiego): PR #450
- Remy Suen (@rcjsuen):
Beiträge zu vscode-languageserver-node
- Remy Suen (@rcjsuen):
- Korrigiere Registrierungsparameter für workspace/didChangeWatchedFiles PR #320
- Füge Middleware hinzu, um textDocument/publishDiagnostics abzufangen PR #322
- Füge eine boolesche Eigenschaft "deprecated" zu CompletionItem und SymbolInformation hinzu PR #332
- Korrigiere documentLink/resolve durch Einführung eines data-Feldes PR #336
- Ersetze Symlinking im Travis-Build durch npm-Skripte PR #338
- Niklas Mollenhauer (@nikeee): Löse #340 PR #341
Beiträge zu vscode-chrome-debug
- @digeff
- Alexey Velikiy (@jonyrock): Ändere das Format 'json' zu 'javascript' im Code PR #640
Beiträge zu vscode-chrome-debug
Beiträge zu vscode-node-debug2
Beiträge zu localization
Es gibt über 800 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, Abstimmungen über Übersetzungen oder Vorschläge zur Prozessverbesserung.
Hier ist eine Momentaufnahme der Mitwirkenden für diese Version. Details zum Projekt, einschließlich der Liste der Mitwirkendennamen, finden Sie auf der Projektseite unter https://aka.ms/vscodeloc.
- Französisch: Antoine Griffard, Adrien Clerbois, Thierry DEMAN-BARCELO, Jean Cuteaux, Quentin BRETON.
- Italienisch: Alessandro Alpi, Andrea Dottor, Aldo Donetti, Marco Dal Pino, Riccardo Cappello.
- Deutsch: J.M., Levin Rickert.
- Spanisch: Andy Gonzalez, Alejandro Medina, Alberto Poblacion, Thierry DEMAN-BARCELO, Eickhel Mendoza.
- Japanisch: Shunya Tajima, Yuichi Nukiyama, Yosuke Sano, Seiji Momoto, Satoshi Kajiura, Toshinori Sugita.
- Chinesisch (vereinfacht): Joel Yang, YF, pluwen.
- Chinesisch (traditionell): Winnie Lin, Duran Hsieh, Ryan Tseng, Alan Tsai, alantea, Will 保哥.
- Koreanisch: ChangJoon Lee, HANSEULMARO KIM.
- Russisch: Michel Ace, Ivan.
- Bulgarisch: Любомир Василев.
- Ungarisch: Tar Dániel.
- Portugiesisch (Brasilien): Alessandro Fragnani, Roberto Fonseca, Marcelo Fernandes, Rodrigo Crespi, Matheus Palu, Bruno Sonnino, Douglas Eccker, douglas.martim.
- Portugiesisch (Portugal): Hugo Martins, Daniel Correia, Isac Van Dunem, Tiago Costa, João Mata.
- Türkisch: Adem Coşkuner, Burak Karahan, Özgür Öktem, Ömer Büyükçelik.
- Bosnisch: Muharem Basanovic, Bahrudin Hrnjica, Ismar Bašanović, Almir Vuk.
- Tschechisch: Vít Staniček, Vojtěch Habarta, m_fr, Frantisek Veris, Jakub Skořepa, Michal Zobec, Ferdinand Prantl, Ľubomír Kováč, Jan Brudný.
- Niederländisch: Marco van den Hout, Maarten van Stam, Gerald Versluis.
- Finnisch: Petri Niinimäki, Feetu Nyrhinen.
- Hindi: Brahma Dev.
- Indonesisch: Febrian Setianto (Feber), Wildan Mubarok, Adrian M. R., G-RiNe Project, Joseph Aditya P G, Mulia Arifandi Nasution, Herman Prawiro.
- Lettisch: kozete, Pēteris Kļaviņš, Edgars, Simone Chiaretta.
- Polnisch: Joanna Skurzyńska, Mateusz Wyczawski.
- Rumänisch: Schiriac Robert.
- Serbisch: Jean Cuteaux.
- Thai: ภูมิไผท จันทรศรีวงศ์.
- Ukrainisch: Dmytro Kyrychuk, Borys Lebeda.
- Esperanto: Andy Hampton.