November 2020 (Version 1.52)
Update 1.52.1: Das Update behebt diese Issues.
Downloads: Windows: x64 Arm64 | Mac: Intel | Linux: deb rpm tarball Arm snap
Willkommen zur November 2020-Version von Visual Studio Code. Wie im November-Iterationsplan angekündigt, konzentrierten wir uns zwei Wochen lang auf die Verwaltung von GitHub Issues und Pull Requests, wie in unserem Issue-Grooming-Leitfaden dokumentiert. In allen unseren VS Code-Repositorys haben wir 5242 Issues geschlossen (entweder triagiert oder behoben), was noch mehr ist als bei unserer letzten Housekeeping-Iteration im Oktober 2019, als wir 4622 Issues geschlossen haben. Während wir Issues geschlossen haben, haben Sie 2937 neue Issues erstellt. Das Haupt-Repository vscode hat jetzt 2146 offene Feature-Anfragen und 884 offene Bugs. Darüber hinaus haben wir 144 Pull Requests geschlossen.
Wie jedes Jahr haben wir den Live-Tracker von Benjamin Lannon verwendet, um unseren Fortschritt zu verfolgen.

Nachdem wir uns auf die Verwaltung konzentriert haben, haben wir uns auch mit mehreren Feature-Anfragen und Community- Pull Requests beschäftigt. Dies führte zu vielen neuen Funktionen und Einstellungen, einige der wichtigsten Highlights sind:
- Zeilenumbruch im Diff-Editor – Sowohl Inline- als auch Side-by-Side-Ansichten unterstützen jetzt den Zeilenumbruch.
- Neue Extension-Bisect-Funktion – Fehlerbehebung bei Erweiterungen, die Probleme in VS Code verursachen.
- Verbesserungen am Editor für Tastenkombinationen – Erstellen Sie eine Tastenkombination über die Befehlspalette.
- Rückgängigmachen von Dateioperationen im Explorer – Rückgängigmachen oder Wiederholen von Dateioperationen im Explorer.
- Neue Git-Befehle und Einstellungen – Optimieren Sie Ihre Versionskontrollerfahrung mit neuen Funktionen.
- Verbesserungen am Vorschau-Editor – Schalten Sie Vorschau-Editoren vollständig aus und probieren Sie neue Interaktionsmodelle aus.
- Feste Tabulatorstopps bei Einrückung mit Leerzeichen – Verbesserte Erfahrung bei der Einrückung mit Leerzeichen.
- Verbesserte wortbasierte Vorschläge – Anzeigen wortbasierter Vorschläge aus anderen offenen Dateien.
- Terminal-Konfigurationsunterstützung – Ändern Sie Terminaleinstellungen über das Dropdown-Menü des Terminals.
- Neue Remote Development-Ressourcen – Sehen Sie sich das neue Video und das Lernmodul an.
Workbench
Verbesserungen am Vorschau-Editor
Wir haben mehrere Aktualisierungen vorgenommen, wie wir Vorschau-Editoren basierend auf Benutzerfeedback behandeln.
Die Einstellung workbench.editor.enablePreviewFromQuickOpen ist jetzt standardmäßig deaktiviert, sodass Editoren, die aus dem Schnellzugriff geöffnet werden, nicht mehr im Vorschau-Modus angezeigt werden.
Wenn Sie eine Code-Navigation starten (z. B. mit Gehe zu Definition), wechselt der Editor, von dem Sie starten, aus dem Vorschau-Modus und bleibt geöffnet, während der neue Editor im Vorschau-Modus ist, bis Sie weiter navigieren.

Wir haben alle unsere benutzerdefinierten Bäume (z. B. die in den Ansichten Erweiterungen oder Git verwendeten) so geändert, dass sie konsistenter wie andere integrierte Bäume (z. B. der Datei-Explorer) funktionieren. Das bedeutet, dass die folgenden Interaktionen jetzt für alle gelten:
- Doppelklick oder mittlerer Mausklick zum Öffnen im Nicht-Vorschau-Modus.
- Enter zum Öffnen im Nicht-Vorschau-Modus (Leertaste zum Öffnen im Vorschau-Modus).
Alt+Klickzum Öffnen eines Editors neben dem aktiven.
Hinweis: Wenn Sie ein Erweiterungsautor sind, der unsere benutzerdefinierte Baum-API verwendet, profitieren Sie ebenfalls von dieser Änderung. Stellen Sie sicher, dass Sie die Befehle vscode.open oder vscode.diff für TreeItem.command verwenden, um das neue Verhalten des Vorschau-Modus zu erhalten.
Ein neuer Menüpunkt, Editoren offen halten, im Überlaufmenü des Editors ermöglicht es Ihnen, Vorschau-Editoren schnell ganz auszuschalten.

Wiederherstellen früherer Sitzungsfenster
Ein neuer Wert preserve für die vorhandene Einstellung window.restoreWindows ermöglicht es Ihnen, zu erzwingen, dass jedes Fenster, das Sie vor dem Schließen von VS Code geöffnet hatten, beim Neustart von VS Code wiederhergestellt wird, auch wenn VS Code ausdrücklich aufgefordert wird, einen bestimmten Ordner oder eine Datei zu öffnen. Ein häufiges Beispiel ist das Doppelklicken auf eine Datei im Datei-Explorer Ihres Systems, um sie in VS Code zu öffnen, oder die Verwendung des Terminals zum Öffnen einer bestimmten Datei oder eines bestimmten Ordners. Ohne die Einstellung window.restoreWindows: preserve öffnet VS Code nur die angegebene Datei oder den Ordner, stellt aber keine anderen Fenster wieder her.
Aufteilen von Editorgruppen beim Ziehen und Ablegen deaktivieren
Eine neue Einstellung workbench.editor.splitOnDragAndDrop verhindert das Aufteilen von Editorgruppen beim Ziehen und Ablegen von Editoren. Es gibt auch eine Möglichkeit, dies bedingt während des Ziehen-und-Ablegen-Vorgangs zu umschalten, indem Sie die Umschalttaste (macOS) oder die Alt-Taste (Windows, Linux) gedrückt halten.
Rückgängigmachen von Dateioperationen im Explorer
Der Datei-Explorer unterstützt jetzt Rückgängigmachen und Wiederholen für alle Dateioperationen: Löschen, Umbenennen, Kopieren, Verschieben, neue Datei und neuer Ordner. Stellen Sie sicher, dass der Fokus im Datei-Explorer liegt und lösen Sie die Befehle Rückgängigmachen oder Wiederholen aus. Ihre letzte Dateioperation wird rückgängig gemacht oder wiederholt. Beachten Sie, dass wir separate Rückgängig-Stacks für den Editor und den Datei-Explorer haben und je nach Fokus wählen, welcher davon rückgängig gemacht werden soll.

Fortschritt für lang laufende Operationen im Explorer
Wir zeigen jetzt den Fortschritt im Datei-Explorer und in der Statusleiste für lang laufende Dateioperationen (länger als 500 ms) an. Es gibt auch eine anfängliche Unterstützung zum Abbrechen lang laufender Operationen. Dies sollte hilfreich sein beim Kopieren großer Ordner oder beim Herunterladen von Ressourcen von Remote-Speicherorten.

Sortierung der offenen Editoren
Es gibt eine neue Einstellung explorer.openEditors.sortOrder, um die Sortierreihenfolge in der Liste OFFENE EDITOREN zu steuern.
Die Werte sind:
editorOrder– Editoren werden in der gleichen Reihenfolge angezeigt, in der die Editor-Tabs angezeigt werden (Standard).alphabetical– Editoren werden innerhalb jeder Editor-Gruppe alphabetisch sortiert.
Die alphabetische Sortierung hat nur Auswirkungen auf die Ansicht „Offene Editoren“ – sie „verschiebt“ keine Tabs.
Dies kann hilfreich sein, wenn Sie viele Dateien geöffnet haben und zusammengehörige Dateien zusammenführen möchten (z. B. hello.component.js und hello.component.html).

Barrierefreiheitskontrolle für Fortschritt
Die Anzeige des Fortschritts der Benutzeroberfläche wurde barrierefreier gestaltet. VS Code setzt die entsprechenden ARIA-Rollen, damit Screenreader den Fortschritt für alle lang laufenden Operationen in VS Code melden können. Die meisten Screenreader kündigen den Fortschritt standardmäßig nur an, wenn er länger als 10 Sekunden dauert.
Änderungen der Quellcodeverwaltung zeigen ihren übergeordneten Ordnerpfad an
Diff-Editoren, die aus der Quellcodeverwaltungsansicht geöffnet werden, zeigen nun ihren Dateipfad an (wenn Tabs deaktiviert sind). Zuvor wurde nur der Dateiname angezeigt, jetzt erscheint der übergeordnete Ordner, wenn sich die vorherigen und nachfolgenden Dateien im selben Ordner befinden.

Neuer Proxy-Login-Dialog standardmäßig aktiviert
Unser neuer Proxy-Login-Dialog ist jetzt standardmäßig aktiviert. Weitere Details finden Sie in unseren vergangenen Versionshinweisen. Die Einstellung window.enableExperimentalProxyLoginDialog kann verwendet werden, um den alten Dialog zu aktivieren, aber wir werden diese Unterstützung in naher Zukunft entfernen. Wenn Sie ein Problem mit dem neuen Login-Dialog feststellen, teilen Sie uns dies bitte mit, indem Sie ein Issue einreichen.
Verbesserte Handhabung der Terminalumgebung (Linux, macOS)
Wenn Sie VS Code unter Linux oder macOS zum ersten Mal über das Dock oder einen Launcher (und nicht über das Terminal) starten, startet VS Code einen Hintergrundprozess, um Ihre Shell-Umgebung (wie in .bashrc oder .zshrc definiert oder geändert) aufzulösen. Alle erkannten Umgebungsvariablen werden dann von VS Code verwendet, sodass es keinen Unterschied macht, ob Sie vom Terminal oder vom Dock/Launcher aus starten, was wichtig für das Debuggen oder die Ausführung von Aufgaben ist.
Leider öffnet sich VS Code erst, nachdem dieser Hintergrundprozess ausgeführt wurde. Um den Start nicht zu lange zu blockieren, beginnt VS Code nach 10 Sekunden mit dem Öffnen. In diesem Fall informiert VS Code Sie nun darüber, dass die Shell-Umgebung nicht aufgelöst werden konnte, und bietet einen Link zum Weiterlesen an.

Ebenso zeigt VS Code nach drei Sekunden eine Warnung an, die darauf hinweist, dass der Start von VS Code durch die Auflösung Ihrer Shell-Umgebung blockiert wurde.

Wir arbeiten aktiv daran, unsere Strategie zu ändern, um VS Code nicht am Start zu hindern, während wir die Shell-Umgebung im Hintergrund auflösen, aber dies wird erst in zukünftigen Meilensteinen möglich sein.
Weitere erwähnenswerte Änderungen in diesem Bereich sind:
- Sie können nun Umgebungsvariablen aus einem Terminal definieren und ändern, bevor Sie ein zweites VS Code-Fenster starten, und diese überschreiben ordnungsgemäß die Variablen vom ersten Start, was effektiv pro Fenster Umgebungsvariablen ermöglicht (dies ermöglicht es Ihnen beispielsweise, die Node.js-Version über ein Tool wie
nvmpro Fenster vor dem Start zu ändern). - Umgebungsvariablen, die von einem Terminal vor dem Start eines zweiten VS Code-Fensters gesetzt werden, bleiben nun erhalten, auch wenn Sie Ordner in diesem zweiten Fenster wechseln.
Verbesserte Überlaufanzeige der Benutzeroberfläche
Wenn nicht genügend Platz vorhanden ist, um alle Ansichten in der Benutzeroberfläche unterzubringen, zeigt VS Code nun Scrollbalken an, um den Inhalt zu durchlaufen und Ihnen den Zugriff auf alles zu ermöglichen. Dies gilt für mehrere Bereiche der Benutzeroberfläche, wie die Seitenleiste, das Editor-Raster und mehr.

Randfarbe des Sashes im Hover-Zustand
Sie können nun eine Rand-Hover-Farbe für Sashes (sash.hoverBorder) in der gesamten Benutzeroberfläche anpassen.

Baum: Erweiterungsmodus
Eine neue Einstellung workbench.tree.expandMode ermöglicht es Ihnen zu steuern, wie Ordner in Bäumen erweitert werden: per Einzel- oder Doppelklick.
macOS Big Sur Aktualisierungen
Aufgrund eines Electron 9-Problems wird VS Code bei Auswahl von Neustart zum Aktualisieren nicht automatisch neu gestartet, sondern einfach beendet. Bis zur nächsten VS Code-Version, die Electron 11 enthalten sollte, müssen Sie VS Code nach einem solchen Vorfall manuell neu starten. Lesen Sie mehr in Issue #109728.
Quellcodeverwaltung
Zustand der Quellcodeverwaltungsansicht beibehalten
Der Zustand der Quellcodeverwaltungsansicht wird nun über Sitzungen hinweg beibehalten. Eingeklappte Baumknoten bleiben auch nach dem Beenden und Neustarten von VS Code eingeklappt.
Aktion am Rand der Quellcodeverwaltung
Die neue Einstellung scm.diffDecorationsGutterAction ermöglicht es Ihnen zu steuern, was passiert, wenn Sie die Quellcodeverwaltungs-Randdekorationen auf der linken Seite des Editors auswählen. Die möglichen Werte sind:
diff– Öffnen Sie die Inline-Diff-Peek-Ansicht beim Klicken (Standard).none– Deaktiviert jede Aktion.
Git: Neue Befehle
Mehrere neue Git-Befehle wurden der Befehlspalette hinzugefügt:
- Git: Cherry Pick... – Wenden Sie einen bestimmten Commit auf Ihren Branch an.
- Git: Umbenennen – Führen Sie eine Git-Umbenennung der aktiven Datei durch.
- Git: Tags pushen – Pushen Sie alle lokalen Tags zum Remote-Repository.
- Git: Checkout zu (Detached)... – Führen Sie einen Checkout im Detached-Modus durch.
Git: Neue Einstellungen
Zusätzlich wurden neue Git-Einstellungen hinzugefügt:
git.pruneOnFetch– Bewirkt, dass VS Codegit fetch --pruneausführt, wenn Remote-Refs abgerufen werden.git.ignoreSubmodules– Sie können nun sicherstellen, dass VS Code Änderungen in Submodul-Repositorys ignoriert, was in großen Monorepos nützlich ist.git.openAfterClone– Steuert, ob und wie ein Ordner nach dem Klonen eines Git-Repositorys geöffnet wird: im aktuellen Fenster, in einem neuen Fenster, wenn kein Ordner geöffnet ist, und durch Aufforderung des Benutzers.git.useCommitInputAsStashMessage– Ermöglicht VS Code, die Commit-Nachricht im Quellcodeverwaltungs-Eingabefeld als Stash-Nachricht zu verwenden, wenn Git: Stash ausgeführt wird.git.followTagsWhenSync– Verfolgt Tags beim Ausführen von Git: Sync.git.checkoutType– Steuert, welche Refs angezeigt werden und in welcher Reihenfolge, wenn Sie den Befehl Git: Checkout... ausführen.
Git: Aufforderung zum Speichern von Dateien vor dem Stashen
VS Code wird Sie nun auffordern, ungespeicherte Dateien zu speichern, wenn Sie versuchen, Änderungen zu stashen.
Git: Bessere Differenz für gelöschte Datei-Merge-Konflikte
Gelöschte Datei-Merge-Konflikte haben nun eine verbesserte Diff-Erfahrung, die die tatsächliche Änderung in der Datei auf dem gegenüberliegenden Branch zur Löschung anzeigt.
Git: Fetch bei Remote-Hinzufügung
VS Code führt nun git fetch unmittelbar nach dem Hinzufügen eines Remotes aus und holt alle Refs von diesem Remote ab.
Git: Checkout im Detached-Modus
Es ist nun möglich, Refs im Detached-Modus von VS Code aus auszuchecken.

Git: Ausgabe des Befehls bei Fehler anzeigen
Wenn ein Git-Befehl einen Fehler auslöst, können Sie nun die gesamte Fehlermeldung mit der neuen Option Ausgabe des Befehls anzeigen sehen.

Git: Neue Optionen für den Befehl git.api.getRemoteSources
Die Optionen des Git-API-Befehls git.api.getRemoteSources unterstützen nun eine optionale Eigenschaft branch?: boolean, die Git den Benutzer auffordert, einen Branch aus einer Remote-Quelle auszuwählen, sofern dies vom Anbieter der Remote-Quelle unterstützt wird.
Zusätzlich unterstützt der Befehl nun eine Option providerName?: string, die es dem Aufrufer ermöglicht, die Auswahl der Remote-Quelle durch den Benutzer zu umgehen und direkt einen bestimmten Anbieter zu verwenden.
Debugging
Haltepunkte-Ansicht: Bedingungen für Ausnahmepunkte
VS Code unterstützt nun die Bearbeitung von Bedingungen für Ausnahmepunkte über die Haltepunkte-Ansicht mit der Kontextmenüaktion Bedingung bearbeiten.
Derzeit hat nur die Mock Debug-Erweiterung (gefälschte) Ausnahmepunkt-Bedingungsunterstützung, aber bald werden auch andere Debugging-Erweiterungen folgen – wie der JavaScript-Debugger.


Barrierefreiheit des Ausnahmebereichs
Der Ausnahmeinformationsbereich im Editor wurde barrierefreier gestaltet. Während des Debuggens verschiebt VS Code den Fokus automatisch in den Ausnahmebereich, sobald eine Ausnahme auftritt. Dies ermöglicht Screenreadern, die Ausnahme-Details und den Stack-Frame zu melden. Es ist nun auch möglich, den Ausnahmebereich mit der Esc-Taste oder der Schaltfläche X oben rechts im Ausnahmebereich zu schließen.
Es ist nun auch möglich, den Ausnahmebereich mit der Esc-Taste oder der X-Schaltfläche oben rechts im Ausnahmebereich zu schließen.
UI-Verbesserungen
Debuggte Zeile im Übersichtslineal angezeigt
Die aktuell debuggte Zeile wird nun im Übersichtslineal auf der rechten Seite des Editors angezeigt. Für diese Dekoration verwenden wir die bereits vorhandene Farbe editor.stackFrameHighlightBackground. Zusätzlich zeigt VS Code die aktuell fokussierte debuggte Zeile im Übersichtslineal mit der Farbe editor.focusedStackFrameHighlightBackground an (fokussierte debuggte Zeilen sind Nicht-Top-Stack-Frame-Positionen, die manuell in der Call Stack-Ansicht ausgewählt werden).
Verbesserungen bei der automatischen Debug-Konfiguration
Zuvor haben wir eine Funktion eingeführt, damit Debugging-Erweiterungen das aktuelle Projekt analysieren und automatisch Debug-Konfigurationen anbieten können. Diese Debug-Konfigurationen werden dynamisch erstellt und erscheinen daher nicht in der Konfigurationsdatei launch.json. In diesem Meilenstein bewahren wir auch kürzlich verwendete automatische Debug-Konfigurationen über VS Code-Neustarts (und -Neuladen) hinweg auf, um die gesamte Erfahrung reibungsloser zu gestalten. Falls eine automatische Debug-Konfiguration nach einem Neustart nicht mehr gültig ist, wird VS Code Sie auffordern, eine neue automatische Konfiguration vom selben Anbieter auszuwählen, sobald das Debugging gestartet wird.
Debug-Hover: Hilfetext/-tipp unten zum Umschalten auf normalen Hover
Unten im Debug-Hover befindet sich nun ein Hilfetext, um den Alt-Switch zum Editor-Sprach-Hover während des Debuggens besser auffindbar zu machen. Zur Erinnerung: Wenn Sie debuggen, hat der Debug-Hover Vorrang vor dem Sprach-Hover, was es unmöglich macht, den Sprach-Hover anzuzeigen. Sie können vom Debug-Hover zum Sprach-Hover zurückwechseln, indem Sie die Modifikatortaste Alt gedrückt halten. Solange Alt gedrückt ist, wird der Sprach-Hover anstelle des Debug-Hovvers angezeigt. Dies erleichtert das Lesen von Hovers wie Javadoc-Beschreibungen während des Debuggens erheblich.

Debug-Konsole: identische Zeilen zusammenklappen
Die Debug-Konsole klappt nun identische Ausgaben zusammen und zeigt die Anzahl der Vorkommen an. Diese Funktion erleichtert das Erfassen wiederkehrender Programmausgaben erheblich.

Neue Variablen für launch.json und tasks.json
Die folgenden neuen Variablen wurden eingeführt:
${fileWorkspaceFolder}– Wird zum Workspace-Ordnerpfad der im aktiven VS Code-Editor geöffneten Datei aufgelöst.${fileDirnameBasename}– Wird zum Namen des Ordners aufgelöst, in dem sich die im aktiven VS Code-Editor geöffnete Datei befindet.${pathSeparator}– Wird zum vom Betriebssystem verwendeten Zeichen aufgelöst, das Komponenten in Dateipfaden trennt.
serverReadyAction: andere Debug-Konfiguration nach Name starten
Die serverReadyAction konnte bisher einen Browser oder Chrome-Debugging starten, indem eine URL abgeglichen wurde. Diese Version fügt eine neue Option hinzu, um eine andere beliebige Konfiguration nach Namen zu starten. Sie können beispielsweise in Ihrer launch.json angeben:
"serverReadyAction": {
"action": "startDebugging",
"pattern": "listening on port ([0-9]+)",
"name": "Launch Browser"
}
Dies ermöglicht es Ihnen, zusätzliche Optionen in Standard-Chrome-Debugging-Konfigurationen zu übergeben und andere Debugger mit der serverReadyAction zu verwenden.
Automatisches Anhängen vorübergehend deaktivieren
Automatisches Anhängen kann nun vorübergehend über den Eintrag Automatisches Anhängen in der Statusleiste oder über den Befehl Debug: Automatisches Anhängen umschalten deaktiviert werden. Das Deaktivieren des automatischen Anhängens auf diese Weise gilt nur für das aktuelle Fenster und erfordert kein Neustarten Ihres Terminals. Es kann auf die gleiche Weise wieder aktiviert werden.

JavaScript-Debugger
Eine vollständige Liste der Änderungen finden Sie im Changelog des Debuggers.
Breakpoint Diagnostic Tool
Es gibt ein neues Tool, das dazu dient, Probleme bei der Erstellung oder Konfiguration zu beheben, die das Debuggen verhindern oder das Binden von Haltepunkten verhindern. Um es zu verwenden, führen Sie den Befehl Debug: Diagnostische Informationen für die aktuelle Sitzung erstellen aus, während eine Debug-Sitzung läuft. In einer späteren VS Code-Version wird ein Hinweis auf dieses Diagnosetool automatisch angezeigt, wenn es angebracht ist.
Einstellung für Standard-Ausführbare-Dateipfade
Es gibt eine Benutzereinstellung, debug.javascript.defaultRuntimeExecutable, mit der Sie die Standardpfade von Node.js- oder Chrome-Binärdateien angeben können. Zum Beispiel verwendet { "pwa-chrome": "dev" } den "dev"-Build von Chrome, wann immer Sie mit Chrome-Typ-Konfigurationen debuggen.
Beachten Sie, dass Sie für die Verwendung dieser neuen Option sicherstellen müssen, dass Ihre Startkonfiguration pwa-node anstelle von node oder pwa-chrome anstelle von Chrome ist.
Aufgaben
npm
Die Einstellung npm.packageManager der integrierten npm-Erweiterung hat einen neuen Standardwert: auto. Der Wert auto führt dazu, dass der Paketmanager automatisch anhand der .lock-Dateien und des Paketmanagers, der zum Installieren von Abhängigkeiten im Workspace verwendet wurde, erkannt wird. Wenn mehrere .lock-Dateien erkannt werden, wird dennoch ein Paketmanager ausgewählt, und eine Warnung zeigt an, dass ein Konflikt aufgetreten ist.
Kürzliche Aufgaben entfernen
Die Aufgaben-Schnellauswahl hatte schon immer einen Abschnitt Kürzliche Aufgaben ganz oben. Da dies ein wertvoller Ort ist, können Sie jetzt Ihre kürzlichen Aufgaben besser verwalten, indem Sie sie mit der Schaltfläche Zuletzt verwendete Aufgabe entfernen auf der rechten Seite aus der Schnellauswahl entfernen.

Erweiterungen
In diesem Meilenstein haben wir eine Reihe von Verbesserungen an der Erweiterungsansicht und den Seiten mit Erweiterungsdetails vorgenommen.
Erweiterungsansichten werden nun automatisch aktualisiert. Zum Beispiel wird eine Erweiterung sofort nach der Installation in der Liste Erweiterungen: Installiert angezeigt. Sie können die Ansicht auch manuell mit der Schaltfläche zum Aktualisieren in der Titelleiste aktualisieren.

Thema: GitHub Light
Eine Detailseite einer Erweiterung zeigt nun ein Kontextmenü mit allen Aktionen für eine Erweiterung, wie in der Erweiterungsansicht.

Thema: GitHub Light
Die Registerkarte Feature-Beiträge auf der Detailseite einer Erweiterung zeigt nun die Aktivierungsereignisse für eine Erweiterung an.

Thema: GitHub Light
Sie können nun eine Erweiterung und ihre Abhängigkeiten gemeinsam deaktivieren. Es gibt eine Benachrichtigung mit einer Aktion Alle deaktivieren, wenn Sie versuchen, eine Erweiterung mit Abhängigkeiten zu deaktivieren.

Thema: GitHub Light
Sie können eine Erweiterung zu den Workspace-Empfehlungen hinzufügen oder daraus entfernen, indem Sie die Aktionen Zu Workspace-Empfehlungen hinzufügen oder Aus Workspace-Empfehlungen entfernen verwenden, die im Kontextmenü einer Erweiterung in der Erweiterungsansicht verfügbar sind.

Thema: GitHub Light
Erweiterungsempfehlungsbenachrichtigungen zeigen nun die Dropdown-Aktion "Installieren" an, wenn die Einstellungen-Synchronisation aktiviert ist, genau wie in der Erweiterungsansicht.

Wir haben die Konfiguration von Erweiterungsempfehlungen vereinfacht, indem wir die Einstellung extensions.showRecommendationsOnlyOnDemand deprecate. Sie können nun die Einstellung extensions.ignoreRecommendations verwenden, um Benachrichtigungen über Erweiterungsempfehlungen zu steuern, und die Sichtbarkeitsaktionen der Erweiterungsansicht, um die Empfehlungen standardmäßig auszublenden.
Fehlerbehebung: Extension Bisect
Die wahre Stärke von VS Code sind seine Erweiterungen: Thema-Erweiterungen fügen schöne Farben und Symbole hinzu, Sprach-Erweiterungen bieten IntelliSense und ermöglichen Code-Navigation, Debugger-Erweiterungen ermöglichen es Ihnen, in Fehler einzutauchen. Manchmal ist es nicht offensichtlich, ob ein Problem von einer Erweiterung verursacht wird und wenn ja, von welcher. Bis heute mussten Sie alle Erweiterungen deaktivieren und dann einzeln wieder aktivieren, um eine problematische Erweiterung zu finden. Dieser Prozess wird nun mit einer neuen Funktion namens Extension Bisect erleichtert. Sie verwendet den binären Suchalgorithmus, um schnell eine problematische Erweiterung zu identifizieren. Im Wesentlichen deaktiviert sie die Hälfte Ihrer Erweiterungen und bittet Sie, das aufgetretene Problem zu überprüfen. Wenn das Problem behoben ist, muss sich die fehlerhafte Erweiterung in der Liste der deaktivierten Erweiterungen befunden haben, nicht in der Liste der aktuell aktivierten Erweiterungen. Dieser Vorgang wird wiederholt, bis nur noch eine einzige Erweiterung übrig ist.
Sie können Extension Bisect über den Befehl Hilfe: Extension Bisect starten aus der Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) starten. Es führt Sie dann durch den Prozess des wiederholten Deaktivierens und Reaktivierens von Erweiterungen. Nach jedem Neuladen werden Sie aufgefordert zu bestätigen, ob das Problem weiterhin besteht.


Extension Bisect wird Sie wiederholt fragen, ob das Problem auftritt oder nicht. Sie können jederzeit über Bisect stoppen abbrechen, und wenn Sie die Bisect-Benachrichtigung schließen, können Sie über den Befehl Hilfe: Extension Bisect fortsetzen fortfahren.

Wenn der Extension Bisect-Prozess abgeschlossen ist, werden Sie aufgefordert, ein Issue gegen die Erweiterung einzureichen. Sie können die Erweiterung auch von hier aus deaktiviert lassen.
Editor für Tastenkombinationen
Wir haben in diesem Meilenstein mehrere Verbesserungen am Editor für Tastenkombinationen vorgenommen.
Sie können nun eine Tastenkombination für einen Befehl über die Befehlspalette konfigurieren, indem Sie auf die Zahnradschaltfläche Tastenkombination konfigurieren auf der rechten Seite klicken.

Thema: GitHub Light
Sie können dem Editor für Tastenkombinationen mehrere Tastenkombinationen zu einem Befehl hinzufügen.

Thema: GitHub Light
Sie können nun auch nach einer bestimmten Spalte des Editors für Tastenkombinationen filtern
@command:commandId– Filtert nach Befehls-ID. Zum Beispiel@command:workbench.action.showCommands.@keybinding:keybinding– Filtert nach Tastenkombination. Zum Beispiel@keybinding:f1.@source:user|default|extension– Filtert nach Quelle.
Sie können die Suchhistorie im Editor für Tastenkombinationen mit den Pfeiltasten Nach oben und Nach unten navigieren.

IntelliSense
Wortbasierte Vorschläge aus anderen Dokumenten
VS Code unterstützt einfache wortbasierte Vorschläge. Diese sind nützlich, wenn kein Sprachdienst verfügbar ist oder wenn ein Sprachdienst keine Ergebnisse liefern kann, z. B. beim Tippen in Kommentaren. Mit dieser Version kann VS Code nun so konfiguriert werden, dass Wörter aus anderen geöffneten Dateien vorgeschlagen werden. Verwenden Sie die Einstellung editor.wordBasedSuggestionsMode mit allDocuments, um Wörter aus allen geöffneten Dateien vorzuschlagen, verwenden Sie matchingDocuments, um Wörter aus geöffneten Dateien derselben Sprache vorzuschlagen (Standard), und verwenden Sie currentDocument, um nur Wörter aus der aktuellen Datei vorzuschlagen.

Inline-Details ausblenden
Vorschläge in VS Code haben Details, die in einem separaten Flyout neben dem Vorschlag angezeigt werden. Die Detailansicht kann geschlossen werden, und dann wird eine Vorschau der Details inline mit den Vorschlägen angezeigt. Das Anzeigen der Details inline mit dem Vorschlag kann zu viel Platz beanspruchen und kann daher nun über eine neue boolesche Einstellung, editor.suggest.showInlineDetails, deaktiviert werden.
TypeScript-Vorschläge zeigen Pfad an
TypeScript kann Vervollständigungen liefern, die auch eine Importanweisung hinzufügen. Wenn es jedoch mehrere Symbole mit demselben Namen gibt, ist es schwierig, die richtige Vervollständigung auszuwählen. Diese Version macht dies einfacher, da die Pfade von Auto-Import-Vervollständigungen mit dem Label angezeigt werden.

CodeLens anpassen
Sie können nun die Schriftart und -größe von CodeLens-Elementen konfigurieren.

Im obigen Screenshot sind Schriftart und Größe mit diesen beiden Einstellungen angepasst:
"editor.codeLensFontFamily": "Comic Sans MS",
"editor.codeLensFontSize": 12,
Editor
Feste Tabulatorstopps beim Einrücken mit Leerzeichen
Wenn Sie Ihren Code bevorzugt mit Leerzeichen einrücken, gibt es eine neue Einstellung namens editor.stickyTabStops, die VS Code dazu bringt, Cursorbewegungen in führenden Leerzeichen ähnlich wie Tabs zu behandeln.

Befehl "Wort löschen"
Die bestehenden Aktionen zum Löschen von Wörtern löschen entweder vom aktuellen Cursor-Position bis zum Anfang des Wortes (z. B. Strg+Rücktaste unter Windows/Linux) oder bis zum Ende des Wortes (Strg+Entf unter Windows/Linux). Es gibt nun einen neuen Befehl, der das gesamte Wort unter dem Cursor löscht, genannt Wort löschen.
Zeilenumbruch im Diff-Editor
Sowohl die Side-by-Side- als auch die Inline-Ansicht des Diff-Editors unterstützen jetzt den Zeilenumbruch. Im Allgemeinen respektiert der Diff-Editor die Editor-Einstellungen für den Zeilenumbruch. Bei Markdown-Dateien, die standardmäßig umgebrochen werden, werden diese auch im Diff-Editor umgebrochen.

Wenn Sie möchten, dass der Diff-Editor entweder nie oder immer umgebrochen wird, können Sie die neue Einstellung diffEditor.wordWrap verwenden und sie auf "on" oder "off" konfigurieren (der Standardwert ist "inherit", was bedeutet, dass der Diff-Editor die Einstellungen des Editors für den Zeilenumbruch erbt).
Snippets
Erweiterungs-Snippet ausblenden
Von Erweiterungen beigesteuerte Snippets können nun aus IntelliSense ausgeblendet werden. Diese Funktion ist über die Einfügen-Snippet-Auswahl verfügbar, wenn Sie Snippet einfügen ausführen. Suchen Sie ein Erweiterungs-Snippet, das Sie ausblenden möchten, und wählen Sie das Augen-Symbol rechts aus.

Ausgeblendete Snippets werden nicht in IntelliSense angezeigt, können aber weiterhin über Snippet einfügen verwendet werden. Schließlich werden bei der Verwendung von Einstellungen-Synchronisation die Einstellungen für ausgeblendete Snippets über Ihre Geräte hinweg synchronisiert.
Snippets ohne Präfix
Beim Erstellen von Snippets können Sie nun die Präfix-Eigenschaft weglassen. Snippets ohne Präfix werden nicht in IntelliSense angezeigt, können aber über Snippet einfügen verwendet werden.
Integriertes Terminal
Terminal-Konfigurationsunterstützung
Sie können nun Terminaleinstellungen ändern, indem Sie Terminaleinstellungen konfigurieren im Dropdown-Menü des Terminals auswählen.

Verwaltung von Tastenkombinationen
Standardmäßig werden Tastenkombinationen wie in der Einstellung terminal.integrated.commandsToSkipShell angegeben an das Workbench und nicht an das Terminal gesendet. Eine neue Benachrichtigung informiert den Benutzer, wenn er eine Tastenkombination eingegeben hat, die einem dieser Befehle entspricht, und bietet die Möglichkeit, die relevanten Einstellungen zu konfigurieren.
Um die meisten Tastenkombinationen an das Terminal und nicht an das Workbench zu senden, können Sie terminal.integrated.sendKeybindingsToShell setzen.

Sprachen
Markdown Inline Smart Select
Auswahl in Markdown-Dokumenten mit den folgenden Befehlen erweitern und verkleinern
- Erweitern: ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
- Verkleinern: ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)
Die Auswahl gilt für kursive Texte, Fettdruck, Inline-Codeblöcke und Links.

TypeScript 4.1
Diese Version von VS Code enthält TypeScript 4.1.2. Dieses wichtige TypeScript-Update bringt Unterstützung für eine Reihe neuer Sprachfeatures - darunter Template Literal Types und Unterstützung für die Factories von [React 17 - sowie verbesserte Sprachwerkzeuge für JavaScript und TypeScript. Wie immer enthält es auch eine Reihe von Fehlerkorrekturen.
Sie können mehr über TypeScript 4.1 im TypeScript Blog lesen.
Initiale Unterstützung für JSDoc @see-Tags
JSDoc @see-Tags ermöglichen es Ihnen, in Ihren JSDoc-Kommentaren auf andere Funktionen und Klassen zu verweisen. Das folgende Beispiel zeigt die Funktion crash, die auf die Klasse WrappedError aus einer anderen Datei verweist.
// @filename: somewhere.ts
export class WrappedError extends Error { ... }
// @filename: ace.ts
import { WrappedError } from './somewhere'
/**
* @see {WrappedError}
*/
function crash(kind) {
throw new WrappedError(kind);
}
VS Code wird nun grundlegende @see-Referenzen bei Umbenennungen einbeziehen. Sie können auch Zu Definition gehen für den Inhalt eines @see-Tags ausführen, und @see-Tags werden auch in der Liste der Referenzen angezeigt.
Wir planen, die Unterstützung für @see-Tags in zukünftigen Versionen weiter zu verbessern.
Neue Einstellungen für IntelliSense-Verhalten und Typüberprüfung
Es gibt zwei neue Einstellungen, die das IntelliSense- und Typüberprüfungsverhalten in JavaScript- und TypeScript-Dateien steuern, die nicht Teil eines expliziten tsconfig- oder jsconfig-Projekts sind.
-
Die Einstellung
js/ts.implicitProjectConfig.strictNullChecksaktiviert strikte Null-Prüfungen. Sie ist standardmäßigfalse.Wenn Sie in TypeScript arbeiten, möchten Sie auf jeden Fall strikte Null-Prüfungen aktivieren, da diese viele häufige Programmierfehler aufdecken können.
Strikte Null-Prüfungen sind auch bei der Arbeit mit JavaScript hilfreich. Wenn strikte Null-Prüfungen aktiviert sind, zeigen Hover- und IntelliSense-Informationen an, welche Typen
undefinedundnullsein können. Wenn Sie die Typüberprüfung in Ihrem JavaScript aktivieren, kann VS Code auch strikte Null-Prüfungen verwenden, um einige häufige Programmierfehler aufzudecken. -
Die Einstellung
js/ts.implicitProjectConfig.strictFunctionTypesaktiviert strikte Funktionstypen. Sie ist standardmäßigtrue.Strikte Funktionstypen sind schwieriger zu erklären, verbessern aber im Allgemeinen IntelliSense und können einige Programmierfehler aufdecken.
Beachten Sie, dass diese Einstellungen beide überschrieben werden, wenn eine Datei Teil eines jsconfig- oder tsconfig-Projekts ist.
Umbenennung anderer impliziter JS/TS-Projekteinstellungen
Die anderen impliziten Projekteinstellungen für JavaScript und TypeScript wurden umbenannt, um sie genauer zu machen.
javascript.implicitProjectConfig.checkJs->js/ts.implicitProjectConfig.checkJsjavascript.implicitProjectConfig.experimentalDecorators->js/ts.implicitProjectConfig.experimentalDecorators
Diese Einstellungen wurden umbenannt, da sie für JavaScript- und TypeScript-Dateien gelten, die nicht Teil eines jsconfig- oder tsconfig-Projekts sind. Die bisherigen Einstellungsnamen deuteten darauf hin, dass sie nur für JavaScript-Dateien gelten.
HTML
Neue Formatierungseinstellungen
Die HTML-Erweiterung verwendet JSBeautify als Formatierer. Das Update auf die neueste Version von JSBeautify (1.13) bringt einige neue Formatierungseinstellungen.
html.format.wrapAttributesIndentSize: Ausrichtunggröße bei Verwendung vonforce alignedundaligned multipleinhtml.format.wrapAttributesodernullzur Verwendung der Standard-Einrückungsgröße.html.format.templating: Berücksichtigt Django-, ERB-, Handlebars- und PHP-Vorlagensprachen-Tags.html.format.unformattedContentDelimiter: Hält Textinhalte zwischen dieser Zeichenkette zusammen.
Die letzte Einstellung ermöglicht es Ihnen, ein Tag festzulegen, um Bereiche zu markieren, die nicht formatiert werden sollen.
"html.format.unformattedContentDelimiter": "<!-- DoNotFormat -->"

Neuer Einstellungsname für onTypeRename
Die Funktion On Type Rename zum Bearbeiten eines Tags, wenn sein passender schließender Tag geändert wird, heißt jetzt Linked Editing. Der Befehl zum Aktivieren von Linked Editing ist Start Linked Editing (⇧⌘F2 (Windows, Linux Ctrl+Shift+F2)) und Escape deaktiviert den Linked Editing-Modus.
Die Einstellung zur Aktivierung ist jetzt
"editor.linkedEditing": true
Beiträge zu Erweiterungen
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.
Feature-Highlights in 1.52 sind unter anderem
- Automatische Portweiterleitung auf Linux-Remotes.
- Neuer Befehl zur lokalen Installation von Remote-Erweiterungen.
- Sie können nun einen Branch auswählen, wenn Sie ein Repository in einem Container öffnen.
- Leistungsverbesserungen beim Serverstart durch Hintergrundinstallation von Erweiterungen.
Sie können sich in den Remote Development Release Notes über neue Erweiterungsfeatures und Fehlerkorrekturen informieren.
Notebooks
Das VS Code-Team arbeitet weiterhin an der nativen Unterstützung für Notebooks und der Verbesserung seiner UX und Leistung.
Verbesserte Darstellung großer Textausgaben
Der native Notebook-Editor kürzt die Ausgabe nun, wenn ihr Inhalt zu groß ist, um sicherzustellen, dass die Benutzeroberfläche immer reaktionsschnell bleibt. Sie können den vollständigen Rohinhalt der Ausgabe immer noch in einem Texteditor öffnen.

Erweiterungs-Authoring
File Decoration API
Die FileDecorationProvider API ist nun final und kann von jeder Erweiterung verwendet werden. Mit dieser API können Umgebungsdaten zu Dateien hinzugefügt werden, für die SCM- und Fehlerdekorationen, die im Explorer angezeigt werden, wird diese API verwendet.
Rückgängigmachen von Ressourcenänderungen
Explorer-Operationen wie Datei erstellen, Datei umbenennen oder Datei löschen lösen Ereignisse aus, die eine Teilnahme ermöglichen, z.B. onWillCreateFiles, onWillRenameFiles oder onWillDeleteFiles. Diese Version fügt Unterstützung für das Rückgängigmachen solcher Explorer-Operationen hinzu und Sie sollten wissen, dass die oben genannten Ereignisse beim Rückgängigmachen einer Operation nicht ausgelöst werden.
Neue Theme-Farben
statusBarItem.errorBackground: Hintergrundfarbe für Fehlereinträge in der Statusleiste. Fehlereinträge heben sich von anderen Statusleisteneinträgen ab, um Fehlerbedingungen anzuzeigen.statusBarItem.errorForeground: Vordergrundfarbe für Fehlereinträge in der Statusleiste. Fehlereinträge heben sich von anderen Statusleisteneinträgen ab, um Fehlerbedingungen anzuzeigen.
Fehler-Hintergrundfarben
Theme-Autoren können nun neue Theme-Farben für Fehler im Editor nutzen. Editorfehler, Warnungen und Informationen können nun über
editorError.backgroundeditorWarning.backgroundeditorInfo.background

Aktualisierte Codicons
Wir haben die folgenden neuen Symbole zu unserer Codicon-Bibliothek hinzugefügt
check-allcircle-large-filledcircle-large-outlinepass-filledpinned-dirty
![]()
Unterstützung für Codicons für Ansichtscontainer & Ansichten
Sie können nun Codicons als Icons für Ansichtscontainer und Ansichten verwenden. Beispiel:
"views": {
"explorer": [
{
"id": "npm",
"name": "NPM Scripts",
"icon": "$(code)",
"visibility": "hidden"
}
]
}
Siehe die Icon-Liste für eine Liste verfügbarer Icons.
Linked Editing Range Provider
Was früher als OnTypeRenameProvider bekannt war, ist jetzt eine öffentliche API als LinkedEditingRangeProvider.
Für eine gegebene Position in einem Dokument verknüpft ein LinkedEditingRangeProvider Bereiche mit demselben Inhalt. Eine Änderung an einem der Bereiche kann auf alle anderen Bereiche angewendet werden.
Dies ist beispielsweise in HTML zu sehen. Beim Bearbeiten des Namens eines öffnenden Tags wird auch der schließende Tag automatisch aktualisiert.
FoldingRangeProvider.onDidChangeFoldingRanges
FoldingRangeProvider.onDidChangeFoldingRanges wurde zu einer öffentlichen API gemacht. Es ist ein optionales Ereignis, um zu signalisieren, dass sich die Faltungsbereiche eines Anbieters geändert haben.
Öffnen des Editors für Tastenkombinationen mit Abfragefilter
Erweiterungen können nun Abfragetext übergeben, wenn sie den Editor für Tastenkombinationen mit dem Befehl workbench.action.openGlobalKeybindings öffnen.
vscode.commands.executeCommand('workbench.action.openGlobalKeybindings', 'query');
fs.isWritableFileSystem
Die neue API fs.isWritableFileSystem ermöglicht es Ihnen zu prüfen, ob ein bestimmtes Dateisystem Schreibvorgänge unterstützt. Zum Beispiel, um zu prüfen, ob ein Dokument mit der URL example:/path/to/file auf einem beschreibbaren Dateisystem liegt.
switch (vscode.fs.isWritableFileSystem('example')) {
case true:
// The `example` filesystem supports writing.
// Keep in mind the permissions or other issues may still prevent
// a file from being written.
break;
case false:
// The `example` filesystem does not support writing (it is readonly).
break;
case undefined:
// VS Code does not know about the `example` filesystem
break;
}
Benutzerdefinierte Editoren können fs.isWritableFileSystem verwenden, um zu bestimmen, ob sie eine schreibgeschützte Benutzeroberfläche anzeigen.
Markdown Tree Tooltip API
Die API für die Verwendung von Markdown für tooltip auf TreeItem ist nun final. Sie können den tooltip auf eine Markdown-Zeichenkette setzen, wenn Sie das TreeItem erstellen, oder, wenn Ihr Markdown zusätzliche Zeit zur Berechnung benötigt, können Sie den neuen TreeDataProvider.resolveTreeItem verwenden, um den Tooltip zu setzen.

TreeItem Highlights API
Die lang erwartete TreeItemLabel API ist nun final. Diese API kann verwendet werden, um Hervorhebungen auf dem label eines TreeItem zu setzen. Sie können sie in Aktion in der Referenzansicht sehen.

listDoubleSelection und listMultiSelection
Die Verwendung der Kontextwerte listDoubleSelection und listMultiSelection für die Aktivierung von Befehlen in beigesteuerten Baumansichten funktioniert nun.
Ansicht "Willkommensinhalt"-Schaltflächen-Aktivierung
Sie können nun eine Aktivierungsklausel für Abschnitte des Ansichts-Willkommensinhalts festlegen.

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.
API für Hintergrundfarbe von Statusleisteneinträgen
Wir schlagen eine neue Eigenschaft backgroundColor für StatusBarItem vor, um die Hintergrundfarbe eines Statusleisteneintrags festzulegen. Derzeit wird nur statusBarItem.errorBackground unterstützt, um zu vermeiden, dass die Statusleiste zu bunt aussieht. Wir können diese Unterstützung in Zukunft auf weitere Farben ausweiten.

Der Anwendungsfall für diese neue API ist es, Erweiterungen die Möglichkeit zu geben, Fehlerbedingungen in der Statusleiste anzuzeigen. Zum Beispiel könnte die ESLint-Erweiterung diese Farbe verwenden, um den Benutzer darauf aufmerksam zu machen, dass ESLint für einen Arbeitsbereich noch nicht aktiviert wurde.
Weitere themenbezogene Icons
Die Arbeit an den Produkt-Icon-Themen wurde wieder aufgenommen. Produkt-Icon-Themen sind ein vorgeschlagenes Feature, das es Ihnen ermöglicht, VS Code mit einem benutzerdefinierten Satz von Icons zu gestalten. Es funktioniert für alle Icons in den integrierten Ansichten sowie für alle Erweiterungen, die Icons aus der Codicon-Bibliothek verwenden. Produkt-Icon-Themen werden im nächsten Meilenstein veröffentlicht.
Viele weitere Icon-Namen wurden hinzugefügt, insbesondere für die Debug-, Erweiterungs- und Terminalansichten sowie für die Einstellungen und Notebook-Editoren.
Sehen Sie sich die aktualisierte Icon-Liste an.
Entfernung der vorgeschlagenen Logging-API
Ein Vorschlag für eine Logging-API, LogLevel und onDidChangeLogLevel, existierte vor etwa einem Jahr und wurde nun entfernt. Erweiterungen können die Output-Kanal-API zum Protokollieren verwenden oder, wenn sie einen benutzerdefinierten Logger verwenden, ExtensionContext#logUri nutzen.
Initiale Ergänzung der vorgeschlagenen Testing-API
Wir untersuchen Testing in VS Code, und die erste Version der API ist nun in vscode.proposed.d.ts vorhanden. Bitte lesen Sie das verlinkte Issue für zusätzlichen Kontext und beteiligen Sie sich, wenn Sie Input geben möchten. Wir gehen davon aus, dass der Provider-Teil der API deutlich früher ausgeliefert wird als der Observer-Teil.
Neue Kontextschlüsseloperatoren
<, <=, > oder >= können nun für Kontextschlüsselausdrücke verwendet werden. Hier ist ein Beispiel für die Beisteuerung eines Befehls, der nur angezeigt wird, wenn zwei oder mehr Arbeitsordner geöffnet sind.
"contributes": {
"menus": {
...
"when": "workspaceFolderCount >= 2"
...
}
}
Language Server Protocol
Der Funktionsumfang für die Version 3.16 des Language Server Protocol ist abgeschlossen und auf der LSP-Protokollseite verfügbar. Die wichtigsten Highlights der Version 3.16 sind:
- Semantische Tokens
- Aufrufhierarchie
- Linked Editing
- Änderungsannotationen
- LSIF Monikers
- Dateioperationen-Ereignisse
Das detaillierte Änderungsprotokoll enthält auch alle kleineren Verbesserungen an bestehenden Anfragen.
Debug Adapter Protocol
Unterstützung für bedingte Ausnahmen
In diesem Meilenstein wurde der Vorschlag für bedingte Ausnahmen vom September 2020 finalisiert und ist nun Teil der Version 1.43 des Debug Adapter Protocol (DAP).
Die Protokollergänzung erweitert die Anfrage setExceptionBreakpoints um eine neue optionale Eigenschaft filterOptions zum Festlegen von Ausnahmefiltern und deren Bedingungen. Ein Debug-Adapter kann über die Fähigkeit supportsExceptionFilterOptions mitteilen, dass er die Funktion bedingter Ausnahmen unterstützt.
Klärung der Semantik von StackTraceResponse.totalFrames
Die Beschreibung der supportsDelayedStackTraceLoading-Fähigkeit im Debug Adapter Protocol legt nahe, dass der Adapter das Feld totalFrames der StackTraceResponse mit der **korrekten** Anzahl verfügbarer Stack-Frames füllen muss, damit das verzögerte Laden von Stack-Frames funktioniert. Für einige Debugger oder Laufzeiten ist dieser Wert jedoch nicht einfach zu berechnen, was die Unterstützung des verzögerten Ladens von Stack-Frames teuer macht.
Da die Gesamtzahl der Frames nie in der Benutzeroberfläche angezeigt wird, haben wir die ursprüngliche – etwas mangelhafte – Semantikbeschreibung von totalFrames geklärt: Ein Debug-Adapter kann nun frei einen großen (falschen) Wert für totalFrames angeben, und ein Client sollte darauf vorbereitet sein, weniger Frames als angefordert zu erhalten, und dies als Hinweis darauf verwenden, dass das Ende des Stacks erreicht wurde.
Klärung der Semantik von RunInTerminalRequestArguments.cwd
Da die Eigenschaft cwd ("current working directory") der Anfrage runInTerminal **nicht** optional ist, ist es nicht möglich, die Eigenschaft wegzulassen, um den "egal"-Fall auszudrücken. Wenn beispielsweise ein Debug-Adapter weiß, dass die "cwd" bereits korrekt ist und es keinen Bedarf gibt, dass der Client einen "Change Directory"-Befehl generiert, beschreibt die DAP-Spezifikation nicht, wie dies erreicht werden kann.
Um diese Lücke zu schließen, haben wir die DAP-Spezifikation geklärt, indem wir hinzugefügt haben, dass ein Client nur dann erwartet wird, einen Change Directory-Befehl auszuführen, wenn die cwd-Eigenschaft einen nicht leeren Pfad enthält.
Technik
Sandbox und Kontextisolierung für Issue Reporter und Process Explorer aktiviert
Um mehr Feedback von der Aktivierung der Sandbox und Kontextisolierung von Electron zu erhalten, haben wir sie für unsere Process Explorer- und Issue Reporter-Fenster aktiviert. Diese Konfiguration wird schließlich auch für das Haupt-VS-Code-Fenster zum Standard.
sandboxaktiviertcontextIsolationaktiviert- Ressourcen werden von einem benutzerdefinierten
vscode-fileSchema (und nichtfile) bedient.
Sichere Lieferkette für NPM-Abhängigkeiten
Wir haben unsere NPM-Abhängigkeitslieferkette durch die Nutzung von Quellcode-Scan- und Testdiensten verbessert, um die Sicherheit und Zuverlässigkeit unserer Build-Pipeline zu erhöhen.
Linux ARM Repositories
VS Code für ARM-Architekturen (aarch64 und armhf) wird nun in den folgenden Linux-Repositories veröffentlicht.
Neue Befehle
| Taste | Befehl | Befehls-ID |
|---|---|---|
| Fokus auf primäre Seite im Diff-Editor | workbench.action.compareEditor.focusPrimarySide |
|
| Fokus auf sekundäre Seite im Diff-Editor | workbench.action.compareEditor.focusSecondarySide |
|
| Fokus auf andere Seite im Diff-Editor | workbench.action.compareEditor.focusOtherSide |
Dokumentation
Remote-Entwicklung
Es gibt mehrere neue Möglichkeiten, mehr über VS Code Remote Development zu erfahren.
- Sehen Sie sich das Video "Tabs versus Spaces" an, das VS Code Remote Development behandelt.
- Oder probieren Sie das Schritt-für-Schritt-Lernmodul aus, das behandelt, wie Sie einen Docker-Container als Entwicklungsumgebung verwenden.

GitHub-Integration
- Sehen Sie sich unser neues Lernmodul an, wie Sie die GitHub-Integration des Editors am besten nutzen können, mit dieser Einführung in GitHub in Visual Studio Code.

Wie wir VS Code Open Source entwickeln
Sehen Sie sich die Aufzeichnung der Session der Entwickler Alex Ross und Benjamin Pasero auf dem GitHub Universe an: How we make VS Code in the open, um zu erfahren, wie unser Team VS Code Open Source entwickelt und auf GitHub mit der Community zusammenarbeitet.
VS Code auf Chromebooks
Wussten Sie schon, dass Sie VS Code auf einem Chromebook ausführen können? Wir halten dies für eine großartige Option für Studenten und angehende Programmierer. Erfahren Sie, wie Sie VS Code unter Chrome OS (über Crostini) einrichten, mit unserem Blogbeitrag Lernen mit VS Code auf Chromebook, der Anleitungen für den Einstieg ins Programmieren mit JavaScript und Python enthält.
Bemerkenswerte Fehlerbehebungen
- 39543: Übereinstimmende Wörter im Übersichtslinien-Editor für geteilte JSON-Einstellungen hervorheben.
- 67905: Mehrere Extension VSIX-Dateien gleichzeitig installieren
- 83187: Umgebungsvariablen aus einer Konfiguration tropfen in eine andere.
- 88703: Fehler bei Feldern mit URI-Format werden in der Einstellungen-UI nicht gemeldet.
- 97202: ${config
} Variablen werden in Launch-Konfigurationen für Multi-Root-Workspaces nicht aufgelöst. - 98041: Emmet ignoriert Auswahl bei Auswertung von mathematischen Ausdrücken.
- 107320: Der Theme-Selektor sollte nicht erscheinen, wenn eine Erweiterung installiert wird, die ein Hauptmodul enthält.
- 107461: Verlauf der Debug-Konsole nicht beibehalten.
- 109111: Die Debug-Konsole respektiert die Benutzereinstellungen nicht.
- 110077: Daten-Breakpoints werden nicht in der Breakpoints-Ansicht angezeigt.
- 110426: Unterstützung des
--diffParameters beim Lesen von stdin. - 110738: Ermöglichen, dass Erweiterungen das Editorlabel für benutzerdefinierte Dateisystemschemata festlegen.
- 110775: Die Option "Dauerhaft löschen" fehlt beim Rechtsklick mit Shift.
- 110854: Unterstützung für schreibgeschützte Änderungen von Dateisystemanbietern in geöffneten Editoren.
- 110905: CLI: Keine Kontaktaufnahme mit dem Marketplace, wenn die Erweiterung bereits installiert ist, es sei denn, sie wird erzwungen.
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)
- Simon Chan (@yume-chan)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
Beiträge zu vscode
- Aasim Khan (@aasimkhan30)
- Behebung des Escape-Button-Verhaltens von ListWidget PR #110760
- Hinzufügen eines Gliederungsabstands zum Kontrollkästchen, um den Fokus sichtbar zu machen. PR #110038
- @AE1020: Klicken in Scrollbalken zum Seitenwechsel PR #104923
- @alisonnoyes: Leichte Themen-Diff-Syntaxhervorhebung unterdrücken PR #107926
- Andrew Casey (@amcasey): TS-Server-Tracing verfügbar machen PR #110534
- Andrew Branch (@andrewbranch): [typescript-language-features] Werte für importModuleSpecifierPreference aktualisieren PR #110536
- @apogeeoak: Fehler beim erneuten Öffnen der Markdown-Vorschau verhindern. (#_107205) PR #111449
- Jonathan Belcher (@belcherj): Kompositionslogik für Firefox korrigieren PR #106873
- @BTNDev: Aktualisiertes JavaScript für Snippet PR #111062
- Borja Zarco (@bzarco): Kein Fehler beim Auflösen von Konfigurationsvariablen ohne
folderUri. PR #97203 - @chanmaoooo: Befehl 'deleteWordEntire' hinzufügen PR #109511
- chenjigeng (@chenjigeng): Korrigierter Hover-Stil ist falsch, wenn JavaScript in HTML geschrieben wird PR #111110
- @dataleaky: Paket.json aktualisieren PR #111661
- Devansh Jethmalani (@devanshj): feat(quickinput): Unterstützung für Codicons in Prompts PR #102898
- Aadhish Sriram S (@dfireBird): feat: Standard-Stash-Nachricht erkennen microsoft#106907 PR #107074
- @digeff: Erweiterbarkeitspunkte für searchView/context hinzugefügt PR #109049
- Nathaniel Palmer (@diminutivesloop): Angebot, Git-Befehlsausgabe bei Fehler anzuzeigen PR #95354
- Dor Mesica (@dormesica): Warnung vor dem Ablegen eines Stashes hinzugefügt. PR #94267
- David Sanders (@dsanders11)
- Fehlermeldung korrigieren PR #111269
- vscode.Uri zu Typen für den Basisparameter von vscode.RelativePattern hinzufügen PR #111155
- Label für den Tooltip des Befehls "Link folgen" verwenden PR #110917
- Auswirkung der Befehlsaktivierung verdeutlichen PR #110423
- Array.flat() verwenden PR #110189
- Ikko Ashimine (@eltociear): Tippfehler 'sequece' in 'sequence' korrigiert PR #109643
- Erik Krogh Kristensen (@erik-krogh): Katastrophale Backtracking beim Parsen von Markdown-Dateien beheben PR #109964
- Jakub Piskiewicz (@eXotech-code): Einstellung hinzugefügt, um ein geklontes Repository automatisch zu öffnen. PR #94369
- Fabio Zadrozny (@fabioz): Dokumentation für FileSystemWatcher-Einschränkungen (#_60813) PR #110858
- Himanshu Kapoor (@fleon): Monaco-Editor ordnungsgemäß mit Jest arbeiten lassen PR #109833
- Ben Curtis (@Fmstrat): Option ignoreSubmodules hinzufügen PR #88772
- John Murray (@gjsjohnmurray)
- Fix #109733 Doppelte "(read-only)"-Suffix im Titelbalken verhindern PR #109736
- Fix #106487 "enablement"-Klausel für Buttons der "viewsWelcome"-Beiträge implementieren PR #107705
- Guillaume Lachance (@glachancecmaisonneuve): Windows Explorer-Icons PR #86283
- Hung-Wei Hung (@hunghw): Leere Commit erstellen mit geänderten Dateien #107753 PR #107958
- Dhruva Srinivas (@IQUBE-X): Definitionsliste zu Markdown-Snippets hinzufügen PR #110026
- Jean Pierre (@jeanp413)
- Behebt Glitches im Erweiterungs-Editor beim schnellen Navigieren in der Navbar PR #110370
- Behebt Terminal-Lags beim Scrollen beim Drucken einer langen Zeile PR #110213
- Besseres Diff für gelöschte Datei im Merge-Konflikt PR #91245
- Behebt, dass die Quellcodeverwaltung den ausgeklappten Zustand des Baums beibehält PR #89313
- Jessica Petty (@jepetty): Node-Aufgabe zum Beheben defekter Rich-Nav-Builds hinzufügen PR #110762
- Josias (@justjosias): Tippfehler hightlight -> highlight PR #108451
- @KapitanOczywisty: Zeilendekorationsreihenfolge beim Vergleichen ignorieren PR #108379
- Ken Aoki (@kena0ki): xterm.css aktualisieren PR #109850
- Wenlu Wang (@Kingwl)
- Oliver Larsson (@LarssonOliver): git.pruneOnFetch-Einstellung implementiert PR #89249
- Jiaxun Wei (@LeuisKen): OpenURLOptions im ExtensionUrlBootstrapHandler zwischenspeichern PR #110725
- Jade (@lf-): Beschreibung von FontLigatures explizit machen PR #109987
- Logan Rosen (@loganrosen): .ember-cli als jsonc statt json markieren PR #110541
- Mohammed Al-Dahleh (@maldahleh): #109255 - Encoding-Beschreibung zum Dropdown-Menü "Datei: Encoding" in den Einstellungen hinzufügen PR #109551
- Mathias Rasmussen (@mathiasvr): Nur Git-Amend-Nachricht zulassen PR #91838
- MD Asif Hasan (@mdasifhasan): Korrigiert fetchOnPull-Verhalten für Pull und Sync PR #99324
- Seth Fitzsimmons (@mojodna): Tippfehler: Uncommited → Uncommitted PR #109119
- Nicholas Rayburn (@nrayburn-tech): dirSep-Variable für launch.json hinzufügen PR #105887
- oli (@olivercoad): Behandlung von widersprüchlichen mehrstelligen automatisch schließenden Klammernpaaren PR #110094
- @Pikachu920: Verhindert unerwünschte Verkettung von "null" mit der Feedback-URL PR #111325
- Pablo Sebastian Greco (@psgreco)
- Weitere Bereinigung für hartcodierte Abhängigkeiten für ARMhfp und aarch64 RPM PR #111253
- Hartcodierte RPM-Abhängigkeiten für armv7hl und aarch64 korrigieren PR #111198
- Rotem Bar (@rotem-bar): feat(extensions): Option hinzugefügt, um verwandte Abhängigkeiten zu deaktivieren, wenn eine Erweiterung mit aktivierten Abhängigkeiten deaktiviert wird PR #104997
- Andreas Ziegler (@rupran): scmViewPane: Keine Leerzeichen im Commit-Nachrichten-Eingabefeld rendern PR #107913
- Dmitry Sharshakov (@sh7dm): Git: Speichern nicht gespeicherter Dateien vor dem Stash abfragen PR #94358
- Shivang Tripathi (@shivangg): feat: npm.packageManager automatisch erkennen #102050 PR #102494
- Shunsuke Iwamoto (@shskwmt): Fix #93946. Fokus entfernen beim Scrollen. PR #94280
- Emanuel Tesař (@Siegrift): tsec als Language Service Plugin aktivieren PR #108682
- Jonathan Mannancheril (@SneakyFish5)
- Git: cherryPick-Befehl hinzufügen PR #104614
- Git.pushTags-Einstellung hinzufügen PR #104312
- Scott Davis (@stdavis): feat: Git: Push Tags-Befehl implementieren PR #110096
- Suman B K (@sumanbk92): ` als Teil von foldEndPairCharacters einbeziehen PR #110108
- Tim (@Timmmm): Option für atomare Tabs hinzufügen PR #107126
- @turara
- OneSnippet#move-Methode aktualisieren, um #96545 zu beheben. PR #108964
- updateTextFromFindWidgetOrSelection-Methode zu SearchView hinzufügen PR #108401
- Update CodeActionOnSaveParticipant PR #108193
- Alexander (@usernamehw)
- Fügt eine Einstellung hinzu, um wortbasierte Vorschläge unabhängig von der Sprache einzuschließen PR #110494
- Behebt #99971 - Aktivierungsereignisse in Feature Contributions anzeigen PR #100010
- Valter Pires (@vfcp): Korrigiert themeLabel in package.nls.json für das "Tomorrow Night Blue"-Theme PR #110178
- Jason Wang (@wangjaso): Bietet Option, um standardmäßig den GitHub-Provider für git.api.getRemoteSources zu verwenden PR #106368
- Eno Yao (@Wscats)
- Unterstützt Kontextschlüssel für Tastenkombinationsbrowser PR #110902
- Unterstützt größer als und kleiner als PR #110846
- Code-Lesbarkeit optimieren PR #110572
- @xndcn: Korrigiert Overlay-Bereich für Minimap-Slider PR #108448
- winwin2011 (@YuJianghao): Korrigiert Fehler bei Überlauf von Fortschrittsbits PR #110411
- Zuckjet (@Zuckjet): Hover-Info sollte nicht innerhalb eines Wortes unterbrochen werden PR #106885
Beiträge zu language-server-protocol
- @KamasamaK
- Danny Tuppeny (@DanTup): Anpassungen zur Vereinfachung des Parsens von Specs PR# 1156
Beiträge zu vscode-languageserver-node
- Niccolò Belli (@darkbasic): ShowTextDocumentRequest implementieren PR #490
- Danny Tuppeny (@DanTup): Unterstützung für Middleware in onProgress hinzufügen PR #690
- Julien HENRY (@henryju): appName als Client-Info anstelle von 'vscode' verwenden PR #697
Beiträge zu vscode-eslint
- Sebastian Andil (@selrond): Beispiel korrigieren PR #1120
Beiträge zu vscode-js-debug
- Momtchil Momtchev (@mmomtchev): Unterstützung für das Debuggen externer Node-Interna hinzufügen PR #824
Beiträge zu vscode-html-languageservice
- Jean Pierre (@jeanp413): Korrigiert Autocomplete-Textedit-Ausgaben </[object Object]> PR #93
Beiträge zu node-jsonc-parser
- Dan Russell (@dangrussell): Dateierweiterung zum Wert der 'typings'-Eigenschaft hinzufügen PR #43
Beiträge zu vscode-generator-code
- Tom Sherman (@tom-sherman): Veraltetes
assert.equaldurchstrictEqualersetzen PR #229 - Tomáš Hübelbauer (@TomasHubelbauer): Ermöglicht Übergabe von gitInit, pkgManager und webpack über die CLI PR #227
Beiträge zu vscode-vsce
- Fabian Meumertzheim (@fmeum): Sicherstellen, dass package.json in *.vsix schreibbar ist PR #508
- James George (@jamesgeorge007): chore: veralteten Code entfernen PR #511
- Matan Gover (@matangover): presense -> presence PR #510