ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

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.

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.

Layout control with type set to both to show toggle buttons and menu dropdown

Helles Kontrast-Design

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

VS Code using Light High Contrast theme

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.

A screenshot of all available audio cue enablement settings

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.

Audio cue help command dropdown with the warning and breakpoint audio cues enabled

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

Screenshot of text with many false positives and one true positive

Danach wird nur das verwirrende Zeichen hervorgehoben

Screenshot of text with only one true positive

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.

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.

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.

Detecting a redeclaration of a const variable in a JavaScript file

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.quoteStyle
  • javascript.preferences.importModuleSpecifier, typescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEnding, typescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyle, typescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandProperties, typescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenames, typescript.preferences.useAliasesForRenames
  • javascript.suggest.enabled, typescript.suggest.enabled
  • javascript.suggest.completeJSDocs, typescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturns, typescript.suggest.jsdoc.generateReturns
  • javascript.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.

Image showing the Data Inspector to the right side of the hex bytes

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.

A command succeeds and a success decoration is placed to the left of the prompt. A command fails and an error decoration is placed to the left of the prompt. A placeholder decoration is to the left of no-op commands and the current command before it's been executed.

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

Command decoration context menu showing Re-run Command and Copy Output actions

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.

Command decoration hover displaying Show Command Actions option and information that the command executed 3 minutes ago and returned failed exit code 127

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.successBackground
  • terminalCommandDecoration.errorBackground
  • terminalCommandDecoration.defaultBackground

Hier sind die anderen Hauptänderungen:

  • Die Aktivierungseinstellung wurde in terminal.integrated.shellIntegration.enabled umbenannt.
  • 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+C oder 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.history konfiguriert 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.

JSON language status item linking to schema used for validation

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.

TypeScript inferred variable type  shown as inlay hint

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-Unten
  • Pfeil-Kreis-Nach-Links
  • Pfeil-Kreis-Nach-Rechts
  • Pfeil-Kreis-Nach-Oben
  • Fehler-klein
  • Einzug
  • Layout-Aktivitätsleiste-Links
  • Layout-Aktivitätsleiste-Rechts
  • Layout-Zentriert
  • Layout-Menüleiste
  • Layout-Panel-Mitte
  • Layout-Panel-Begründung
  • Layout-Panel-Links
  • Layout-Panel-Rechts
  • Layout-Panel
  • Layout-Seitenleiste-Links
  • Layout-Seitenleiste-Rechts
  • Layout-Statusleiste
  • Layout
  • Zeilenumbruch
  • Aufnahme-klein
  • target

Preview of updated icons

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 lazy wurde zu VariablePresentationHint hinzugefü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 detail wurde zu CompletionItem hinzugefü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:

  1. Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu package.json#enabledApiProposals hinzu.
  2. Verwenden Sie das neueste vscode-dts und führen Sie vscode-dts dev aus. Es lädt die entsprechenden d.ts-Dateien in Ihren Arbeitsbereich herunter.
  3. 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)

Fehlerverfolgung

Beiträge zu unserer Fehlerverfolgung

Pull-Anfragen

Beiträge zu vscode

Beiträge zu vscode-css-languageservice

Beiträge zu vscode-languageserver-node

Beiträge zu debug-adapter-protocol

Beiträge zu language-server-protocol

Beiträge zu monaco-editor

© . This site is unofficial and not affiliated with Microsoft.