Februar 2022 (Version 1.65)
Update 1.65.1: Das Update behebt diese Sicherheitslücken.
Update 1.65.2: Das Update behebt diese Probleme.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Willkommen zur Veröffentlichung von Visual Studio Code im Februar 2022.
- Neue Editorverlaufsnavigation - Beschränken Sie die "Zurück"/"Vorwärts"-Navigation auf eine Editorgruppe oder einen einzelnen Editor.
- Helles Kontrast-Design - Helles Design für verbesserte Sichtbarkeit des VS Code-Editors.
- Neue Audio-Hinweise - Audio-Hinweise für Warnungen, Inline-Vorschläge und Haltepunkt-Treffer.
- Probleme und Suchergebnisse per Drag & Drop - Ziehen Sie Ergebnisse in neue oder vorhandene Editorgruppen.
- Verwaltung von Quellcode-Diff-Editoren - Schließen Sie Diff-Editoren automatisch nach Git-Operationen.
- Lazy Variable Evaluation im Debugger - Lazy Evaluation von JavaScript/TypeScript-Eigenschaftsggettern.
- Vorschau: Terminal-Shell-Integration - Führen Sie Terminalbefehle erneut aus, Befehlsstatusdekorationen.
- VS Code für das Web - Öffnen Sie lokale Dateien und Ordner erneut, verbesserte Git-Integration.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Workbench
Neue Editorverlaufsnavigation
Die Editorverlaufsnavigation in VS Code treibt einige beliebte Befehle an, wie z. B. Zurück und Vorwärts. Im Laufe der Zeit haben sich zahlreiche Funktionsanfragen angesammelt, um diese Funktion zu verbessern und weitere Fähigkeiten hinzuzufügen. Bei diesem Meilenstein wurde die Editorverlaufsnavigation von Grund auf neu geschrieben, um die meisten dieser Anfragen zu erfüllen.
Editorgruppen-bewusste Navigation
Editorgruppen werden nun bei der Navigation im Editorverlauf berücksichtigt. Die Navigation zurück und vorwärts im Editorverlauf aktiviert und fokussiert Editoren genau in den Editorgruppen, wie sie waren. Wenn eine Editorgruppe entfernt wird, werden alle zugehörigen Verlaufs-Einträge verworfen.
Im kurzen Video unten platziert das erste Zurück den Cursor in der neuen Editorgruppe und dann kehrt die zweite Zurück-Navigation zur ursprünglichen Editorgruppe zurück.
Theme: GitHub Light
Neue Einstellung, um die Navigation auf Editorgruppe oder Editor zu beschränken
Eine neue Einstellung workbench.editor.navigationScope ermöglicht es, die Editorverlaufsnavigation auf die aktive Editorgruppe oder sogar auf den Editor zu beschränken. Unterstützte Werte sind:
default: Die Editor-Navigation funktioniert über alle geöffneten Editorgruppen und Editoren hinweg.editorGroup: Die Editor-Navigation ist auf geöffnete Editoren der aktiven Editorgruppe beschränkt.editor: Die Editor-Navigation ist auf den aktiven Editor beschränkt.
Wenn Sie den Geltungsbereich auf editorGroup oder editor konfigurieren, hat jede Editorgruppe oder jeder Editor einen eigenen Navigationsstapel, der individuell navigiert werden kann.
Notebook-Unterstützung
Sie können nun zwischen ausgewählten Zellen in jedem Notebook navigieren. Die Navigation funktioniert über Editoren hinweg, genauso wie Sie zwischen Cursorpositionen in einem Texteditor navigieren können.
Theme: GitHub Light
Neue Befehle zur Navigation von Bearbeitungs- oder Navigationspositionen
Standardmäßig werden Editor-Navigationspositionen hinzugefügt, wann immer Sie über Editoren hinweg navigieren, aber auch beim Navigieren innerhalb von Editoren (z. B. beim Wechseln von Notebook-Zellen oder Ändern der Auswahl in Texteditoren). Wenn Sie der Meinung sind, dass zu viele Positionen aufgezeichnet werden, wurden neue Befehle hinzugefügt, die die Positionen auf folgende reduzieren:
- Navigationspositionen – Zum Beispiel bei der Verwendung von Definition finden.
- Bearbeitungspositionen – Wann immer ein Editor geändert wird. Zum Beispiel beim Tippen in einem Texteditor.
Sie können Ihrer bevorzugten Tastenkombination diese Befehle zuweisen, um Ihre Navigation entsprechend zu ändern.
Befehle für Bearbeitungspositionen
workbench.action.navigateForwardInEditLocations- Vorwärts in Bearbeitungspositionen navigieren.workbench.action.navigateBackInEditLocations- Zurück in Bearbeitungspositionen navigieren.workbench.action.navigatePreviousInEditLocations- Vorherige Bearbeitungsposition aufrufen.workbench.action.navigateToLastEditLocation- Zur letzten Bearbeitungsposition navigieren (dieser Befehl existierte bereits zuvor).
Befehle für Navigationspositionen
workbench.action.navigateForwardInNavigationLocations- Vorwärts in Navigationspositionen navigieren.workbench.action.navigateBackInNavigationLocations- Zurück in Navigationspositionen navigieren.workbench.action.navigatePreviousInNavigationLocations- Vorherige Navigationsposition aufrufen.workbench.action.navigateToLastNavigationLocation'- Zur letzten Navigationsposition navigieren.
Zugehörige Kontextschlüssel wurden hinzugefügt, um die Zuweisung von Tastenkombinationen leistungsfähiger zu machen.
Kontextschlüssel für Bearbeitungspositionen
canNavigateBackInEditLocations- Ob es möglich ist, in Bearbeitungspositionen zurück zu navigieren.canNavigateForwardInEditLocations- Ob es möglich ist, in Bearbeitungspositionen vorwärts zu navigieren.canNavigateToLastEditLocation- Ob es möglich ist, zur letzten Bearbeitungsposition zu navigieren.
Kontextschlüssel für Navigationspositionen
canNavigateBackInNavigationLocations- Ob es möglich ist, in Navigationspositionen zurück zu navigieren.canNavigateForwardInNavigationLocations- Ob es möglich ist, in Navigationspositionen vorwärts zu navigieren.canNavigateToLastNavigationLocation- Ob es möglich ist, zur letzten Navigationsposition zu navigieren.
Neue Optionen zur Layout-Steuerung
Im letzten Meilenstein haben wir die experimentelle Layout-Steuerung in der Titelleiste eingeführt (aktiviert durch Einstellung von workbench.experimental.layoutControl.enabled auf true). Wir haben Feedback erhalten, dass die Aktionen in der Steuerung zwar nützlich sind, aber zu viele Klicks erfordern. Aus diesem Grund fügen wir mehrere UI-Optionen hinzu, die jeder ausprobieren kann, mit der Einstellung workbench.experimental.layoutControl.type. Diese Einstellung hat die folgenden Optionen:
menu: Das bisherige Verhalten mit einer einzelnen Schaltfläche, die ein Menü öffnet (Standard).toggles: Eine neue Option, die drei Schaltflächen zum Umschalten des Panels, der Seitenleiste und des Seitenbereichs anzeigt.both: Eine neue Option, die die Umschalter gefolgt von der Menüschaltfläche anzeigt, die es Ihnen immer noch ermöglicht, recht schnell auf die "Anpassen"-Quick Pick zuzugreifen.
Das folgende Bild zeigt layoutControl.type auf both gesetzt, um die drei Umschaltflächen zusammen mit dem Menü-Dropdown anzuzeigen.

Helles Kontrast-Design
Ein neues helles Kontrast-Design wurde hinzugefügt, um die Lesbarkeit und Übersichtlichkeit des Editors zu verbessern.

Audio-Hinweise
Mit dieser Veröffentlichung wurden neue Audio-Hinweise hinzugefügt, einschließlich Audio-Hinweisen für Warnungen, Inline-Vorschläge und Haltepunkt-Treffer des Debuggers. Die Sounds wurden abgestimmt und die allgemeine Einstellung audioCues.enabled wurde zugunsten der einzelnen audioCues.*-Einstellungen eingestellt.

Alle Audio-Hinweise außer lineHasWarning sind standardmäßig für Screenreader-Benutzer aktiviert (Einstellungswert auto).
Ein neuer Audio-Hinweise-Befehl Hilfe: Audio-Hinweise auflisten listet alle verfügbaren Audio-Hinweise auf, lässt Sie jeden Audio-Hinweis hören, während Sie sich durch die Liste bewegen, und überprüft, welche Hinweise derzeit aktiviert sind.

Probleme und Suchergebnisse per Drag & Drop
Sie können nun ein Problem, Such- oder Referenzergebnis per Drag & Drop in den Editor ziehen und dabei die Datei öffnen und die Position des Ergebnisses anzeigen. Dies kann nützlich sein, wenn Sie eine neue Editorgruppe starten oder ein Ergebnis in eine vorhandene Editorgruppe ziehen möchten.
Split-Ansicht des Einstellungs-Editors
Der Einstellungs-Editor verwendet nun eine einstellbare Split-Ansicht, um das Inhaltsverzeichnis von der Einstellungsliste zu trennen.
Verbesserte automatische Spracherkennung
Wenn die neue Einstellung workbench.editor.historyBasedLanguageDetection aktiviert ist, verwenden unbenannte Editoren einen verbesserten Algorithmus zur automatischen Spracherkennung, der Ihre Editorhistorie und den Inhalt des aktuellen Arbeitsbereichs berücksichtigt. Der neue Algorithmus benötigt viel weniger Textinput als zuvor, um Erkennungsergebnisse zu liefern.
Unten ist ein Beispiel für die Verwendung dieses Features über JavaScript, TypeScript, Markdown, Python, PHP und C++ (viele weitere Sprachen werden unterstützt)
Thema: GitHub Light + HC Customizations
Verbesserte Empfehlungen für Sprach-Erweiterungen
Empfehlungen für Sprachfunktions-Erweiterungen berücksichtigen nun andere prominente Sprach-Erweiterungen im Marketplace bei der Empfehlung. Zum Beispiel empfiehlt VS Code das Java Extension Pack nicht, wenn Sie die Apache NetBeans Java-Erweiterung installiert haben.
Tastenkombination für Hover von Erweiterungsbäumen
Sie können den Hover auslösen, um in benutzerdefinierten Baumansichten, die von Erweiterungen beigesteuert werden, mit der Tastenkombination Strg/Cmd+K, Strg/Cmd+I angezeigt zu werden.
Editor
Mit Snippet umgeben
Es gibt einen neuen Befehl, um die aktuelle Auswahl mit einem Snippet zu umgeben. Wählen Sie Text aus, rufen Sie den Befehl Mit Snippet umgeben über die Befehlspalette auf (⇧⌘P (Windows, Linux Strg+Umschalt+P)) und wählen Sie ein Snippet aus der Dropdown-Liste.
Im kurzen Video unten wird eine ausgewählte Methode mit einem Try/Catch-Snippet umgeben.
Alle anwendbaren Snippets, die die Variablen TM_SELECTED_TEXT oder SELECTION verwenden, sind im Dropdown-Menü der "Mit Snippet umgeben"-Quick-Pick verfügbar. Benutzerdefinierte oder Projekt-Snippets sind ebenfalls enthalten.
Zugängliche Inlay-Hinweise
Inlay-Hinweise zeigen zusätzliche Informationen im Quellcode an, wie z. B. den abgeleiteten Typ einer Variable. Für Screenreader-Benutzer gibt es einen neuen Befehl, der bei dieser Funktion hilft. Wählen Sie Zeile mit Inlay-Hinweisen lesen aus der Befehlspalette aus und der Editor liest die aktuelle Zeile mit den darin enthaltenen Hinweisen.
Kontextbezogene Unicode-Hervorhebung
Um weniger Fehlalarme zu melden, werden doppeldeutige und unsichtbare Unicode-Zeichen nicht mehr hervorgehoben, wenn die umgebenden Zeichen visuell ein nicht-ASCII-Skript anzeigen. Daher werden in vertrauenswürdigen Arbeitsbereichen nur Zeichen hervorgehoben, die unsichtbar sind oder mit ASCII-Zeichen verwechselt werden können. Die Ausnahme hierbei bilden Zeichen, die in einem Wort mit nicht-ASCII-Zeichen enthalten sind, bei dem mindestens ein Zeichen nicht mit einem ASCII-Zeichen verwechselt werden kann.
Zuvor konnten Sie mehrere Fehlalarme im konstanten String sehen

Danach wird nur das verwirrende Zeichen hervorgehoben

Terminal
Warnung bei mehrzeiligem Einfügen
Ein Dialog wird nun standardmäßig angezeigt, wenn Sie in Terminals mehrere Zeilen einfügen, die Shell aber Mehrzeilen-Einfügen nicht unterstützt. Diese Warnung wird für den "bracketed paste mode" und für PowerShell angezeigt, wenn wir Strg+V direkt an die Shell weiterleiten. Es gibt ein Kontrollkästchen Nicht mehr fragen im Dialog, um die Funktion einfach zu deaktivieren.
Verbesserungen bei Terminal-Links
Die Implementierung für Terminal-Links wurde in dieser Version stark überarbeitet. Dies vereinfachte und verbesserte die Wartbarkeit der Funktion, brachte aber auch:
- Link-Hervorhebungen funktionieren wieder.
- Zwischenspeicherung aufgelöster Links, was die Latenz für das Anzeigen bestimmter Links reduziert.
- Arbeitsbereichssuch-Links werden nun vom selben Code wie validierte Links behandelt, für mehr Konsistenz und verbesserte Zeilen-/Spalten-Erkennung.
- Mehrere Fehlerbehebungen.
Verbesserungen beim Befehl "Datei-Link öffnen"
Die im letzten Update eingeführten Befehle Letzten Datei-Link öffnen und Link erkennen... schließen nun Ordner aus, was sie nützlicher machen sollte.
Quellcodeverwaltung
Diff-Editor-Verwaltung
In diesem Meilenstein haben wir Änderungen vorgenommen, die bei der Verwaltung von Diff-Editoren helfen sollen. Es gibt einen neuen Befehl Git: Alle Diff-Editoren schließen in der Befehlspalette, der zum Schließen aller geöffneten Diff-Editoren verwendet werden kann. Es gibt auch eine neue Einstellung, git.closeDiffOnOperation, um Diff-Editoren automatisch zu schließen, wenn Änderungen gestash-t, committet, verworfen, gestaged oder unstaged werden.
Protokollierung von Git-Befehlsausgaben
Beim Ausführen eines Git-Befehls werden die Inhalte von stderr im Git-Ausgabefenster protokolliert. Es gibt eine neue Einstellung, git.commandsToLog, um eine Liste von Git-Befehlen anzugeben, deren stdout-Inhalte im Git-Ausgabefenster protokolliert werden.
Debugging
Lazy-Variablen
Der Zugriff auf den Wert einer Variable kann Nebenwirkungen haben oder aufwendig sein. Der generische Debugger von VS Code kann nun eine Schaltfläche anzeigen, über die der Benutzer den Variablenwert bei Bedarf abrufen kann. Dies ist für Debug-Erweiterungen verfügbar, die die neue Funktion der "Lazy"-Variablen unterstützen. Derzeit wurde dies nur vom integrierten JavaScript-Debugger für Eigenschafts-Getter implementiert, aber wir erwarten, dass andere Debugger-Erweiterungen bald folgen werden.
Aufgaben
Es gibt eine neue plattformunabhängige Variable userHome, die Sie in Aufgaben verwenden können.
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
Notebooks
Aktualisierung der integrierten Ausgaberenderer
Wir haben die Text-, Bild-, HTML- und Code-Renderer vom VS Code-Kern in eine integrierte Ausgaberenderer-Erweiterung verschoben. Mit dieser Änderung kann VS Code nun Text in diesen Ausgabetypen durchsuchen.
Im kurzen Video unten hat die Suche nach item zunächst 3 Ergebnisse für die Code-Zelle, kann aber gefiltert werden, um auch die Zellenausgabe einzuschließen.
Sticky-Scrolling-Buttons für Notebook-Zellen
Der Ausführen-Button und die Zell-Toolbar bleiben nun am oberen Bildschirmrand haften, wenn Sie nach unten durch eine Code-Zelle scrollen. Dies macht sie zugänglicher, wenn Sie in einer langen Code-Zelle arbeiten.
Thema: Dracula
Sprachen
TypeScript 4.6
VS Code wird nun mit TypeScript 4.6 ausgeliefert. Dieses Update bringt eine Reihe neuer Sprachfunktionen sowie Werkzeugverbesserungen und Fehlerbehebungen. Sie können mehr über TypeScript 4.6 im TypeScript-Blog lesen.
Syntaxfehlerberichterstattung in JavaScript-Dateien
Dank TypeScript 4.6 meldet VS Code nun einige gängige Syntaxfehler in JavaScript-Dateien. Dies umfasst Parsing-Fehler sowie ungültige Neudeklarationen von Block-Scope-Variablen.

Zuvor wurden diese Fehler nur gemeldet, wenn Sie semantische Prüfung in Ihrem JavaScript aktivieren.
Sie können diese Fehlerberichterstattung deaktivieren, indem Sie festlegen:
"javascript.validate.enable": false
Weitere JS/TS-Einstellungen können pro Sprache konfiguriert werden
Mehr der JavaScript- und TypeScript-Einstellungen können nun als sprachenspezifische Einstellungen konfiguriert werden. Sprachspezifische Einstellungen sind nützlich, wenn Sie z. B. unterschiedliche Einstellungen für javascript und javascriptreact wünschen.
Neue sprachspezifische aktivierte Einstellungen umfassen:
javascript.preferences.quoteStyle,typescript.preferences.quoteStylejavascript.preferences.importModuleSpecifier,typescript.preferences.importModuleSpecifierjavascript.preferences.importModuleSpecifierEnding,typescript.preferences.importModuleSpecifierEndingjavascript.preferences.jsxAttributeCompletionStyle,typescript.preferences.jsxAttributeCompletionStylejavascript.preferences.renameShorthandProperties,typescript.preferences.renameShorthandPropertiesjavascript.preferences.useAliasesForRenames,typescript.preferences.useAliasesForRenamesjavascript.suggest.enabled,typescript.suggest.enabledjavascript.suggest.completeJSDocs,typescript.suggest.completeJSDocsjavascript.suggest.jsdoc.generateReturns,typescript.suggest.jsdoc.generateReturnsjavascript.autoClosingTags,typescript.autoClosingTags
Neues Lua-Syntaxhervorhebungs-Grammatik
VS Code verfügt über eine neue, besser gewartete Lua-Grammatik für die Syntaxhervorhebung von Lua-Dateien. Die neue Grammatik wird aktiv gepflegt, behebt Probleme, die in der alten Grammatik vorhanden waren, und unterstützt neuere Lua-Tokens.
VS Code für das Web
Lokale Dateien und Ordner erneut öffnen
Die Liste der zuletzt geöffneten lokalen Dateien und Ordner ist nun verfügbar, wenn Sie vscode.dev oder insiders.vscode.dev mit einem Browser aufrufen, der die Web File System Access API unterstützt. Die Auswahl einer lokalen Datei öffnet sie in einem Editor und die Auswahl eines lokalen Ordners aktualisiert den Datei-Explorer, um dessen Inhalt anzuzeigen. Möglicherweise werden Sie vom Browser aufgefordert, den Zugriff auf lokale Dateien zu bestätigen, bevor der Inhalt angezeigt wird.
Remote Repositories
GitHub-Repositories
In diesem Meilenstein wurde die Auflösung von Merge-Konflikten beim Bearbeiten von GitHub-Repositories auf vscode.dev und github.dev verbessert. Es gibt nun Merge-Konflikt-Dekorationen in Ihrem Editor, mit Optionen zum Aktuellen Konflikt übernehmen, Eingehenden Konflikt übernehmen oder Beide Konflikte übernehmen.
Es gibt auch eine Aktion Änderungen stagen in der Quellcodeverwaltung-Ansicht für Dateien mit Merge-Konflikten.
Zusätzlich können Sie nun alle Änderungen unter einem bestimmten Ordner in einem GitHub-Repository auf vscode.dev und github.dev einfach stagern und unstagen. Um dies zu tun, klicken Sie mit der rechten Maustaste auf die Quellcodeverwaltung-Ansicht und wählen Sie Als Baum anzeigen.
Theme: One Monokai
Arbeitsbereichssuche und Alle Referenzen finden laden und indizieren nun standardmäßig eine vollständige Kopie des Repositorys, anstatt wie bisher standardmäßig unvollständige Ergebnisse zu liefern.
Es gibt mehrere Einstellungen zur Konfiguration dieser Indizierungsfunktion:
remoteHub.indexing.verboseDownloadNotification- Steuert, ob die Download-Benachrichtigung als Popup (Standard) oder in der Statusleiste angezeigt wird.remoteHub.indexing.maxIndexSize- Steuert die Größenbeschränkung für zu herunterladende Indizes. Wenn diese Grenze überschritten wird, wird der Download abgebrochen und es werden unvollständige Ergebnisse geliefert. Sie können diese Einstellung leer lassen, um niemals Repositories herunterzuladen und immer unvollständige Ergebnisse zu verwenden.
Azure Repos
In diesem Meilenstein haben wir die Azure Repos-Unterstützung von der Verwendung eines spezifischen Azure DevOps-Authentifizierungsanbieters auf die Verwendung des generischen Microsoft-Authentifizierungsanbieters (verwendet von Settings Sync) umgestellt. Sie werden aufgefordert, sich erneut anzumelden, wenn Sie ein Azure Repo besuchen, aber alle Ihre gespeicherten Änderungen bleiben erhalten.
Beiträge zu Erweiterungen
Verbesserungen am Hex Editor Data Inspector
Zuvor zeigte die Hex Editor-Erweiterung ihren Data Inspector immer in der Seitenleiste an und machte ihn sichtbar, sobald ein Hex-Editor angezeigt wurde. Einige Benutzer fanden dies jedoch störend und es führte zu einer besonders störenden Erfahrung mit ihrer Integration eines Speicherinspektors für Debugger. Nun erscheint der Data Inspector rechts neben den inspizierten Bytes. Wenn der Editor zu schmal ist, wird der Data Inspector stattdessen in einem Hover-Widget angezeigt.

Thema: Codesong
Dies kann über die Einstellung hexeditor.inspectorType konfiguriert werden, die einen von drei Werten annehmen kann:
aside- Zeigt den Data Inspector daneben an.hover- Zeigt den Data Inspector nur beim Hovern an, unabhängig von der Editorbreite.sidebar- Zeigt den Data Inspector wie bisher in der Seitenleiste an.
GitHub Pull Requests und Issues
Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten, geht weiter. Schauen Sie sich das Changelog für die Version 0.38.0 der Erweiterung an, um die Highlights zu sehen.
Vorschau-Funktionen
Terminal Shell-Integration
Shell-Integration im Terminal wurde ursprünglich in der letzten Version eingeführt und hat diesen Monat viele Verbesserungen erfahren. Zur Erinnerung: Diese Funktion ermöglicht es VS Code, zusätzliche Einblicke in das Geschehen im Terminal zu gewinnen, was bisher weitgehend unbekannt war. Die Funktion gilt immer noch als experimentell und Sie können sie über die Einstellung terminal.integrated.shellIntegration.enabled aktivieren.
Die größte Änderung in dieser Version ist, dass von der Shell-Integration erkannte Befehle nun Dekorationen im "Gutter" links aufweisen. Eine Befehlsdekoration trennt visuell den Puffer und bietet Zugriff auf Informationen und Aktionen, die Shell-Integrationsfunktionen nutzen. Es gibt drei Arten von Befehlsdekorationen: Fehler, Erfolg und Standard, wie durch den Exit-Code des Befehls bestimmt.

Das Klicken auf eine Dekoration zeigt Befehls-spezifische Aktionen in einem Menü an, das derzeit Befehl erneut ausführen und Ausgabe kopieren enthält.

Das Hovern über die Dekoration zeigt Informationen über den Befehl an, wie z. B. die Zeit seit der Ausführung und den zugehörigen Exit-Code.

Dekorationen können deaktiviert werden, indem terminal.integrated.shellIntegration.decorationsEnabled auf false gesetzt wird. Einzelne Symbole können über die Einstellungen terminal.integrated.shellIntegration.decorationIcon* konfiguriert werden und diese neuen Themaschlüssel setzen die Farben:
terminalCommandDecoration.successBackgroundterminalCommandDecoration.errorBackgroundterminalCommandDecoration.defaultBackground
Hier sind die anderen Hauptänderungen:
- Die Aktivierungseinstellung wurde in
terminal.integrated.shellIntegration.enabledumbenannt. - Der Mechanismus zur Aktivierung der Shell-Integration in allen unterstützten Shells ist nun zuverlässiger.
- Die Shell-Integration sollte nun auch bei der Verwendung von Remote-verknüpften Fenstern (SSH, WSL, Container) funktionieren.
- Zeilenfortsetzungen (z. B.
$PS2) sollten nun auf allen unterstützten Shells funktionieren. - Befehle, die "übersprungen" werden, sind nun speziell markiert. Zum Beispiel nach der Verwendung von
Strg+Coder dem Ausführen eines leeren Befehls. - Die Befehle Zuletzt ausgeführten Befehl ausführen und Zu Verzeichnis wechseln speichern nun die Historie zwischen den Sitzungen. Das Speichern der Historie kann über die Einstellung
terminal.integrated.shellIntegration.historykonfiguriert werden.
ESLint
Die ESLint-Erweiterung hat eine vorläufige Unterstützung für Notebook-Dokumente mit Zellen, die mit ESLint validiert werden können. Diese Unterstützung ist nur in der Vorabversion der Erweiterung verfügbar.
Erweiterungs-Authoring
Sprachstatus-Elemente
Wir haben die API für Sprachstatus-Elemente finalisiert. Diese API zeigt sprachspezifische Informationen für den aktiven Editor an. Dies können allgemeine Informationen über das Projekt oder die Toolset-Version sein, aber auch Fehler und Warnungen anzeigen.

Die API ähnelt der Statusleisten-API und ist über vscode.languages.createLanguageStatusItem(...) zugänglich. Ein Sprachstatus-Element sollte mit einem Dokumentselektor erstellt werden, damit VS Code es anzeigen und ausblenden kann, wenn sich der aktive Editor ändert.
Inlay-Hinweise
Die Inlay-Hinweis-Provider-API ist nun finalisiert. Sie ermöglicht das Einfügen von zusätzlichen Informationen in den Quellcode. Das folgende Bild zeigt, wie TypeScript einen Inlay-Hinweis für einen abgeleiteten Typ hinzugefügt hat.

Die API basiert auf dem InlayHintsProvider. Er stellt InlayHint-Objekte bereit, die einige interessante Funktionen haben:
- Ein Inlay-Hinweis kann einen Tooltip und einen Befehl haben.
- Das Label eines Hinweises kann aus mehreren Teilen bestehen, die wiederum einen Tooltip und einen Befehl haben können.
- Die Label-Teile können auch eine zugeordnete Quell-Position haben, die Sprachfunktionen wie Zu Definition gehen für diesen Teil ermöglicht.
Fokusrahmen der Statusleiste
Wir haben die Navigation in der Statusleiste einfacher und zugänglicher gemacht, indem wir Fokusrahmen zur Statusleiste und zu den Statusleisten-Elementen hinzugefügt haben.
Themenautoren können die Rahmenfarben anpassen, indem sie die beiden neuen Farbthemen konfigurieren:
statusBar.focusBorder: Die Rahmenfarbe der gesamten Statusleiste, wenn sie fokussiert ist.statusBarItem.focusBorder: Die Rahmenfarbe der Statusleisten-Elemente, wenn sie fokussiert sind.
Test-Refresh-Aktion und sortText
Wir haben unseren Vorschlag zur Hinzufügung eines standardmäßigen Refresh-Handlers zur TestController-Schnittstelle finalisiert. Wenn Erweiterungen eine Methode dieser Eigenschaft zuweisen, zeigt VS Code ein "Aktualisieren"-Symbol in der Test Explorer-Ansicht an.
Zusätzlich kann das TestItem nun ein sortText-Attribut haben, das die Sortierreihenfolge für Elemente steuert, die keine spezifische Position in einer Datei haben.
Kommentar-Zeitstempel
Die Kommentare-API lässt Sie nun jedem Comment einen timestamp hinzufügen. Dieser Zeitstempel wird im Kommentar-Widget und in der Kommentar-Ansicht angezeigt. Standardmäßig wird der Zeitstempel als relative Zeit (z. B. "vor 2 Wochen") angezeigt, aber die Benutzereinstellung comments.useRelativeTime kann verwendet werden, um stattdessen eine genaue Uhrzeit anzuzeigen. Der Hover über den Zeitstempel ist immer die genaue Uhrzeit.
vscode-test-Paket umbenannt in @vscode/test-electron
Das Paket vscode-test wurde in @vscode/test-electron umbenannt. Erweiterungsautoren sollten den Eintrag in den devDependencies ihrer Erweiterungs-package.json-Datei aktualisieren, wenn sie dieses Paket einbeziehen. Das @vscode/test-electron-Paket hilft beim Ausführen von Integrationstests für VS Code-Erweiterungen. Sie können mehr im vscode-test-Repository erfahren.
Aktualisierte Codicons
Die folgenden neuen Icons wurden unserer Codicon-Bibliothek hinzugefügt:
Pfeil-Kreis-Nach-UntenPfeil-Kreis-Nach-LinksPfeil-Kreis-Nach-RechtsPfeil-Kreis-Nach-ObenFehler-kleinEinzugLayout-Aktivitätsleiste-LinksLayout-Aktivitätsleiste-RechtsLayout-ZentriertLayout-MenüleisteLayout-Panel-MitteLayout-Panel-BegründungLayout-Panel-LinksLayout-Panel-RechtsLayout-PanelLayout-Seitenleiste-LinksLayout-Seitenleiste-RechtsLayout-StatusleisteLayoutZeilenumbruchAufnahme-kleintarget
![]()
Icon-Beitragspunkt ist jetzt final
Der Icon-Beitragspunkt erlaubt Erweiterungen, ein neues Icon per ID zu definieren, zusammen mit einem Standard-Icon. Die Icon-ID kann dann von der Erweiterung (oder jeder anderen Erweiterung, die von der Erweiterung abhängt) überall dort verwendet werden, wo ein ThemeIcon verwendet werden kann: new ThemeIcon("iconId"), in Markdown-Strings ($(iconId)) und als Icons in bestimmten Beitragspunkten.
Produkt-Icon-Themes können das Icon neu definieren (wenn sie die Icon-ID kennen).
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
Im obigen Beispiel definiert eine Erweiterung zwei neue Icon-IDs distro-ubuntu und distro-fedora, zusammen mit Standard-Icon-Definitionen. Die Icons sind in einer Icon-Schriftart unter dem angegebenen Schriftzeichen definiert.
Dateisymbol-Themen: Unterstützung für Ordnernamen in Dateizuordnungen
In Dateisymbol-Themen können die Zuordnungen in folderNames, folderNamesExpanded, fileNames und fileExtensions nun auch einen Ordnernamen enthalten.
"fileNames": {
"system/win.ini": "_win_ini_file"
},
system/win.ini bedeutet, dass die Zuordnung Dateien namens win.ini direkt in einem Ordner namens system übereinstimmt.
"fileExtensions": {
"system/ini": "_ini_file"
},
system/ini bedeutet, dass die Zuordnung Dateien namens *.ini direkt in einem Ordner namens system übereinstimmt.
"folderNames": {
".vscode/extensions": "_vscode_folder"
},
Remote installierte Web-Erweiterungen in VS Code für das Web mit Codespaces ausführen
VS Code für das Web mit Codespaces unterstützt nun die Ausführung einer remote installierten Web-Erweiterung im Web-Erweiterungs-Host. Wenn Sie beispielsweise die Vim-Erweiterung in einem GitHub Codespace installiert haben (über Konfiguration in einer devcontainer.json-Datei), wird Vim im Web-Erweiterungs-Host geladen, wenn Sie den Codespace im Browser öffnen. Lesen Sie unsere Extension Host-Dokumentation für weitere Informationen.
Hinweis: Es gibt derzeit bekannte Einschränkungen beim Laden eines Webworkers durch eine solche Erweiterung. Weitere Details finden Sie im Issue.
Debugger-Erweiterungsentwicklung
Unterstützung für "wichtige" Ausgabe-Events
Kürzlich hat das Debug Adapter Protocol eine Kategorie "important" für das Output-Event hinzugefügt. Diese Kategorie kennzeichnet Ereignisse, die hervorstechen und nicht vom Benutzer übersehen werden sollten. VS Code zeigt nun ein Benachrichtigungs-Popup für Nachrichten mit der Kategorie important an. Sie werden auch weiterhin in der Debug-Konsole protokolliert.
Unterstützung für 'Lazy'-Variablen
Einige Variablen sind dynamisch und erfordern die Ausführung von Code, um ihren Wert zu erhalten. Ein Debug-Adapter möchte deren vollständige Werte möglicherweise nicht automatisch abrufen, da dies Nebenwirkungen haben oder teuer sein könnte.
Einige Debug-Adapter haben dieses Problem gelöst, indem sie die "teure Variable" als Platzhalterobjekt darstellen, das der Benutzer explizit "erweitern" muss, um den Wert abzurufen. VS Codes integrierter js-debug verwendet diesen Ansatz für JS/TS-Getter.
class Person {
name = 'Danny';
get email(): string {
return 'foo@example.bar';
}
get address(): Address {
return new Address();
}
}
class Address {
street = 'Main Street';
city = 'Zurich';
}
Der folgende Screencast zeigt, dass das Zwischenobjekt die effektive Datenstruktur schwer verständlich macht.
In dieser Version haben wir VS Code verbessert, um das Zwischenobjekt in einem kompakten Format mit einem (...)-Button für die Anforderung des vollständigen Werts darzustellen.
Ein Debug-Adapter kann diesen neuen Präsentationsstil für eine Variable anfordern, indem er eine VariablePresentationHint mit einer lazy-Eigenschaft hinzufügt (siehe DAP-Ergänzungen). Wenn der Client das lazy-Flag nicht unterstützt, wird die Variable wie zuvor angezeigt.
Language Server Protocol
Eine weitere nächste Version des Language Server Protocol wurde zusammen mit den entsprechenden npm-Modulen veröffentlicht. Die neue Version enthält die folgenden Änderungen
- Die Konvertierung von LSP-Typen in VS Code-Typen und umgekehrt ist jetzt vollständig asynchron. Diese Änderung vermeidet die Konvertierung großer Datenströme, die den Extension Host blockieren können. Beachten Sie, dass dies eine Breaking API-Änderung in den Bibliotheken ist (weitere Informationen in der README.md). Sie wirkt sich nicht auf die Abwärtskompatibilität des Protokolls selbst aus.
- Die vorgeschlagene Implementierung für Notebook-Dokumente wurde verbessert. Sie verfügt jetzt über vollständige Middleware- und Provider-Unterstützung.
Debug Adapter Protocol
Es wurden mehrere neue Eigenschaften zum Debug Adapter Protocol hinzugefügt.
- Die neue boolesche Eigenschaft
lazywurde zuVariablePresentationHinthinzugefügt. Clients können dieses optionale Flag verwenden, um die Variable mit einer Benutzeroberfläche zu präsentieren, die eine spezielle Geste zum Abrufen ihres Werts unterstützt. - Die neue optionale String-Eigenschaft
detailwurde zuCompletionItemhinzugefügt. Mit diesem menschenlesbaren String kann ein Client zusätzliche Informationen über das Element anzeigen, z. B. Typ- oder Symbolinformationen. Beachten Sie, dass diese Eigenschaft von VS Code noch nicht unterstützt wird.
Vorgeschlagene Erweiterungs-APIs
Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich, und Erweiterungsautoren können sie ausprobieren. Wie immer freuen wir uns über Ihr Feedback. Hier sind die Schritte, um eine vorgeschlagene API auszuprobieren:
- Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu
package.json#enabledApiProposalshinzu. - Verwenden Sie das neueste vscode-dts und führen Sie
vscode-dts devaus. Es lädt die entsprechendend.ts-Dateien in Ihren Arbeitsbereich herunter. - Sie können nun gegen den Vorschlag programmieren.
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.
Markdown-Hovers in Timeline-Elementen
Elemente, die von einem TimelineProvider bereitgestellt werden, können jetzt Markdown in der detail-Eigenschaft unterstützen, die zum Bereitstellen von Inhalten für deren Tooltip verwendet wird.
Notebook-fähige Dokumentenselektoren
Der Typ vscode.DocumentSelector ermöglicht es Ihnen, Sprachfeatures wie Gehe zu Definition bestimmten Dokumenten zuzuordnen. Dies steuert die Benutzeroberfläche und entscheidet auch, ob der entsprechende Provider nach Ergebnissen gefragt wird. Wir haben einen neuen API-Vorschlag hinzugefügt, der es Erweiterungen ermöglicht, auch Notebook-Typen auszuwählen. Zum Beispiel zielt { language: 'python', notebookType: 'jupyter-notebook'} auf alle Python-Dokumente ab, die in Jupyter Notebooks eingebettet sind. Dies ist der aktuelle Vorschlag - probieren Sie ihn aus und geben Sie uns Feedback.
Ausgabekanäle mit benutzerdefinierten Sprach-IDs
Es gibt einige Erweiterungen, die Token- oder Syntaxfärbung und CodeLens-Funktionen in ihren Ausgabekanälen definieren können, da sie selbst schreibgeschützte Textdokumente sind. Da sich alle Ausgabekanäle dieselbe Sprach-ID teilen, können diese Anpassungen fälschlicherweise auf andere Ausgabekanäle angewendet werden. Es gab eine Funktionsanforderung, Ausgabekanäle mit benutzerdefinierten Sprach-IDs zu erstellen, damit Erweiterungsautoren Anpassungen nach Sprache definieren können. Daher haben wir in diesem Meilenstein den Vorschlag zur Erstellung eines Ausgabekanals mit einer benutzerdefinierten Sprach-ID eingeführt. Bitte probieren Sie ihn aus und geben Sie uns Feedback.
MarkdownString.baseUri
Die vorgeschlagene baseUri-Eigenschaft von MarkdownString ermöglicht es Ihnen, eine Basis-URI anzugeben, relativ zu der relative Links und Bilder in Markdown aufgelöst werden. Diese Eigenschaft verhält sich ähnlich wie das <base>-Element in HTML.
Wenn die baseUri mit / endet, wird sie als Verzeichnis betrachtet und relative Pfade in Markdown werden relativ zu diesem Verzeichnis aufgelöst.
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'
Wenn die baseUri eine Datei ist, werden relative Pfade in Markdown relativ zum übergeordneten Verzeichnis dieser Datei aufgelöst.
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'
Neue Dokumentation
Java GUI-Anwendungen
Das neue Thema Java GUI Applications erklärt, wie Sie das Extension Pack for Java verwenden, um JavaFX-, AWT- und Swing-Anwendungen in VS Code zu entwickeln.
Bemerkenswerte Fehlerbehebungen
- 107748 Voice Over liest nicht vor, dass eine Einstellung für die Synchronisierung ignoriert wird
- 123399 Emmet fügt die Klasse mit dem Tag A nicht in jsx- und html-Dateien hinzu.
- 141680 Die Suche nach @tags in Einstellungen ist langsam
- 141977 Einstellungen-Editor: Ordner-Aktionselement behandelt keyup nicht richtig
- 142040 Verbessern Sie die Aktion "Weitere Version installieren" für Erweiterungen, die Pre-Release unterstützen.
- 142462 Dateischreibvorgänge können hängen bleiben, wenn Schreibsperren nicht aufgehoben werden
- 142641 ts-node Debugger funktioniert in v1.64 nicht richtig
Vielen Dank
Last but not least, ein großes Danke an die Mitwirkenden von VS Code.
Web-Erweiterungen
Erweiterungsautoren für die Aktivierung von Erweiterungen, die Code als Weberweiterungen ausführen (die folgende Liste ist zwischen dem 1. Februar 2022 und dem 28. Februar 2022)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- Time Link Bundle (Web version) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
Fehlerverfolgung
Beiträge zu unserer Fehlerverfolgung
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
Pull-Anfragen
Beiträge zu vscode
- @aminya (Amin Yahyaabadi): fix: simplify regex expressions in tasks/common PR #142899
- @Balastrong (Leonardo)
- Erhöhte Deckkraft im Tooltip des Überladungszählers PR #141828
- Elementerkennung behoben, indem das Fragment vor und nach der Dekodung bei Bedarf überprüft wird PR #141848
- @BMBurstein (Baruch): Korrekte Beschreibung der Einstellung für die Klammerführung PR #143722
- @Bruce-Hopkins (Bruce Hopkins): Benutzer-Home-Variable hinzufügen PR #141902
- @caioagiani (Caio Agiani): Tippfehler korrigieren PR #141959
- @CGNonofr (Loïc Mangeonjean)
- languageId durch languageSelector in allen Registrierungsfunktionen für Sprachfeatures ersetzen PR #143610
- getWorker-Funktion erlauben, ein Promise zurückzugeben PR #143611
- @ChaseKnowlden: Lua-Grammatik aktualisieren PR #142107
- @divinity76: root erfordert offenbar --no-sandbox PR #137125
- @efcoyote (coyote): Aktualisierung auf die neueste seti-ui-Version PR #141931
- @enticies (enticies): Tippfehler in Fehlermeldung korrigieren PR #142054
- @g-plane (Pig Fang): "pnpm-lock.yaml" zu den Standardmustern für die Dateiverschachtelung hinzufügen PR #142375
- @gjsjohnmurray (John Murray)
- Optionale languageId zur window.createOutputChannel API hinzufügen (#_19561) PR #140876
- Text für die Einstellung "testing.openTesting" korrigieren (#_142306) PR #142314
- @haykam821: Verhindern, dass der transparente Hintergrund der Bildvorschau durch Skalierung beeinflusst wird PR #141667
- @heartacker: Mathe-Snippet hinzufügen PR #142697
- @icepaq (Anton): Aktivierungsereignis für Autovervollständigung für onWebviewPanel PR #141752
- @jeanp413 (Jean Pierre)
- WebviewElement::streamToBuffer beheben PR #142288
- Beheben, dass die Abfrage einer Erweiterung anhand ihrer ID in der Erweiterungsansicht immer die stabile Version im Erweiterungseditor rendert PR #143481
- @JJRcop (Jonathan Rubenstein): VS 2022 zu unterstützten Versionen hinzufügen PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- psreadline funktioniert nicht mit Shell-Integration PR #142211
- Shellintegration.ps1 beheben PR #142217
- @michaelkuhn (Michael Kuhn): Einige Solarized-Farben korrigieren PR #142670
- @neeleshb (Neelesh Bodas): Falsches Label für "zum vorherigen Problem gehen" korrigieren PR #143823
- @satokaz (Kazuyuki Sato): Header-Vorschläge im Markdown-Pfad-IntelliSense dekodieren PR #142392
- @SNDST00M (M.U.N.I.N): Optionale Verzeichnissyntax in Dateisymbolthemen hinzufügen PR #140079
- @stefanhaller (Stefan Haller): #142028 beheben PR #142930
- @surajteggi: Tippfehler korrigieren PR #142185
- @thebinarysearchtree (Andrew Jones): Einrückung beheben PR #141997
- @weartist (Han): multiLinePasteWarning im VSCode-Terminal implementieren, #122683 beheben PR #141822
- @y-tsutsu (y-tsutsu)
- Befehle zeigen übersetzte und ursprüngliche Namen im Befehls-Palette an. PR #142524
- Aktionskategorie korrigieren PR #142911
- @Yash621 (Yash Goel): Doppelte Anmeldungen bei der Einstellungen-Synchronisierung behoben PR #142340
- @zardoy (Vitaly): Korrekten Linkpfad für tsconfig.extends auflösen PR #141062
Beiträge zu vscode-css-languageservice
Beiträge zu vscode-languageserver-node
- @dsherret (David Sherret): feat: aussagekräftigere Fehlermeldung, wenn childProcess.spawn fehlschlägt PR #888
Beiträge zu debug-adapter-protocol
- @apupier (Aurélien Pupier): Debug-Adapter für Apache Camel hinzufügen PR #245
- @eshelyaron (Eshel Yaron): SWI-Prolog DAP-Implementierung zu adapters.md hinzufügen PR #248
- @hyangah (Hyang-Ah Hana Kim): sdks.md aktualisieren * go-dap einschließen PR #241
- @lukaszsamson (Łukasz Samson): Link zur Elixir DAP-Implementierung hinzufügen PR #243
- @Ricbet (John): OpenSumi zu den Implementierungswerkzeugen hinzufügen PR #247
Beiträge zu language-server-protocol
- @zwpaper (Wei Zhang): Sprach-ID zur Konsistenz verwenden PR #1409
Beiträge zu monaco-editor
- @Dan1ve (Daniel Veihelmann): Vite-Beispielcode mit Firefox kompatibel machen PR #2991
- @philipturner (Philip Turner):
@noDerivative-Modifikator zu Swift hinzufügen PR #2957