Februar 2021 (Version 1.54)
Update 1.54.1: Das Update behebt ein Problem mit einer Erweiterungsabhängigkeit.
Update 1.54.2: Das Update behebt diese Probleme.
Update 1.54.3: Das Update behebt dieses Problem.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel Silicon | Linux: deb rpm Tarball Arm snap
Willkommen zur Veröffentlichung von Visual Studio Code im Februar 2021. Es gibt eine Reihe von Aktualisierungen in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:
- Apple Silicon Builds - VS Code ist jetzt stabil für Apple Silicon verfügbar.
- Barrierefreiheitsverbesserungen - Bessere Wortnavigation unter Windows und Rollen für Ansichten und Schaltflächen.
- Persistente Terminalprozesse - Lokale Terminalprozesse werden beim Neuladen des Fensters wiederhergestellt.
- Produkt-Icon-Themen - Personalisieren Sie Ihre VS Code-Icon-Darstellungen mit Produkt-Icon-Themen.
- Verbesserungen der Zeitleistenansicht - Vergleichen Sie Änderungen zwischen Einträgen in der Git-Verlaufzeitleiste.
- Notebooks automatisch neu laden - Notebooks werden automatisch neu geladen, wenn sich ihre Datei auf der Festplatte ändert.
- Tabellenansicht für Remote-Ports - Remote-Ports werden jetzt in einem Tabellen-Widget angezeigt.
- Brackets-Erweiterungen - Verwenden Sie Brackets-Tastenkombinationen in VS Code.
- Blogbeitrag zur Fehlerbehebung bei Erweiterungen - Erfahren Sie, wie Sie Erweiterungen mithilfe von Extension Bisect beheben.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Begleiten Sie uns live am Donnerstag, den 11. März um 8 Uhr Pazifikzeit (16 Uhr London) beim Livestream des VS Code-Teams, um eine Demo der Neuerungen dieser Version zu sehen und uns live Fragen zu stellen.
Insiders: Möchten Sie neue Funktionen so schnell wie möglich ausprobieren? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.
Apple Silicon
Wir freuen uns, Ihnen in dieser Iteration unsere erste stabile Veröffentlichung von Apple Silicon-Builds ankündigen zu können. Benutzer von Macs mit M1-Chips können VS Code jetzt ohne Emulation mit Rosetta verwenden und werden eine bessere Leistung und längere Akkulaufzeit bei der Ausführung von VS Code feststellen. Dank der Community, die mit dem Insider-Build selbst gehostet und frühzeitig in der Iteration Probleme gemeldet hat.
Der Standarddownload von VS Code für macOS ist jetzt ein Universal-Build, der nativ auf allen Macs läuft. Auf der Seite Downloads finden Sie weitere Links zu Architekturspezifischen Builds für Intel oder Apple Silicon, die im Vergleich zum Universal-Paket kleinere Downloads darstellen.
![]()

Barrierefreiheit
Symbolleisten und Tabs belegen einen Tab-Stopp
Alle Symbolleisten im Arbeitsbereich folgen nun dem Standardverhalten der Navigation. Die Symbolleiste belegt daher nur eine einzige Position in der Tabulatorreihenfolge und ist mit den Pfeiltasten navigierbar. Sobald der Fokus auf der Symbolleiste liegt, sollten die Pfeiltasten verwendet werden, um den Fokus auf ein bestimmtes Element in der Symbolleiste zu bewegen. Infolgedessen hat der Arbeitsbereich weitaus weniger Tab-Stopps, was die Navigation über alle Teile erleichtert.
Der Einfachheit halber wurde die gleiche Änderung auf den Tab-Bereich angewendet. Daher ist der gesamte Tab-Bereich nur ein Tab-Stopp, und die Tastaturnavigation zwischen den Tabs sollte mit den linken und rechten Pfeiltasten erfolgen.
Wortnavigation unter Windows
Wir haben die Wortnavigation unter Windows verbessert, um sie an die Erwartungen von Screenreadern unter Windows an eine auf Electron basierende Anwendung anzupassen. Wenn Sie nun die Wortnavigation verwenden, wird jedes Wort vom Screenreader korrekt vorgelesen.
Aufgrund dieser Änderung stellen wir die folgenden Befehle ein. Sie funktionieren weiterhin, könnten aber in Zukunft entfernt werden.
cursorWordAccessibilityLeftcursorWordAccessibilityLeftSelectcursorWordAccessibilityRightcursorWordAccessibilityRightSelect
Nicht-Windows-Plattformen funktionierten bereits wie erwartet, daher haben wir dort keine Änderungen vorgenommen.
Verbesserte Rollen für Ansichten und Schaltflächen
Basierend auf Benutzerfeedback haben wir die Rollen mehrerer Ansichten und Schaltflächen im Arbeitsbereich verbessert. Aktivitätsleiste, Seitenleiste und Panel haben jetzt role:none, was den Screenreader weniger gesprächig macht. Die Schaltflächen Verwalten und Konten in der Aktivitätsleiste kündigen nun ordnungsgemäß an, dass sie ein Popup haben.
Integriertes Terminal
Terminalprozesse beim Neuladen des Fensters beibehalten
Lokale Terminalprozesse werden jetzt beim Neuladen des Fensters wiederhergestellt, z. B. wenn eine Erweiterungsinstallation einen Neuladevorgang erfordert. Das Terminal wird neu verbunden und der UI-Status der Terminals wird wiederhergestellt, einschließlich der aktiven Registerkarte und der relativen Abmessungen geteilter Terminals.

Diese Funktion kann deaktiviert werden, indem terminal.integrated.enablePersistentSessions auf false gesetzt wird.
Leistungsverbesserungen unter Windows
Dank des neuen Terminalprozess-Layouts sollten häufige Pty-Datenereignisse von Terminalprozessen jetzt schneller verarbeitet werden. Dies betrifft voraussichtlich Windows mehr als andere Plattformen aufgrund der kleineren Ereignisse, die conpty unter Windows liefert.
Automatische Wiederherstellung von Terminals, die Umgebungsänderungen erfordern
Kürzlich wurde eine neue Funktion eingeführt, die es Erweiterungen ermöglicht, die Umgebung des Terminals zu beeinflussen. Dies wird von verschiedenen Spracherweiterungen und der integrierten Git-Erweiterung verwendet, um VS Code als Git-Authentifizierungsanbieter zu ermöglichen und die Notwendigkeit der Anmeldung zu negieren. Zuvor war die UX dafür, ein subtiles ⚠️-Symbol oben rechts anzuzeigen, um anzuzeigen, dass die Umgebung eines Terminals veraltet ist. Die Anzeige war subtil, da Umgebungsänderungen wichtig sein können oder auch nicht.
Wir haben dies angepasst, um Terminals, die veraltete Umgebungen haben, automatisch neu zu starten, wenn sie noch nicht interaktiv genutzt wurden. Dies kann zu etwas Flimmern führen, aber die Erweiterungsterminalintegration ist jetzt wesentlich nahtloser. Zum Beispiel sollte das erste Terminal in einem WSL-Fenster keine Git-Authentifizierungsfehler mehr anzeigen, vorausgesetzt, der Neustart erfolgte, bevor etwas in das Terminal eingegeben wurde.
Workbench
Emmet
Die Befehle Mit Abkürzung umschließen und Einzelne Zeilen mit Abkürzung umschließen wurden zu einem einzigen Befehl Mit Abkürzung umschließen zusammengeführt, um Verwirrung darüber zu vermeiden, welcher Umbruchbefehl verwendet werden soll. Zusätzlich zeigt der Befehl Mit Abkürzung umschließen nun den Vorschub-Whitespace korrekt an.
Die Einstellung emmet.extensionsPath kann jetzt auch ein Array von Pfaden entgegennehmen, anstatt nur eine Zeichenkette. Daher kann man in Kombination mit Settings Sync auf verschiedene Snippet-Dateien verweisen, je nach Maschine, auf der man sich befindet, ohne die Einstellung pro Maschine aktualisieren zu müssen.
Produkt-Icon-Themen
Die ersten Produkt-Icon-Themen sind im Extension Marketplace verfügbar. Dank der Theme-Autoren für die großartige Arbeit!
Um ein Thema auszuwählen oder zu finden, verwenden Sie den Befehl Präferenz: Produkt-Icon-Thema aus der Befehlspalette oder dem Einstellungen-Zahnrad.
![]()
IntelliSense für Kontextschlüssel
VS Code verwendet when-Klauseln, um Tastenkombinationen zu aktivieren und zu deaktivieren. Erweiterungen verwenden auch when-Klauseln, um Menü- und Ansichtsbeiträge zu steuern. Das Erstellen dieser when-Klauseln ist jetzt viel einfacher, da der Editor Vervollständigungen dafür anbietet.
Thema: GitHub Light Theme, Schriftart: FiraCode
Aktion für neue unbenannte Dateien in "Geöffnete Editoren"
Es gibt jetzt eine Aktion Neue unbenannte Datei im Titelbereich der Ansicht Geöffnete Editoren.

Aktualisierte Einstellungen für die Anwendungsmenüleiste
Die Einstellung window.menuBarVisibility für die Sichtbarkeit der Anwendungsmenüleiste wurde aktualisiert, um die Optionen besser widerzuspiegeln. Es wurden zwei Hauptänderungen vorgenommen.
Erstens wurde die Option default für die Einstellung in classic umbenannt.
Zweitens schaltet der Eintrag Menüleiste anzeigen in der Anwendungsmenüleiste zwischen den Optionen classic und compact um. Um sie vollständig auszublenden, können Sie die Einstellung aktualisieren oder das Kontextmenü der Aktivitätsleiste im compact-Modus verwenden.
Thema: GitHub Light Theme
Verbesserungen beim Webview-Caching
Wir haben das Caching für lokale Dateien innerhalb eines Webviews verbessert. Wenn ein Webview eine Datei von der Festplatte neu lädt, verwenden wir jetzt ETags, um das erneute Lesen der Datei zu vermeiden, wenn sie sich nicht geändert hat. Dies kann die Datenübertragung eliminieren und die Antwortzeit verbessern, insbesondere für Remote-Arbeitsbereiche.
Dieses Caching gilt derzeit nur, wenn ein vorhandener Webview eine Ressource neu lädt. Es gilt nicht für neu erstellte Webviews, auch wenn dieser Webview zu einer Erweiterung gehört, die zuvor einen ähnlichen Webview erstellt hat.
Änderungen an den Suchaktionen im Arbeitsbereich
Wir haben die vorhandene Aktion workbench.view.search modifiziert, um den ausgewählten Text nicht mehr in die Sucheingabe einzufügen, sondern die Eingabe zu öffnen. Um eine neue Suche mit dem ausgewählten Text zu erstellen und die Einstellung search.mode zu berücksichtigen, sollte workbench.action.findInFiles verwendet werden.
Nur-Modifikator-Tastenkombinationen
Es ist jetzt möglich, Tastenkombinationen für doppelte Modifikatoren zu definieren, z. B. shift shift, alt alt, ctrl ctrl oder cmd cmd / meta meta / win win. Diese Tastenkombinationen können manuell in keybindings.json eingegeben werden, zum Beispiel
{ "key": "shift shift", "command": "workbench.action.quickOpen" }
Aktualisierte Listen-/Baum-Benutzeroberfläche
Wir haben die Listen-/Baum-Stile aktualisiert, um native Fokus- und Auswahlindikatoren nachzubilden: Fokussierte Elemente werden nun mit einer Umrissfarbe gerendert.

Änderung mit Auswirkung auf die Abwärtskompatibilität
Themenautoren wird empfohlen, diesen Stil ebenfalls zu übernehmen, indem sie einfach die Anpassung der Farbe list.focusBackground gegen die Farbe quickInput.list.focusBackground austauschen. Ein Beispiel finden Sie in diesem Commit.
Tabellen-Widget
Wir haben ein neues Tabellen-Widget eingeführt, das auf dem vorhandenen Listen-Widget aufbaut, sodass wir tabellarische Daten mit der gleichen Leistung rendern können wie Listen-Elemente. Derzeit wird es in der Port-Ansicht für unsere Remote-Funktionen verwendet.

Erste Schritte
Wir experimentieren mit einem neuen Editor, der beim Start angezeigt wird, dem Editor "Erste Schritte". Dieser soll einige Funktionen von VS Code für neue Benutzer zugänglicher machen. Einige Insider-Benutzer haben ihn möglicherweise bereits gesehen, und er wird im Laufe dieser Iteration langsam auf weitere stabile Benutzer ausgerollt. Sie können das neue Verhalten jederzeit aktivieren oder deaktivieren, indem Sie die Einstellung workbench.startupEditor auf gettingStarted oder davon weg ändern.

Timeline-Ansicht
Sie können jetzt Änderungen über Git-Verlaufseinträge hinweg vergleichen, indem Sie die Befehle Zum Vergleichen auswählen und Mit ausgewählten vergleichen verwenden – ähnlich wie beim Vergleichen von Dateien in der Explorer-Ansicht. Mit dieser Funktion können Sie schnell alle Änderungen zwischen zwei Commits in Ihrem Git-Dateiverlauf anzeigen.

Standard-Sash-Hover-Rahmenfarbe
In der Version 1.52 haben wir das Hover-Rahmenfarbe-Token für Sashes (sash.hoverBorder) eingeführt, aber keinen Standardwert festgelegt. Wir zeigen diese Farbe jetzt standardmäßig in allen Themen an.

Debugging
Verbesserungen an der Breakpoints-Ansicht
Neue Inline-Aktion zum Entfernen von Breakpoints
Wir haben eine Inline-Aktion X hinzugefügt, um Breakpoints in der Breakpoints-Ansicht zu entfernen. Diese Aktion sollte das Entfernen von Breakpoints erleichtern.

Hilfetextunterstützung für Ausnahmefilter
Kürzlich haben wir die Unterstützung für die Bearbeitung von Bedingungen für Ausnahmefilter in der Breakpoints-Ansicht hinzugefügt.
Um diese Bedingungen auffindbarer und ihre Syntax selbsterklärend zu machen, zeigt VS Code jetzt einen Hover über dem Ausnahmefilter und einen Platzhaltertext im Bedingungstextfeld an.
Da die Informationen für beide vom zugrunde liegenden Debug-Adapter bereitgestellt werden, können sie viel spezifischer (und damit hilfreicher) sein als eine generische Nachricht.
Da diese neue Funktion auf Erweiterungen des Debug-Adapter-Protokolls (siehe unten) basiert, erfordert sie eine Opt-in-Funktion von Debug-Adaptern. In dieser Version unterstützt nur der integrierte JavaScript-Debugger von VS Code die neue Funktion.

Neue Einstellungen und weitere Verbesserungen
Identische Zeilen in der Debug-Konsole zusammenklappen
Es gibt eine neue Einstellung, debug.console.collapseIdenticalLines, die steuert, ob die Debug-Konsole identische Zeilen zusammenklappt und viele Vorkommen mit einer Markierung anzeigt. Standardmäßig werden sie zusammengeklappt.
Steuern, welche Editoren vor dem Debugging gespeichert werden sollen
Es gibt eine neue Einstellung, debug.saveBeforeStart, die steuert, welche Editoren vor dem Start des Debuggings gespeichert werden. Diese Einstellung hat die folgenden Werte:
allEditorsInActiveGroup: Alle Editoren in der aktiven Gruppe speichern. Der Standardwert.nonUntitledEditorsInActiveGroup: Alle Editoren in der aktiven Gruppe speichern, außer unbenannten.none: Keine Editoren speichern.
Diese Einstellung ist nützlich für das PowerShell-Debugging, da der PowerShell-Debugger das Debuggen von ungespeicherten Dateien unterstützt.
Verbesserte Aktivierung der Aktion "Frame neu starten"
Mit einer neuen Ergänzung des Debug-Adapter-Protokolls können Debug-Adapter der VS Code-Benutzeroberfläche mitteilen, ob die Aktion "Frame neu starten" für einen ausgewählten Stackframe verfügbar ist. VS Code deaktiviert nun die Inline-Aktion "Frame neu starten" in der Call Stack-Ansicht für Stackframes, die nicht neu gestartet werden können.
Zum Beispiel hat die JS-Debug-Erweiterung dies übernommen und deaktiviert nun bei asynchronen Stack-Traces die Aktion "Frame neu starten".
Sprachen
TypeScript 4.2
VS Code wird jetzt mit TypeScript 4.2.2 ausgeliefert. Dieses große Update enthält viele Verbesserungen der TypeScript-Sprache sowie viele Verbesserungen und Fehlerbehebungen für die JavaScript- und TypeScript-Tooling.
Sie können mehr über TypeScript 4.2 im TypeScript-Blog lesen.
Quick Fix zum Deklarieren fehlender Funktionen
Der neue Fehlende Funktionsdeklaration hinzufügen Quick Fix erstellt Stub-Funktionen für fehlende Funktionen. Wenn wir beispielsweise einen Aufruf einer fehlenden Funktion add haben
const x: number = add(1, 2);
Die Verwendung von Fehlende Funktionsdeklaration hinzufügen auf add ergibt
const x: number = add(1, 2);
function add(arg0: number, arg1: number): number {
throw new Error('Function not implemented.');
}
Sie können diesen Quick Fix beim Schreiben von Code verwenden, um schnell eine Funktion basierend auf einer Aufrufsignatur zu erstellen.
Um diesen Quick Fix in JavaScript zu verwenden, müssen Sie die Typüberprüfung aktivieren.
JS Doc-Vorlagen generieren jetzt @returns
JS Doc-Vorlagen enthalten jetzt automatisch @returns, wenn die zu annotierende Funktion eine return-Anweisung enthält. Zum Beispiel für die Funktion getViz
function getViz(el) {
return el?.viz;
}
Die generierte JSDoc-Vorlage ist
/**
*
* @param {*} el
* @returns
*/
function getViz(el) {
return el?.viz;
}
Sie können @returns in JSDoc-Kommentaren mit javascript.suggest.jsdoc.generateReturns und typescript.suggest.jsdoc.generateReturns deaktivieren.
Veraltete DOM-APIs sind jetzt markiert
Veraltete DOM-Methoden sind jetzt in Vorschlägen und im Code als veraltet markiert.

Sie können das Anzeigen veralteter Eigenschaften und Funktionen im Editor deaktivieren, indem Sie editor.showDeprecated: false setzen.
Notebooks
Notebooks automatisch neu laden
Notebooks werden jetzt automatisch neu geladen, wenn sich ihre Datei auf der Festplatte ändert und wenn sie keine ungespeicherten Änderungen haben. Dies sollte die Arbeit mit Notebooks, die sich unter Versionskontrolle befinden, erheblich vereinfachen.
Verbesserter Fokus für große Zellen
Wenn eine große Notebook-Zelle fokussiert ist, können Sie jetzt besser erkennen, welche Zelle fokussiert ist, wenn die Ober- und Unterseite der Zellen außer Sichtweite sind. Wir zeigen nun einen Rahmen an der linken und rechten Seite der fokussierten Zelle an.

Hover in CSS/LESS/SCSS und HTML
Sie können nun den Inhalt von Hovern in HTML und CSS feinabstimmen, um
- die Dokumentation von MDN nicht anzuzeigen
- den Link zur MDN-Seite nicht anzuzeigen
Verwenden Sie die Einstellungen css.hover.documentation und css.hover.references, um die Hover für CSS zu ändern. Ersetzen Sie css durch html, css, scss oder less, um die Einstellungen für diese Sprachen zu ändern.
Vorschau-Funktionen
Erweiterbare Markdown-Renderer für Notebooks
In dieser Iteration haben wir untersucht, wie der Markdown-Renderer für Notebook-Zellen erweiterbar gemacht werden kann. Im Screenshot unten haben wir beispielsweise den Markdown-Renderer von VS Code erweitert, um mathematische Formeln in Notebook-Zellen anzuzeigen.

Um unseren Markdown-Renderer erweiterbar zu machen, haben wir untersucht, Markdown It zum Rendern aller Notebook-Markdown zu verwenden. Wir haben auch erwogen, das gerenderte Markdown in das Backlayer-Webview des Notebooks zu verschieben.
Obwohl wir noch nicht bereit sind, eine offizielle API dafür zu öffnen, planen wir, diese Untersuchung im März fortzusetzen. Sie können die neuen erweiterbaren Markdown-Renderer auch heute mit der undokumentierten Einstellung notebook.experimental.useMarkdownRenderer: true ausprobieren.
Beiträge zu Erweiterungen
Brackets
Entwickler, die vom Brackets-Quellcode-Editor kommen, können ihre Tastenkombinationen weiterhin in VS Code mit der Brackets Keymap-Erweiterung verwenden. Es gibt auch ein Brackets Extension Pack, das Erweiterungen für die Arbeit mit CSS und Live-Vorschauen bündelt.

GitHub Pull Requests und Issues
Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung wird fortgesetzt, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten.
Um alle neuen Funktionen und Aktualisierungen kennenzulernen, können Sie die vollständigen Changelogs für die Version 0.24.0 der Erweiterung einsehen.
Remote-Entwicklung
Die Arbeit an den Remote Development-Erweiterungen wird fortgesetzt. Diese ermöglichen es Ihnen, einen Container, eine Remote-Maschine oder das Windows Subsystem for Linux (WSL) als voll ausgestattete Entwicklungsumgebung zu nutzen.
Zu den wichtigsten Funktionen in 1.54 gehören:
- Port-Ansicht Tabellenlayout
- Remote - SSH: X11-Weiterleitung
- WSL: Verbesserte WSL 2-Unterstützung
Neue Erweiterungsfunktionen und Fehlerbehebungen finden Sie in den Remote Development Release Notes.
Erweiterungs-Authoring
Grenzen für das Editor-Titelleistenmenü und das Untermenü "Run"
Der Platz in der Editor-Symbolleiste (editor/title) ist begrenzt. Daher haben wir
- ein Überlaufverhalten implementiert. Wenn die primäre Gruppe, d.h. die Gruppe der Aktionen, die mit Icons gerendert werden, neun Befehle überschreitet, fließen alle zusätzlichen Befehle in das Menü
.... - das Untermenü
editor/title/runhinzugefügt. Wir bitten die Erweiterungsautoren, Run- und Debug-Befehle in dieses Menü beizusteuern und nicht mehr in das Menüeditor/title, wie wir es in einer früheren Version empfohlen haben. Darüber hinaus ist es nicht mehr notwendig, die magischen Gruppenwerte1_run@10und1_run@20zu verwenden, damit die Befehle an der richtigen Position angezeigt werden.

Beachten Sie auch, dass das Run-Untermenü dynamisch ist und sich selbst durch sein erstes Kind ersetzt, wenn dieses das einzige Kind ist.
Authentifizierungsanbieter-API
Sie können jetzt einen Authentifizierungsanbieter registrieren, der von anderen Erweiterungen verwendet werden kann, um die Authentifizierung gegen einen Dienst durchzuführen.
Neuer Feedbackkanal für den Extension Marketplace
Es gibt ein neues öffentliches Repository für Probleme im Zusammenhang mit dem Extension Marketplace. Wenn Sie technische Probleme haben, Feedback geben möchten oder Funktionswünsche haben, öffnen Sie bitte ein Issue.
Aktualisierte Codicons
Wir haben die folgenden neuen Symbole zu unserer Codicon-Bibliothek hinzugefügt
debug-rerungathergit-pull-request-createnotebook-templaterun-aboverun-belowtype-hierarchytype-hierarchy-subtype-hierarchy-supervariable-group
![]()
Wir haben auch die folgenden Icons aktualisiert, um sie konsistenter zu gestalten.
debug-alt-smalldebug-altdebug-rerunplay-circleplayrun-aboverun-allrun-below
![]()
Vorgeschlagene Erweiterungs-APIs
Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich und Erweiterungsautoren können sie ausprobieren. Wie immer wünschen wir uns Ihr Feedback. Hier erfahren Sie, wie Sie eine vorgeschlagene API ausprobieren können
- Sie müssen Insiders verwenden, da sich vorgeschlagene APIs häufig ändern.
- Sie müssen diese Zeile in der Datei
package.jsonIhrer Erweiterung haben:"enableProposedApi": true. - Kopieren Sie die neueste Version der Datei vscode.proposed.d.ts in den Quellcode-Speicherort Ihres Projekts.
Sie können keine Erweiterung veröffentlichen, die eine vorgeschlagene API verwendet. Es kann zu Breaking Changes in der nächsten Version kommen und wir möchten niemals bestehende Erweiterungen beeinträchtigen.
Icon-Beitragspunkt
Der Icon-Beitragspunkt ermöglicht es Erweiterungen, ein neues Icon anhand einer ID zusammen mit einem Standard-Icon zu definieren. Diese Icon-ID kann dann von der Erweiterung (oder jeder anderen Erweiterung, die von der Erweiterung abhängt) an Stellen verwendet werden, an denen ThemeIcon verwendet werden kann: In Markdown-Strings (z.B. "$(distro-ubuntu)" Ubuntu 20.04") und an allen Stellen, die ein ThemeIcon verwenden (z.B. new ThemeIcon("distro-ubuntu")).
Produkt-Icon-Themes können das Icon neu definieren (wenn sie die Icon-ID kennen).
Weitere Informationen finden Sie in Issue 114942 für Details und Feedback.
Inline-Wert-Anbieter-API
Die Funktion Inline-Werte anzeigen des Debuggers von VS Code basiert derzeit auf einer generischen Implementierung im VS Code-Kern und bietet keine Anpassung durch Einstellungen oder Erweiterbarkeit durch Erweiterungen. Folglich ist sie nicht für alle Sprachen perfekt geeignet und zeigt manchmal falsche Werte an, da sie die zugrunde liegende Quellsprache nicht versteht. Aus diesem Grund arbeiten wir an einer Erweiterungs-API, die es ermöglicht, die integrierte Implementierung vollständig zu ersetzen oder Teile der Implementierung durch benutzerdefinierten Code zu ersetzen.
In diesem Meilenstein haben wir eine erste Implementierung der vorgeschlagenen API verfügbar gemacht.
Hier ist die Inline-Werte-Anbieter-API im Überblick:
- ein
InlineValuesProvidermuss für eine Sprache registriert werden. - für ein gegebenes Dokument muss der
InlineValuesProvideralle Sprachelemente lokalisieren, für die Inline-Werte angezeigt werden sollen. - für jedes Element muss ein
InlineValue-Deskriptorobjekt zurückgegeben werden, das VS Code anweist, welche Informationen angezeigt werden sollen. Derzeit werden drei Arten vonInlineValue-Objekten unterstützt:InlineValueText: der vollständige anzuzeigende Text.InlineValueVariableLookup: der Name einer Variable, den VS Code versucht, in der Variablenansicht nachzuschlagen, um ihren Wert zu finden. Der Name und der Wert werden dann in der Form "name = Wert" angezeigt.InlineValueEvaluatableExpression: ein Ausdruck, den VS Code an den Debugger zur Auswertung sendet. Der Ausdruck und das Ergebnis werden dann in der Form "Ausdruck = Ergebnis" angezeigt.
Der folgende Snippet (aus Mock Debug) zeigt einen minimalen Inline-Werte-Provider für "Markdown"-Dateien, der einen regulären Ausdruck verwendet, um "Variablen" zu lokalisieren, und dann VS Code anweist, deren Werte über die Variablenansicht zu finden.
vscode.languages.registerInlineValuesProvider('markdown', {
provideInlineValues(
document: TextDocument,
viewport: Range,
context: InlineValueContext
): ProviderResult<InlineValue[]> {
const allValues: InlineValue[] = [];
for (let l = 0; l <= context.stoppedLocation.end.line; l++) {
const line = document.lineAt(l);
var regExp = /local_[ifso]/gi; // match variables of the form local_i, local_f, Local_i, LOCAL_S...
do {
var match = regExp.exec(line.text);
if (match) {
const varName = match[0];
const varRange = new Range(l, match.index, l, match.index + varName.length);
allValues.push(new InlineValueVariableLookup(varRange, varName));
}
} while (match);
}
return allValues;
}
});
Und hier die Inline-Werte-Anbieter in Aktion.

Wenn Sie Feedback zu dieser vorgeschlagenen API geben möchten, fügen Sie bitte Kommentare zu diesem Issue hinzu.
Testen
Wir haben weitere Fortschritte bei Tests in VS Code gemacht. In diesem Monat haben wir uns auf die Verfeinerung der grundlegenden Erfahrungen in VS Code und der Erweiterungs-APIs konzentriert. Wir haben auch einige vorläufige Dokumentationen zu Tests veröffentlicht, die erweitert werden, sobald die APIs stabiler werden.
Language Server Protocol
Ein erster Vorschlag für ein diagnostisches Pull-Modell wurde für die bevorstehende Version 3.17 implementiert. Der Vorschlag ist in den nächsten Versionen der VS Code LSP-Bibliotheken verfügbar.
Debug Adapter Protocol
Mehr Hilfetexteigenschaften für ExceptionBreakpointsFilter
Zwei optionale UI-Attribute description und conditionDescription wurden zu ExceptionBreakpointsFilter hinzugefügt.
Mit diesen Attributen können Clients zusätzliche Informationen über Ausnahmepunkte anzeigen. Die Eigenschaft description könnte in einem Hover angezeigt werden und conditionDescription könnte als Platzhaltertext für ein Textfeld verwendet werden, in dem die Bedingung bearbeitet werden kann.
Verbesserte Beschreibung für die Anforderung setExceptionBreakpoints
Wir haben die Beschreibung der Anforderung setExceptionBreakpoints verbessert, indem wir Anleitungen hinzugefügt haben, was ein Adapter tun soll, wenn der Benutzer eine ungültige Bedingung für Ausnahmepunkte eingibt.
Neue Eigenschaft canRestart für Stackframes
Eine neue optionale boolesche Eigenschaft canRestart wurde zum Stackframe hinzugefügt. Sie gibt an, ob der Stackframe mit der Anforderung restart neu gestartet werden kann. Basierend auf dieser Information kann ein Client eine Kontextmenüaktion "Frame neu starten" aktivieren oder deaktivieren.
Technik
Fortschritte beim Electron-Sandbox
In diesem Meilenstein haben wir das VS Code-Fenster weiterhin für die Aktivierung der Funktionen Sandbox und Kontextisolierung von Electron vorbereitet.
Insbesondere
- Wir konnten einige der nativen Modulanforderungen, die wir im Renderer haben, in andere Prozesse verschieben.
- Der Kommunikationskanal
MessagePortwurde so implementiert, dass er funktioniert, wenn die Sandbox aktiviert ist.
Neues Terminalprozess-Layout
Terminalprozesse werden jetzt unter einem neuen "pty host"-Prozess gestartet, anstatt unter dem Fensterprozess. Diese Änderung ist nicht nur Teil der Electron-Sandbox, sondern sollte auch die Stabilität und Leistung des Terminals verbessern.
Windows-Installer, die im Windows Package Manager veröffentlicht werden
Windows-Benutzer- und System-Installer für x86 und x64 werden jetzt im Windows Package Manager veröffentlicht. Sie können das winget-Tool verwenden, um nach allen Visual Studio Code-Installern zu suchen (winget search vscode) und alle veröffentlichten Installer zu installieren.
VS Code mit TypeScript 4.3 erstellen
VS Code wird jetzt mit einem Nachtbuild von TypeScript 4.3 erstellt. Dies ermöglicht uns, die neuesten Arbeiten des TypeScript-Teams zu validieren und auch Feedback zu neuen Änderungen zu geben.
Die neueste TypeScript-Version hat uns bereits geholfen, einige Fälle aufzudecken, in denen wir await in bedingten Anweisungen vergessen hatten.
Änderungen an yarn.lock verhindern
Wir haben jetzt eine CI, die PRs gegen yarn.lock-Dateien verhindert, um die Sicherheit der Lieferkette zu verbessern.
Standard-Branch: main
Wir haben damit begonnen, den Standardbranch aller unserer Repositories in main umzubenennen, einschließlich microsoft/vscode. Wir sind zu etwa 60 % mit dieser Bemühung fertig.
Dokumentation
VS Code und Python im Klassenzimmer
Lesen Sie die Fallstudie eines Informatikprofessors am Harvey Mudd College, der VS Code in seinen Einführungskursen Informatik mit Python verwendet. Erfahren Sie mehr über die Einstellungen, die er seinen Studenten empfiehlt, sowie über nützliche Erweiterungen und kostenlose, selbstgesteuerte Python- und Data-Science-Lektionen.
Blogbeitrag zur Fehlerbehebung bei Erweiterungen
Jeder liebt es, VS Code-Erweiterungen zu installieren und zu verwenden. Wenn Sie jedoch viele Erweiterungen installiert haben, kann der Editor manchmal "komisch" werden, und es wäre gut zu wissen, ob das Verhalten von einer bestimmten Erweiterung verursacht wird. Wenn Sie die frühere Ankündigung des Extension Bisect-Dienstprogramms verpasst haben, können Sie diesen Blogbeitrag "Resolving extension issues with bisect" lesen, der beschreibt, wie Sie "schlechte" Erweiterungen schnell beheben und sogar den Erweiterungsautor(en) mit Feedback helfen können.
Bemerkenswerte Fehlerbehebungen
- 100151: Menü-Taste wird auf falschen Artikel im Explorer angewendet
- 112055: Debug öffnet ein neues integriertes Terminal für jede Python-Sitzung
- 114881: Symlinks beim Kopieren von Ordnern oder Dateien beibehalten
- 114933: Frustration wegen "Task kann nicht verfolgt werden"
- 115922: Cursor-Tasten funktionieren nicht zum Filtern im Dateiexplorer
- 116037: Keine Link-Hover für Ausgabe in der Debug-Konsole angezeigt
- 116101: Ich kann den Zielbefehl in der Befehlssuche nicht finden, da die englische Beschreibung verschwunden ist
- 116932: Das Auslösen von benutzerdefinierten Ausnahmen aus der Ausführung von beigesteuerten Befehlen zeigt eine kryptische Fehlermeldung
Vielen Dank
Last but certainly not least, ein großes Danke an die folgenden Personen, die diesen Monat zu VS Code beigetragen haben
Beiträge zu unserer Fehlerverfolgung
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
Beiträge zu vscode
- @antonvolokha (Anton Volokha): Korrektur von Issue #116591 PR #116885
- @CameronIrvine (Cameron): Korrigiert #114432: Mehrere Speicher-Dialogfelder werden unter Windows angezeigt, wenn Strg+S mehrmals gedrückt wird PR #114450
- @davidbailey00 (David Bailey): RPM: Keine Build_id-Links generieren PR #116105
- @DonJayamanne (Don Jayamanne): Sicherstellen, dass der RunState der Notebook-Zelle korrekt aktualisiert wird PR #116901
- @engelsdamien (Damien Engels): Ausschluss von TSEC explizit auflisten PR #116460
- @ferenczy (Dawid Ferenczy Rogožan): Tippfehler in der Lokalisierungszeichenkette wordBasedSuggestionsMode korrigiert PR #115809
- @gjsjohnmurray (John Murray): Leitkommentare in der GH-Fehlerberichtsvorlage verbessern PR #116183
- @guiherzog (Guilherme Herzog): Verbesserung der Leistung des Baumtraversals in der Funktion getViewState PR #115387
- @habibkarim (Habib Karim): Behandlung normalisierter absoluter Dateipfade beim Klicken auf einen Link in der Markdown-Vorschau PR #116649
- @jeanp413 (Jean Pierre)
- Behebt #115922 PR #116005
- Emmet: Option output.reverseAttributes hinzufügen PR #116088
- VS Code reagiert nicht mehr, nachdem ein Dateiname mit vielen Punkten im Explorer eingefügt wurde PR #116268
- Zusammenführung von
wrapWithAbbreviationundwrapIndividualLinesWithAbbreviationin einem Befehl PR #116603
- @jogo-: Rechtschreibung in papercuts.github-issues korrigiert PR #115452
- @Klagopsalmer (Alexandre Schnegg): Korrigiert #95040 PR #116027
- @lancewl (Hsuan-An Weng Lin)
- Emmet: css.color.short Einstellung hinzufügen PR #116912
- Emmet: Unterstützung für mehrere Erweiterungswege hinzufügen PR #117105
- @leereilly (Lee Reilly): Punkt zur Listenelement für Konsistenz hinzugefügt PR #115375
- @manuth (Manuel Thalmann): Markdown-Rendering ohne Angabe eines Env-Parameters zulassen PR #117041
- @mdesrosiers (Martin Desrosiers): Marked auf 2.0.0 aktualisieren PR #117714 (https://github.com/microsoft/vscode/pull/115192)
- @MarcoZehe (Marco Zehe): Playwright auf v1.8.0 aktualisieren. PR #115241
- @nrayburn-tech (Nicholas Rayburn): Funktion in der Git-Erweiterung umbenennen PR #113673
- @obsgolem (Josiah Bills): Neue Option "blankLine" für Bewegungseinheiten hinzugefügt PR #115578
- @pfitzseb (Sebastian Pfitzner): Julia-Grammatik hinzufügen PR #115309
- @PathToLife (PathToLife): Feature: Shift Shift, Ctrl Ctrl, Alt Alt Keybinds (Unterstützung für Doppeldruck-Modifikatortasten) PR #115190
- @rluvaton (Raz Luvaton): fix(workbench): vergessenes Escaping im Regex hinzufügen PR #115336
- @samrg123 (Samuel Gonzalez): Problem #108301 behoben, indem URI vor der Erstellung eines MarkdownString escaped wurde. PR #112330
- @sargreal (Felix Haase): Doppelpunkt aus Git-Host in askpass-Argumenten entfernen PR #117230
- @shskwmt (Shunsuke Iwamoto)
- Fixes 114236: Hinzufügen eines Multiline-Kommentar-Regex zu unIndentedLinePattern PR #114478
- Fixes 115154: Hinzufügen von "overflow: hidden" Stil zu split-view-view PR #115345
- @susiwen8 (susiwen8)
- Fix: alwaysConsumeMouseWheel für Liste hinzufügen PR #114182
- Fix: falsches Ereignis für
onDidSaveNotebookDocumentPR #115855
- @SchoofsKelvin (Kelvin Schoofs): Problem #114473 beheben PR #114474
- @tspence (Ted Spence)
- Ermöglicht dem Issue-Service, ein Bug-Report-Fenster anzuzeigen, wenn der Remote-Extension-Host abgestürzt ist PR #116896
- WebView-Fokusprobleme beheben, die das Ausschneiden/Kopieren/Einfügen beim Öffnen von Dateien mit einer Quick Pick verhindern PR #116899
- @TacticalDan: Begrenzer für willkürliche Ereignisse von 16ms auf 4,16666 ms reduzieren (#_107016) PR #114957
- @ugultopu (Utku Gultopu): Rechtschreibfehler von "likelihood" korrigieren PR #116728
- @vagusX (vagusX): Fix: Scrollen verhindern, wenn Liste im Zone-Widget fokussiert ist PR #114912
- @Wscats (Eno Yao): Zusätzliche Typen für Funktionsparameter PR #115751
Beiträge zu language-server-protocol
- @DanTup (Danny Tuppeny): Referenz auf insertReplaceSupport-Fähigkeit korrigieren PR #1207
- @reznikmm (Maxim Reznik): Kleine Korrektur in MD-Formatierung PR #1208
Beiträge zu vscode-languageserver-node
- @xAlien95 (Stefano De Carolis): Kaputte Markdown-Link in der Dokumentation beheben PR #741
Beiträge zu vscode-emmet-helper
- @aliasliao (Liao Jinyuan): Vervollständigungen für PascalCase-Tags beim Tippen von JSX bereitstellen PR #53
- @AnuBhar (Anushka Bhargava): Korrektur für 114923 - Das HTML-figcaption-Tag sollte vorgeschlagen werden, wenn das vollständige Wort verwendet wird PR #44
- @jeanp413 (Jean Pierre)
- @johnsoncodehk (Johnson Chu): Fix: doComplete-Ergebnis kann undefiniert sein PR #51
- @lancewl (Hsuan-An Weng Lin)
- @shskwmt (Shunsuke Iwamoto): Fixes 115946(vscode): Fügt '{' zu htmlAbbreviationStartRegex hinzu PR #45
Beiträge zu vscode-html-languageservice
- @sapphi-red (翠 / green): Vorhandenes Attribut aus Autocomplete-Vorschlägen entfernen PR #99
Beiträge zu vscode-js-debug
Beiträge zu vscode-textmate
- @msftrncs (Carl Morris): Endlosschleifenerkennung verbessern PR #146
Beiträge zu vscode-vsce
- @felipecrs (Felipe Santos): verify-pat-Befehl hinzufügen PR #532