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

August 2021 (Version 1.60)

Update 1.60.1: Das Update behebt diese Probleme.

Update 1.60.2: Das Update behebt diese Probleme.

Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Willkommen zur August 2021-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:

Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.

Seien Sie live dabei bei der Livestream-Übertragung des VS Code-Teams am Donnerstag, den 2. September um 8 Uhr Pazifikzeit (16 Uhr London), um eine Demo der Neuheiten dieser Version zu sehen und live Fragen zu stellen.

Insiders: Möchten Sie neue Funktionen so schnell wie möglich ausprobieren? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.

Workbench

Automatische Spracherkennung

In der letzten Version haben wir eine experimentelle Funktion für unbenannte Dateien eingeführt, die den Sprachmodus der Datei automatisch anhand ihres Inhalts festlegte. Die Funktion zur automatischen Spracherkennung verwendet maschinelles Lernen, um die Sprache zu erraten, und das ML-Modell läuft vollständig lokal auf Ihrem Rechner. Das Modell wird von der Open-Source-ML-Bibliothek Tensorflow.js und dem ML-Modell von Guesslang des GitHub-Users @yoeo angetrieben.

In dieser Version aktivieren wir die automatische Spracherkennung standardmäßig und erweitern die Erkennung so, dass auch Dateien ohne Dateiendung einbezogen werden. In Notebooks bieten wir über die Sprachauswahl eine einfache Möglichkeit, die Spracherkennung anzufordern.

Wir haben diese Funktion hinzugefügt, da wir festgestellt haben, dass einige neue Benutzer von VS Code nicht wussten, wie sie den Sprachmodus einstellen können, und nicht wussten, dass dies für die Nutzung der reichhaltigen Funktionen von VS Code (Sprach-Farbgebung und Extension-Empfehlungen) erforderlich ist. Wenn neue Benutzer schnell die für VS Code verfügbaren Sprachfunktionen und Erweiterungen sehen können, hilft ihnen dies beim Einarbeiten in den Editor.

Darüber hinaus müssen Power-User, die unbenannte Texteditoren als Scratchpad verwenden, den Sprachmodus nicht mehr explizit festlegen, was hoffentlich ihren Workflow optimiert.

Im Folgenden sind einige unterhaltsame Szenarien aufgeführt, die durch die automatische Spracherkennung ermöglicht werden.

Beispiel online holen und in einen unbenannten Editor einfügen

Theme: Panda Theme

"Pipe to code" Spracherkennung (zeigt Erkennung von Dateien ohne Erweiterung)

Theme: Panda Theme

Auto-Detect-Option in der Notebook-Sprachauswahl

Theme: Panda Theme

Dialog zur Bestätigung des Terminal-Editors

Der Dialog, der beim Schließen eines Terminal-Editors mit laufenden Kind-Prozessen angezeigt wird, ist jetzt spezifisch für den Terminal-Editor und bietet keine Möglichkeit mehr, das Terminal zu "speichern".

Terminal editor confirmation dialog

Editoren geöffnet halten, anstatt sie zu schließen, wenn ihre Wiederherstellung fehlschlägt

Zuvor wurden Editoren, die nach einem Neuladen des Fensters oder einem Neustart der Anwendung nicht wiederhergestellt werden konnten, automatisch geschlossen, bis ein erfolgreich geladener Editor gefunden wurde. Dieses Verhalten führte zu frustrierenden Ergebnissen, bei denen ein sorgfältig erstelltes Editor-Layout aufgrund von geschlossenen Editoren verloren ging.

Mit dieser Version wird ein Editor, der einmal erfolgreich geöffnet wurde, nicht geschlossen, auch wenn seine Wiederherstellung fehlschlägt. Der Editor zeigt das Problem an und bietet an, den Vorgang erneut zu versuchen.

Keep editors open and offer to Try Again

Syntaxhervorhebung von Codeblöcken im Einstellungseditor

Abgegrenzte Codeblöcke in Einstellungsbeschreibungen werden nun mit Syntaxhervorhebung versehen.

Syntax highlighting of TypeScript code in the Settings editor

Einstellungen-Editor rechts öffnen

Es ist jetzt möglich, den Einstellungen-Editor in einer Seitenleiste zu öffnen, indem Sie eine Tastenkombination mit dem Argument openToSide konfigurieren.

{
  "key": "cmd+,",
  "command": "workbench.action.openSettings",
  "args": {
    "openToSide": true
  }
}

Dies funktioniert auch mit dem Befehl workbench.action.openSettingsJson.

Editor

Hochleistungs-Klammerpaar-Farbgebung

Der Editor unterstützt jetzt native Klammerpaar-Farbgebung.

Side by side comparison with bracket pair colorization on and off

Die Klammerpaar-Farbgebung kann durch Setzen von "editor.bracketPairColorization.enabled": true aktiviert werden. Alle Farben sind thematisierbar und bis zu sechs Farben können konfiguriert werden.

Wir haben diese Funktion implementiert, um Leistungsprobleme der berühmten Bracket Pair Colorizer Extension von CoenraadS zu beheben.

Jetzt werden selbst Änderungen in riesigen Dokumenten sofort widergespiegelt.

Inline-Vorschläge in Autovervollständigung

Inline-Vorschläge können nun die Vorschau von Vorschlägen erweitern, wenn das Autovervollständigungs-Widget angezeigt wird. Wenn ein im Autovervollständigungs-Widget ausgewählter Vorschlag durch einen Inline-Vervollständigungsanbieter erweitert werden kann, wird die Erweiterung kursiv angezeigt. Ein einmaliges Drücken von Tab akzeptiert immer noch nur den Autovervollständigungs-Vorschlag. Ein zweites Drücken von Tab akzeptiert dann den Inline-Vorschlag.

Diese Funktion erfordert, dass die Vorschau von Vorschlägen aktiviert ist ("editor.suggest.preview": true).

Aktualisierte Peek-Ansichten

Wir haben die Peek-Ansichten visuell überarbeitet, um sie an den Rest der anderen Editor-Ansichten anzupassen.

Peek view for informational items

Peek view for warning items

Peek view for error items

Peek view for References view

Terminal

Benutzerdefinierte Darstellung von Linien- und Blockelementzeichen

Linien- und Blockelementzeichen verwenden nun pixelgenaue benutzerdefinierte Glyphen anstelle der Schriftart, wenn GPU-Beschleunigung aktiviert ist (terminal.integrated.gpuAcceleration). Das bedeutet zum Beispiel, dass Kästen ohne Lücken gezeichnet werden, selbst wenn Sie die Zeilenhöhe oder den Buchstabenabstand im Terminal einstellen.

Terminal glyph rendering before with gaps Terminal glyph rendering after without gaps

Hier ist ein Beispiel für die Terminal-App Zenith, die die Linienzeichen um Abschnitte sowie Blockelemente für die Diagramme zeigt.

Terminal rendering box characters and block elements

Dies kann durch Setzen von "terminal.integrated.customGlyphs": false deaktiviert werden.

Verbesserte Darstellung des Unterstrichs für bestimmte Schriftarten

Es gab einige historische Probleme mit der Darstellung des Unterstrichs im Terminal, von denen die meisten durch den Wechsel zum WebGL-Renderer (Standard) behoben wurden. Eine Ausnahme war, dass das Unterstrichzeichen in der Schriftart unterhalb der Zellgrenzen unter Linux unerwartet gezeichnet wurde.

Beachten Sie, wie der Unterstrich in der unteren Zeile unterhalb der Zelle gerendert wird.

The underscore was previously rendered 1 pixel below the cell's bounds

Dies funktioniert zwar in den meisten Fällen gut, schlägt aber in der untersten Zeile fehl, da er außerhalb der Grenzen der Leinwand gezeichnet wird.

Wir umgehen dieses Problem nun, indem wir eine solche Schriftart erkennen und die Unterstrich-Textur nach oben verschieben, bis sie innerhalb der Zellgrenzen liegt. Diese Lösung gilt auch für den Canvas-Renderer, der früher keine Unterstriche für Zeilen anzeigte, da er die Zeilen beschneidet, um Überlappungen zu vermeiden.

The underscore is now at the bottom of the cell's bounds

Schnellere Wiederverbindung nach dem Neuladen des Fensters

Zuvor dauerte es beim Neuladen eines Fensters bis zu 300 ms, um den Zustand des Terminal-Puffers zu parsen, und es gab auch die Möglichkeit von Beschädigungen. Bei mehreren stark genutzten Terminals kann sich das schnell summieren! Um dies zu beheben, wurde die Methode zur Wiederherstellung des Puffers von der Aufzeichnung einer großen Anzahl kürzlicher Roh-Terminal-Ereignisse auf dem pty host auf die Beibehaltung eines headless Terminal-Frontends auf dem pty host und das Schreiben aller Daten dorthin geändert.

Dieser Ansatz bringt mehrere Vorteile:

  • Die Menge an Scrollback, die wiederhergestellt werden muss, kann fein abgestimmt werden. Standardmäßig sind es jetzt 100, was ein gutes Gleichgewicht zwischen Geschwindigkeit und Datenmenge darstellt. Die Scrollback-Menge kann mit der Einstellung terminal.integrated.persistentSessionScrollback geändert werden.
  • Dank des schnellen Parsers von xterm.js sollte dies minimale Auswirkungen auf die CPU-Auslastung haben und die Gesamtspeichernutzung auf dem pty host reduzieren.
  • Terminal-Modi werden nun explizit wiederhergestellt, was zuvor möglicherweise übersehen wurde und zu Pufferbeschädigungen führen konnte.
  • Es ist nicht mehr notwendig, kostspielige Größenänderungsereignisse erneut abzuspielen, da der Terminal-Puffer immer mit seiner Größe synchron ist.
  • Da die Wiederherstellung relativ schnell erfolgt, wird alles in einem einzigen Frame verarbeitet. Dies bedeutet, dass keine wertvolle CPU-Zeit mit dem Rendern des teilweise wiederhergestellten Terminals verschwendet wird und die Dinge langsamer werden.

Wie stark diese neue Implementierung die Geschwindigkeit erhöht, hängt von vielen Faktoren ab, wie der Anzahl der Terminals, der Hardware, der Terminal-Puffergröße und dem, was im Terminal geschah. Eine grobe Schätzung der Wiederherstellung eines vollständigen Terminal-Puffers sollte eine Beschleunigung von etwa 5-10x ergeben.

Wir haben auch das neue xterm-headless Paket auf npm veröffentlicht, sodass Sie diese Arbeit auch in Ihren eigenen Projekten nutzen können.

Debugging

Wert im WATCH-Fenster setzen

Es ist nun möglich, den Wert eines überwachten Ausdrucks im WATCH-Fenster über die Aktion Wert setzen im Kontextmenü festzulegen.

Shows WATCH view with the Set Value action selected in the context menu

Debug-Erweiterungen müssen diese Funktion opt-in machen, damit Wert setzen verfügbar ist. Derzeit unterstützen die JS-Debug-, C#- und C++-Erweiterungen dies, aber wir erwarten, dass bald auch andere Debug-Erweiterungen folgen werden.

Kleinere UI-Verbesserungen

  • VS Code erkennt nun auch Links für Werte in den Ansichten VARIABLEN, WATCH und Debug-Hover. Wenn der Wert einer Variablen ein Link ist, wird es durch Klicken darauf einfacher, diesem Link zu folgen.

  • Beim Starten einer weiteren Instanz einer bereits laufenden Debug-Sitzung gibt es nun einen modalen Bestätigungsdialog, um das versehentliche Starten zweier Sitzungen zu verhindern.

  • Das Klicken auf einen deaktivierten Breakpoint in der Breakpoint-Rinne des Editors aktiviert nun den Breakpoint, anstatt ihn zu entfernen.

  • Wenn eine Debug-Sitzung aktiv ist, ist die Aktion Ausführen bis Zeile nun im Kontextmenü der Breakpoint-Rinne des Editors verfügbar.

Neue Einstellungen

  • Wenn Sie vermeiden möchten, das Fenster versehentlich während einer Debug-Sitzung zu schließen, können Sie die neue Einstellung debug.confirmOnExit aktivieren. Wenn diese auf always gesetzt ist, werden Sie aufgefordert, die Beendigung der Debug-Sitzung zu bestätigen, wenn Sie das Fenster schließen.

    Confirm quit while debugging

  • Eine neue Einstellung debug.console.acceptSuggestionOnEnter steuert, ob Vorschläge in der Debug-Konsole mit Enter akzeptiert werden sollen. Enter wird auch verwendet, um alles einzugeben, was in der Debug-Konsole getippt wird, sodass diese Option Benutzern mehr Kontrolle darüber gibt, was beim Drücken von Enter passiert.

JavaScript-Debugging

Alte Node-Debugger sind weg

VS Code enthielt lange Zeit einen integrierten Node.js-Debugger und veröffentlichte einen separaten Chrome-Debugger. Letztes Jahr haben wir einen neuen Debugger für Node.js und Chrome eingeführt, und seit VS Code 1.47 (Juli 2020) ist dieser der Standard mit einer "Opt-out"-Option.

Mit dieser Version wurden die alten Debugger aus dem Produkt entfernt und auf dem Marketplace als veraltet gekennzeichnet. Wenn Sie zu der Mehrheit der VS Code-Benutzer gehören, die sich nicht gegen den neuen JavaScript-Debugger entschieden haben, wird sich für Sie nichts ändern.

Wenn Sie die alten Debugger benötigen – zum Beispiel zum Debuggen von Node.js 6-Programmen – können Sie die [Deprecated] Node Debug oder [Deprecated] Debugger for Chrome Erweiterung installieren und die Launch-Typen legacy-node bzw. legacy-chrome verwenden.

Verbessertes Stepping in asynchronen Funktionen und Node.js-Interna

Sie können die skipFiles des Debuggers einstellen, um das Stepping in bestimmten Codes, einschließlich Node.js-Interna, zu vermeiden, die beim Stepping um asynchrone Funktionen herum häufig erreicht werden.

Node.js verhält sich jedoch nicht immer korrekt, wenn es um "blackboxed" Skripte geht. Daher haben wir in dieser Iteration "synthetisches Blackboxing" im Debugger eingeführt. Dies sollte zu einer deutlich verbesserten Zuverlässigkeit bei der Arbeit mit Node.js-Programmen führen, insbesondere beim Stepping in asynchrone Funktionen.

In unserer nächsten Version planen wir, Node.js-Interna standardmäßig zu überspringen.

Installer

VS Code standardmäßig für unterstützte Dateitypen registrieren

Windows 11 führt ein neues Kontextmenü im Datei-Explorer ein, das Öffnen mit an den Anfang des Menüs stellt und mit Öffnen gruppiert. Das Update erleichtert das Auffinden aller verfügbaren Editoren und das Ändern von Standardeinstellungen.

Entsprechend den neuen Best Practices wird das Kontrollkästchen von VS Code VS Code als Editor für zugeordnete Dateitypen registrieren während der Windows-Installation standardmäßig aktiviert sein. Wir haben auch die Liste der zugeordneten Dateitypen überprüft und erweitert, um weitere häufig geöffnete Dateitypen aufzunehmen.

Microsoft Store unter Windows 11

Mit dem kommenden Windows 11 kann der neue Microsoft Store mehr traditionelle Anwendungstypen und Installer unterstützen. Wenn Sie Windows 11 bereits über das Windows Insider-Programm testen, können Sie die neueste Version von VS Code ab sofort installieren, indem Sie sie im Store suchen. Nach der Installation haben Sie denselben VS Code, der als Benutzerinstallation von unserer Website verfügbar ist, und Updates werden wie heute in der App behandelt.

Notebooks

Notebooks unterstützen jetzt Links zwischen Markdown-Zellen.

Sie können einen Link zu einer Überschrift in einer Markdown-Zelle erstellen mit

[Link text](#_header-slug)

header-slug ist der Kleinbuchstaben-Text der Überschrift, wobei Leerzeichen oder Sonderzeichen durch - ersetzt werden. Der Link im obigen Beispiel führt zur Überschrift # Header Slug.

Leistungsverbesserungen bei der Verarbeitung großer Ausgaben

Wir haben optimiert, wie wir mit großen Ausgaben in Notebooks umgehen, um die Leistung erheblich zu verbessern.

Im Hintergrund speichert VS Code Notebook-Ausgaben als Binärdaten mithilfe von Uint8Arrays. Zuvor wurden beim Übertragen von Ausgabedaten zwischen dem Extension-Host-Prozess und dem Renderer-Prozess die Daten zuerst in ein Array von Zahlenwerten umgewandelt und dann als JSON serialisiert.

Um zu verstehen, warum dies schlecht für die Leistung ist, betrachten wir ein Notebook, das den Text ausgibt: Hello Code!. Dies wird intern als Uint8Array gespeichert.

new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);

Diese Daten sind 11 Bytes lang. Die alte Implementierung würde dann die Binärdaten in eine JSON-Zeichenkette umwandeln.

'[72,101,108,108,111,32,67,111,100,101,33]';

Diese Zeichenkette ist 41 Bytes lang, was mehr als 3,5-mal so groß ist wie unsere ursprünglichen Daten! Das sind viele zusätzliche Bytes, die übertragen werden müssen, und der Empfänger muss diese Zeichenkette nun als JSON parsen, um sie wieder in ein Uint8Array umzuwandeln. Dieses Parsen kann zu einem erheblichen Engpass für Notebook-Ausgaben werden, die Dutzende von MB groß sind.

Mit der neuen Implementierung bleiben Notebook-Ausgaben beim Übertragen als Binärdaten erhalten. Details zur Implementierung finden Sie in der Pull Request.

Diese Korrektur verbessert erheblich sowohl das Laden von Notebooks mit gespeicherten großen Ausgaben als auch die Leistung, wenn Notebooks während der Ausführung große Ausgaben generieren.

Verbesserung des onNotebook-Aktivierungsereignisses

VS Code löst onNotebook:{type}- und onNotebook:*-Ereignisse aus, wenn ein Notebook im Arbeitsbereich geöffnet wird, damit Notebook-Erweiterungen aktiviert werden können, wenn sie auf diese Ereignisse lauschen. Zuvor wartete VS Code, bis alle Erweiterungen, die auf diese beiden Ereignisse lauschen, einen Datei geöffnet hatten. Jetzt wartet es nur noch darauf, dass der Serializer für das spezifische Notebook registriert wird. Wenn Benutzer beispielsweise eine ipynb-Datei in einem frischen Arbeitsbereich öffnen, wird die integrierte ipynb-Serializer-Erweiterung aktiviert und die Datei sofort geöffnet. Gleichzeitig löst VS Code Aktivierungsereignisse für alle anderen Erweiterungen aus, z. B. für die Jupyter-, .NET Interactive- oder Julia-Erweiterungen. Die Aktivierung anderer Erweiterungen verlangsamt Dateioperationen nicht, um ein schnelles Öffnen von Notebooks zu gewährleisten.

Notebook-Layout-Anpassung

Sie können die Einstellungen für das Notebook-Layout jetzt direkt über die Editor-Symbolleiste anpassen.

Notebook layout customization actions available in the editor toolbar

Sprachfunktionen

TypeScript 4.4

VS Code enthält nun TypeScript 4.4. Dieses Update bringt Unterstützung für eine Reihe neuer Sprachfunktionen und Verbesserungen, darunter statische Blöcke und neue Striktheitsoptionen. Es enthält auch neue Tooling-Verbesserungen und behebt einige wichtige Fehler.

Sie können alles über TypeScript 4.4 auf dem TypeScript-Blog lesen.

Inlay-Hinweise für JavaScript und TypeScript

Die bedeutendste neue Tooling-Funktion in TypeScript 4.4 ist die Unterstützung für Inlay-Hinweise. Inlay-Hinweise fügen zusätzliche Inline-Informationen zum Quellcode hinzu, um das Verständnis des Codes zu erleichtern.

Parameter-Namens-Inlay-Hinweise zeigen beispielsweise die Namen von Parametern in Funktionsaufrufen an.

Parameter name inlay hints

Dies kann Ihnen helfen, die Bedeutung jedes Arguments auf einen Blick zu verstehen, was besonders hilfreich für Funktionen ist, die boolesche Flags annehmen oder Parameter haben, die leicht verwechselt werden können.

Um Parameter-Namens-Hinweise zu aktivieren, setzen Sie die Einstellungen javascript.inlayHints.parameterNames.enabled oder typescript.inlayHints.parameterNames.enabled. Es gibt drei mögliche Werte:

  • none - Deaktivieren Sie Parameter-Inlay-Hinweise.
  • literals - Zeigen Sie Inlay-Hinweise nur für Literale (String, Zahl, Boolean) an.
  • all - Zeigen Sie Inlay-Hinweise für alle Argumente an.

Darüber hinaus bietet VS Code Inlay-Hinweise, die implizite Typinformationen in Ihrem JavaScript- und TypeScript-Code anzeigen.

Inline-Hinweise für Variablentypen zeigen die Typen von Variablen an, die keine expliziten Typannotationen haben.

Einstellungen - javascript.inlayHints.variableTypes.enabled und typescript.inlayHints.variableTypes.enabled

Variable type inlay hints

Inline-Hinweise für Eigenschaftstypen zeigen den Typ von Klasseneigenschaften an, die keine explizite Typannotation haben.

Einstellungen - javascript.inlayHints.propertyDeclarationTypes.enabled und typescript.inlayHints.propertyDeclarationTypes.enabled

Property type inlay hints

Parametertyp-Hinweise zeigen die Typen von implizit typisierten Parametern an.

Einstellungen - javascript.inlayHints.parameterTypes.enabled und typescript.inlayHints.parameterTypes.enabled

Parameter type inlay hints

Rückgabetyp-Inline-Hinweise zeigen die Rückgabetypen von Funktionen an, die keine explizite Typannotation haben.

Einstellungen - javascript.inlayHints.functionLikeReturnTypes.enabled und typescript.inlayHints.functionLikeReturnTypes.enabled

Return type inlay hints

Wir planen, Inlay-Hinweise weiter zu verbessern, teilen Sie also bitte jegliches Feedback mit, das Sie zu der neuen Funktion haben! Teilen Sie jegliches Feedback!

Rechtschreibvorschläge in JavaScript-Dateien

VS Code hilft Ihnen nun, einfache Rechtschreibfehler in JavaScript-Dateien zu erkennen.

Spelling suggestions in a plain JS files

Rechtschreibvorschläge werden nur angezeigt, wenn eine ziemlich hohe Wahrscheinlichkeit besteht, dass es sich um tatsächliche Fehler handelt und nicht nur um Code-Muster, die unsere IntelliSense-Engine nicht versteht. Weitere Details hierzu finden Sie in der PR, die die Funktion hinzugefügt hat.

Sie können diese Vorschläge auch deaktivieren, indem Sie

"javascript.suggestionActions.enabled": false

Für eine umfassendere Prüfung versuchen Sie, vollständige semantische Prüfung in Ihrem JavaScript-Code zu aktivieren. Dies kann nicht nur helfen, mehr Fehler zu erkennen, sondern auch mehrere hilfreiche Quick Fixes zu ermöglichen.

typescript.tsserver.useSyntaxServer

Die neue Einstellung typescript.tsserver.useSyntaxServer ermöglicht es Ihnen zu steuern, ob TypeScript einen dedizierten Server startet, um syntaxbezogene Operationen, wie die Berechnung der Code-Faltung, schnell zu verarbeiten. Sie ersetzt die nun veraltete Einstellung typescript.tsserver.useSeparateSyntaxServer.

Mögliche Werte sind:

  • auto - Startet sowohl einen vollständigen Server als auch einen leichteren Server für Syntaxoperationen. Der Syntax-Server wird verwendet, um Syntaxoperationen wie Code-Faltung zu beschleunigen und IntelliSense bereitzustellen, während Projekte geladen werden. (Standard)
  • always - Verwenden Sie einen leichteren Syntax-Server, um alle IntelliSense-Operationen zu verarbeiten. Dieser Syntax-Server kann nur IntelliSense für geöffnete Dateien bereitstellen.
  • never - Verwenden Sie keinen dedizierten Syntax-Server. Verwenden Sie einen einzelnen Server, um alle IntelliSense-Operationen zu verarbeiten.

Vorschau-Funktionen

Gesperrte Editor-Gruppen

Mit der Einführung von Terminals im Editorbereich erhielten wir Berichte von Benutzern, die frustriert waren, dass ein Terminal-Editor zu leicht oder versehentlich durch einen Datei-Editor ersetzt wurde. Standardmäßig werden Dateien immer in der aktiven Editor-Gruppe geöffnet, und somit öffnete sich eine Datei und versteckte das Terminal, auch wenn ein Terminal aktiv war.

Gesperrte Editor-Gruppen bieten eine neue Methode zur Bewältigung dieses Problems, nicht nur für Terminals, sondern für jeden Editor. Wenn Sie mehr als eine Editor-Gruppe geöffnet haben, können Sie diese jetzt sperren, entweder über einen der neuen Befehle oder über das Überlaufmenü "...".

Lock Group action on the editor context menu

Gesperrte Gruppen verhalten sich anders als entsperrte Gruppen.

  • Neue Editoren werden nicht in einer gesperrten Gruppe geöffnet, es sei denn, sie werden explizit vom Benutzer dorthin verschoben (z. B. per Drag & Drop).
  • Wenn ein Editor eine gesperrte Gruppe zum Öffnen überspringt, wird er entweder in der zuletzt verwendeten entsperrten Gruppe geöffnet oder eine neue Gruppe neben der gesperrten erstellt.
  • Der gesperrte Zustand einer Editor-Gruppe wird über Neustarts hinweg beibehalten und wiederhergestellt.
  • Sie können auch leere Gruppen sperren, was ein stabileres Editor-Layout ermöglicht.
  • Eine gesperrte Gruppe wird durch ein Schloss-Symbol in der Aktionsleiste (oben rechts) gekennzeichnet.

Locked editor group layout with lock icon

Sehen Sie sich die folgende Demo an, wie gesperrte Editor-Gruppen in Aktion funktionieren. Obwohl die Markdown-Vorschau aktiv ist, werden neue Dateien in der linken Editor-Gruppe geöffnet.

Die für diese Funktion hinzugefügten Befehle sind:

  • workbench.action.experimentalLockEditorGroup
  • workbench.action.experimentalUnlockEditorGroup
  • workbench.action.experimentalToggleEditorGroupLock

Ein neuer Kontextschlüssel activeEditorGroupLocked ist verfügbar, um Befehle bedingt zu binden, je nach dem gesperrten Zustand einer Gruppe.

Hinweis: Die zugehörige Einstellung und die Befehle sind experimentell, bis wir das Design der gesperrten Editor-Gruppen finalisiert haben. Wir möchten Ihr Feedback zu dieser neuen Funktion, also zögern Sie nicht, Probleme zu melden.

Editor-Gruppe automatisch sperren

Aufbauend auf dem neuen Konzept der gesperrten Editor-Gruppen ermöglicht die neue Einstellung workbench.editor.experimentalAutoLockGroups die Auswahl von Editoren, die eine Gruppe automatisch sperren sollen, wenn sie geöffnet werden. Dies gilt nur, wenn der Editor der erste ist, der in einer ansonsten leeren oder neuen Gruppe geöffnet wird.

Terminals sind standardmäßig so konfiguriert, dass sie eine neue Gruppe automatisch sperren. In dem kurzen Video unten, obwohl das Terminal aktiv ist, wird die ausgewählte Datei aus dem Terminal in der linken Editor-Gruppe geöffnet.

Wenn Sie möchten, dass Markdown-Vorschauen eine Gruppe automatisch sperren, können Sie mainThreadWebview-markdown.preview: true zur Einstellung experimentalAutoLockGroups hinzufügen.

In den nächsten Meilensteinen werden wir daran arbeiten, die Einstellungsoberfläche zu verbessern, um Editoren auswählen zu können, ohne ihre Identifikatoren kennen zu müssen. Die zugehörige Einstellung und die Befehle sind experimentell, bis wir das Design der gesperrten Editor-Gruppen finalisiert haben. Auch hier möchten wir Ihr Feedback.

Unterstützung für Anführungszeichen in der Schnellwahl "Nach Dateiname suchen"

In dieser Iteration haben wir die Möglichkeit hinzugefügt, Fuzzy-Suchergebnisse aus der Schnellwahl "Nach Dateiname suchen" (⌘P (Windows, Linux Ctrl+P)) auszuschließen, indem die Suchzeichenkette in Anführungszeichen gesetzt wird.

Szenarien, in denen dies glänzt:

Wenn eine Abfrage nur wenige Zeichen lang ist

Wenn Sie die "Unübersichtlichkeit" der Ergebnisse reduzieren möchten

Wir mögen diese Anführungszeichen-Erfahrung und sie fühlt sich intuitiv an, da die meisten Suchmaschinen einen ähnlichen Mechanismus verwenden, aber wir hätten gerne Ihr Feedback. Wir erwägen auch andere Ansätze, die in Issue #131431 diskutiert werden.

Beiträge zu Erweiterungen

Jupyter

Ausführen nach Zeile

VS Code unterstützt jetzt die Funktion Ausführen nach Zeile in Jupyter-Notebooks. Dies ist ein einfacher Debug-Modus, der es Ihnen ermöglicht, den Code einer Zelle zeilenweise auszuführen. Um es auszuprobieren, stellen Sie sicher, dass Sie ipykernel v6+ als Ihren ausgewählten Kernel installiert haben, und wählen Sie dann die Schaltfläche Ausführen nach Zeile.

Debugging

Es gibt auch experimentelle Unterstützung für das Debuggen von Jupyter-Notebooks mit den vollständigen Debug-Funktionen von VS Code. Um es auszuprobieren, stellen Sie sicher, dass Sie ipykernel v6+ als Ihren ausgewählten Kernel installiert haben, setzen Sie "jupyter.experimental.debugging": true, setzen Sie einen Breakpoint und wählen Sie den Befehl Zelle debuggen.

Jupyter-Tastaturbelegung

Wir haben die klassischen Jupyter-Tastaturbelegungen in eine separate Jupyter Keymap-Erweiterung extrahiert, die Sie deaktivieren können, wenn Sie eine andere Reihe von Notebook-Tastaturbelegungen vom Marktplatz verwenden möchten.

Python

Überarbeitete Testoberfläche

Dank der neuen Testing-API hat die Python-Erweiterung ihre Testfunktionen überarbeitet. Sie können nun eine stabilere Erfahrung für Test-Erkennung, -Navigation und -Status-Rendering genießen, sowie neue Funktionen wie Tests suchen, eine Auswahl von Tests ausführen, den zuletzt ausgeführten Test erneut ausführen und mehr!

Running tests with the new Python Test Explorer

Python-Dateien im Terminal vom Editor aus ausführen und debuggen

Sie können jetzt Ihre Python-Dateien mit der Python-Erweiterung direkt vom Editor aus im Terminal ausführen und debuggen.

GitHub Pull Requests und Issues

Die viel angefragte Möglichkeit, alle Kommentare in der GitHub Pull Requests and Issues-Erweiterung zu erweitern und zu reduzieren, ist nun verfügbar. Alle Kommentare können über die Befehle GitHub Pull Requests: Alle Kommentare erweitern und GitHub Pull Requests: Alle Kommentare reduzieren erweitert und reduziert werden. Es gibt auch eine Einstellung githubPullRequests.commentExpandState, um den Erweitern/Reduzieren-Status zu steuern. Schließlich können Sie auch alle Kommentare aus der Kommentierungs-UI heraus reduzieren.

Collapse all pull request comments button

Um alle neuen Funktionen und Updates zu erfahren, können Sie die vollständigen Änderungsprotokolle für die Version 0.30.0 der Erweiterung einsehen.

Erweiterungs-Authoring

Web-Erweiterungen

Wenn VS Code in einem Browser ausgeführt wird, werden Erweiterungen in einem Extension Host geladen, der ebenfalls im Browser läuft. Der "Web Extension Host" ist durch den Browser eingeschränkt und Erweiterungen haben keinen Zugriff auf das lokale Dateisystem oder plattformspezifische Funktionen. Um Autoren von Erweiterungen bei der Aktualisierung ihrer Erweiterungen für die Ausführung in VS Code im Web zu unterstützen, gibt es nun eine Web Extensions Authoring Guide. Hier erfahren Sie, welche Arten von Erweiterungen sich am besten im Web eignen, wie Sie auf die VS Code-APIs zugreifen und mit virtuellen Dateisystemen arbeiten können.

Zusammen mit dem Web Extension Guide bietet der yo code Extension Generator nun eine Option zum Erstellen einer Web Extension und enthält auch Unterstützung für das @vscode/test-web Modul zum Testen von Web Extensions über die Befehlszeile.

Wenn Sie Visual Studio Code für das Web noch nicht in Aktion gesehen haben, können Sie in der <> Code-Registerkarte eines GitHub-Repositorys die Taste . (Punkt) drücken und Sie starten eine webbasierte Version von VS Code, um den Quellcode zu durchsuchen und zu bearbeiten.

Kurztitel für Befehle

Der Befehl-Beitragspunkt ermöglicht Erweiterungen, UI-Eigenschaften für Befehle zu definieren, wie z. B. Titel, Kategorie oder Symbol. Menüs hingegen sind "Orte", die Befehle anzeigen, und Menüs können einige oder alle UI-Eigenschaften des Befehls darstellen. Beispielsweise rendern einige Menüs nur Symbole, während andere Titel oder Kategorien plus Titel rendern. Als Erweiterungsautor kann es schwierig sein, einen Befehlsttitel zu finden, der sowohl für globale als auch für lokale Menüs gut funktioniert. Die Befehlspalette kann beispielsweise mehr Wörter anzeigen als ein Kontextmenü.

Um unterschiedliche Titel zu ermöglichen, gibt es eine neue Eigenschaft shortTitle. Sie ermöglicht es Befehlen, einen kürzeren Titel bereitzustellen, der je nach Benutzeroberfläche gut funktioniert, wie z. B. Notebook: Alle Zellen-Ausgabe löschen in der Befehlspalette und ein kürzerer Titel Alles löschen in der Notebook-Symbolleiste.

Anwendungshost zum Umgebung-Namespace hinzugefügt

Der .env-Namespace enthält nun die Eigenschaft appHost des Anwendungshosts. appHost ermöglicht es Erweiterungsentwicklern zu bestimmen, in welcher Umgebung VS Code gehostet wird. Beispiele hierfür sind Desktop, GitHub Codespaces, github.dev und vscode.dev.

RendererContext.workspace.isTrusted für Notebook-Renderer

Die neue Eigenschaft workspace.isTrusted im Kontextobjekt, das an Notebook-Renderer übergeben wird, ermöglicht es Erweiterungsautoren zu prüfen, ob der aktuelle Arbeitsbereich vertrauenswürdig ist oder nicht.

import type { ActivationFunction } from 'vscode-notebook-renderer';

export const activate: ActivationFunction<void> = (ctx) => {
  return {
    renderOutputItem: (outputInfo, element) => {
      if (ctx.workspace.isTrusted) {
        // Render normally. Still take precautions to avoid script injection and
        // only enable as much functionality as your renderer needs.
      } else {
        // Only render safe content. Always make sure it has been properly sanitized.
      }
    }
  }
};

Plattformspezifische Erweiterungen

Wir haben Fortschritte bei plattformspezifischen Erweiterungen gemacht, die es Erweiterungsautoren ermöglichen, separate Erweiterungsversionen für verschiedene Plattformen (Windows, macOS, Linux) zu erstellen. Wir haben mit dem Marketplace-Team an dieser Funktion gearbeitet und eine Lösung finalisiert. In diesem Meilenstein haben wir mit der Implementierung begonnen und planen, sie bald den Erweiterungsautoren zur Verfügung zu stellen. Sie können Issue #23251 für Updates verfolgen und Feedback geben.

Aktualisierte Codicons

Die folgenden neuen Symbole wurden unserer Codicon-Bibliothek hinzugefügt

An example of updated codicons

  • Ordner-Bibliothek
  • Fehler ausführen

Aktualisierungen der Walkthrough-Beiträge

Verwendung von themenbezogenen SVGs als Medien für Walkthrough-Schritte

Walkthrough-Schritte können jetzt eine svg-Eigenschaft in ihrem media-Objekt angeben. Neben besserer Skalierungsunterstützung bieten SVGs Zugriff auf Thema-Tokens, die es den Medien ermöglichen, optisch zum Rest der Benutzeroberfläche zu passen. Weitere Informationen finden Sie in unserem Leitfaden zur Thematisierung von Webview-Inhalten.

Deklaration der interessanten Dateien für einen Walkthrough

Walkthroughs unterstützen jetzt einen optionalen Parameter featuredFor, der die Dateitypen auflistet, für die ein bestimmter Walkthrough gilt. Wenn diese Dateien in einem Arbeitsbereich gefunden werden, wird der Walkthrough mit höherer visueller Priorität angezeigt.

Task-Standardgruppen-API

Die Eigenschaft isDefault für TaskGroup wurde finalisiert. Erweiterungen können jetzt Aufgaben abrufen und dann die Eigenschaft isDefault der group einer Aufgabe lesen, um zu ermitteln, ob eine Aufgabe die Standardaufgabe für diese Gruppe ist.

Debugger-Erweiterungsentwicklung

Neue Eigenschaft "managedByParent" in "DebugSessionOptions"

Ein neues Flag managedByParent wurde dem Typ DebugSessionOptions hinzugefügt. Wenn es an die startDebugging API übergeben wird, steuert es, ob Lebenszyklusanfragen wie disconnect und restart an die neu erstellte Sitzung oder ihre übergeordnete Sitzung gesendet werden.

Eigenschaft "showUser" des Debug Adapter Protocols

Wenn eine launch-Anfrage fehlschlägt, wird VS Code nun die Eigenschaft showUser berücksichtigen, die mit der Antwort des Debug-Adapters gesendet wird. Wenn die Eigenschaft showUser vorhanden ist und false ist, wird VS Code kein modales Dialogfeld mit dem Fehler anzeigen. Falls die Eigenschaft showUser fehlt oder true ist, verhält sich VS Code wie bisher und zeigt das Fehlerdialogfeld an.

Für andere Debug Adapter Protocol (DAP)-Anfragen gibt es keine Änderung. Wenn showUser true ist, wird der Fehler über eine Benachrichtigung angezeigt. Andernfalls wird dem Benutzer nichts angezeigt.

VS Code registriert keine Breakpoints mehr für "noDebug"-Debug-Sitzungen

Wenn die Eigenschaft noDebug der DAP launch-Anfrage auf true gesetzt ist, ruft VS Code keine DAP-Anfragen zur Breakpoint-Registrierung mehr auf (setBreakpoints, setExceptionBreakpoints, setDataBreakpoints, setFunctionBreakpoints, setInstructionBreakpoints).

VS Code unterstützt jetzt die DAP "setExpression"-Anfrage

Wenn ein Debug-Adapter die setExpression-Anfrage implementiert (die supportsSetExpression-Fähigkeit ist true), verwendet VS Code setExpression in zwei Situationen:

  • In der VARIABLEN- und WATCH-Ansicht zum Ändern des Werts von Variablen, wenn der Debug-Adapter die Anfrage setVariable nicht unterstützt (die Fähigkeit supportsSetVariable fehlt oder ist false) und wenn die Variable eine Eigenschaft evaluateName hat und bearbeitbar ist (das Attribut readOnly in VariablePresentationHint ist nicht true).
  • In der WATCH-Ansicht zum Ändern des Werts eines zuweisbaren Ausdrucks, wenn der Watch-Ausdruck bearbeitbar ist (das Attribut readOnly in VariablePresentationHint ist nicht true).

Unterdrücken der Schaltfläche "launch.json öffnen" in DAP-Fehlermeldungen

Das Debug Adapter Protocol erlaubt es der Nachricht einer ErrorResponse, eine url zurückzugeben, wo zusätzliche Informationen zur Nachricht zu finden sind, und ein urlLabel, das dem Benutzer als UI zum Öffnen der URL präsentiert wird. Wenn VS Code die Nachricht dem Benutzer in einem modalen Dialog anzeigt, wird eine Schaltfläche mit der Beschriftung urlLabel angezeigt. Vor dieser Version fügte VS Code auch eine Schaltfläche mit der Beschriftung launch.json öffnen hinzu. Diese Schaltfläche wird nicht mehr hinzugefügt, wenn die url der Nachricht das 'command'-Schema verwendet, z. B. command:myExtension.fixError.

Debug Adapter Protocol

Neues "memory"-Ereignis veröffentlicht

Das memory-Ereignis wurde fertiggestellt und ist nun in Version 1.49 des Debug Adapter Protocols und den entsprechenden npm-Modulen verfügbar. Wenn ein Debug-Adapter den Wert true für die Fähigkeit supportsMemoryEvent der initialize-Anfrage erhalten hat, kann der Debug-Adapter das memory-Ereignis ausgeben, um anzuzeigen, dass ein Speicherbereich aktualisiert wurde.

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.json Ihrer 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.

Unterstützung für Typenhierarchie

Es gibt einen API-Vorschlag für einen TypeHierarchyProvider, der es Erweiterungen ermöglicht, Obertypen und Untertypen für Symbole bereitzustellen. Die API ist bereit zum Ausprobieren, und wenn Sie Probleme finden oder Vorschläge haben, können Sie diese im VS Code Repository einreichen.

Terminals überall erstellen

Die vorgeschlagene Terminal-Standort-API ermöglicht die Erstellung von Terminal-Splits sowohl im Panel als auch im Editorbereich.

Abfrage und Ereignis, ob ein Terminal "interagiert" wurde

Eine neue vorgeschlagene API für Terminal.state und window.onDidChangeTerminalState ermöglicht die Abfrage, ob mit einem Terminal "interagiert" wurde. Eine Interaktion bedeutet, dass Daten an den Prozess gesendet wurden, und kann aus verschiedenen Gründen erfolgen, wobei der wichtigste die Tastatureingabe ist.

Schaltflächen in QuickPickItems

Es gibt eine vorgeschlagene API zum Hinzufügen und Behandeln von Schaltflächen in einem QuickPickItem. Wir hoffen, dass dies es Erweiterungen ermöglicht, reichhaltigere Benutzerinteraktionen mit dem Quick Pick bereitzustellen.

Buttons in QuickPickItems

Probieren Sie es aus und lassen Sie uns wissen, was Sie denken. Eine Sache, die zu beachten ist, ist, dass es derzeit ein bekanntes Problem mit der Scroll-Position des Quick Pick gibt, das sich durch diese neue vorgeschlagene API wahrscheinlich verstärken wird. Wir arbeiten an den richtigen APIs, um dieses Problem zu beheben. Bitte teilen Sie uns Ihre Gedanken mit, indem Sie sich in das Issue einklinken.

Test-Tags

Test-Tags sind eine vorgeschlagene API, die sowohl eine Methode zur Organisation von Tests als auch zur Angabe, welche Tests ausführbar sind, bietet.

Nicht-Fehler-Testausgabe

Die Test-API unterstützt Testfehler-Nachrichten, hatte aber zuvor keine Möglichkeit, Nicht-Fehler-Ausgaben mit einem bestimmten Testfall zu verknüpfen. Wir evaluieren eine Möglichkeit, dies zu tun, indem wir ein optionales TestItem und location an die Methode TestRun.appendOutput übergeben. Bitte hinterlassen Sie Feedback zu Issue #129201, wenn Sie Anregungen haben!

Inline Completion Provider: Interaktion mit dem Autocomplete-Widget

Der InlineCompletionContext hat ein neues Feld selectedCompletionInfo, das Details zur aktuell ausgewählten Vorschlag im Autocomplete-Widget enthält. Außerdem werden InlineCompletionItemProviders für Inline-Vorschläge angefragt, wenn der Benutzer das ausgewählte Element im Autocomplete-Widget ändert. Wenn der Inline-Vorschlag das ausgewählte Vorschlagselement erweitert, wird die Erweiterung kursiv angezeigt.

Technik

Behebung der Unterstützung für RHEL7 und Centos7 Distros

In VS Code Version 1.53 haben wir unsere Build-Images aktualisiert, um neuere Electron-Versionen zu nutzen, was eine Änderung der CXXABI-Anforderungen für native Module verursachte und unsere RPM-Pakete in einigen Distros kaputt machte Issue #115784. Mit dem Update auf Electron v13 können wir unsere nativen Module nun mit der gleichen Compiler-Toolchain wie die Laufzeitumgebung kompilieren, insbesondere verwenden wir nun Clang und linken die libcxx statisch aus der Laufzeitumgebung. Dies ermöglicht es uns, die CXXABI-Anforderungen mit nur einer geringen Erhöhung der Binärdateigröße von ca. 10 MB zu umgehen und die Unterstützung für diese Distros wiederherzustellen. Vielen Dank für Ihre Geduld und Hilfe beim Testen auf Insiders.

Dokumentation

Julia in VS Code

Es gibt ein neues Thema Julia in Visual Studio Code, das die Unterstützung für die Julia-Programmiersprache in VS Code mit der Julia-Erweiterung beschreibt. Die Julia-Erweiterung bietet umfangreiche Sprachfunktionen wie Code-Vervollständigung, Code-Navigation und Debugging sowie eine integrierte REPL und einen Plot-Navigator.

Julia extension

Azure Machine Learning

Sie können die Übersicht Azure Machine Learning in VS Code lesen, um zu erfahren, wie die Azure Machine Learning-Erweiterung es Ihnen ermöglicht, mit cloudbasierten Machine-Learning-Modellen von Azure Machine Learning direkt aus VS Code zu arbeiten.

Bemerkenswerte Fehlerbehebungen

  • 82489: Falsche Tastatureingabe bei Verwendung der "AltGr"-Taste
  • 115945: Debug-Toolbar-Beiträge fehlen, wenn die Toolbar angedockt ist
  • 118196: Elemente in der Argumentliste werden beim Neustart der Debug-Sitzung nicht aktualisiert
  • 121201: Menüauswahl wird auf dem iPad nicht korrekt gerendert
  • 124128: Fenster zur Erweiterungsentwicklung wird beim Beenden des Debuggens nicht heruntergefahren
  • 125259: Debugging speichert launch.json nicht vor dem Start
  • 126102: SkipFiles öffnet die zu überspringende Datei immer noch temporär, was zu Verlangsamungen führt
  • 126911: Erweiterungsdebugging: Beenden der Debug-Sitzung schließt das Fenster nicht
  • 128484: Debuggen: Option zum Deaktivieren des modalen Dialogs bei Startfehlern
  • 129019: Treview wird geschlossen gestartet und benötigt ein weiteres Aktualisieren (oder erneutes Öffnen), um den Inhalt anzuzeigen
  • 129469: Das Eingabefeld des Einstellungen-Editors könnte größer sein
  • 129645: Aktivieren der Syntaxhervorhebung von Codeblöcken in der Einstellungen-UI
  • 129844: markdownEnumDescriptions entfernt keine Markdown-` ``` `##` ```-Tags in der Einstellungen-UI und keine ## in settings.json
  • 130265: Node-Debugger stoppt nicht bei nicht behandelter Promise-Ablehnung

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

Beiträge zu vscode

Beiträge zu vscode-generator-code

Beiträge zu vscode-js-debug

Beiträge zu vscode-pull-request-github

Beiträge zu debug-adapter-protocol

Beiträge zu language-server-protocol

Beiträge zu monaco-editor

Beiträge zu monaco-html

Beiträge zu monaco-languages

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