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

November 2024 (Version 1.96)

Update 1.96.1: Das Update behebt diese Issues und ermöglicht den GitHub Copilot Free Plan.

Update 1.96.2: Das Update behebt diese Issues.

Update 1.96.3: Das Update behebt diese Issues.

Update 1.96.4: Das Update behebt diese Issues.

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


Willkommen zur November 2024-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. 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.

GitHub Copilot

GitHub Copilot Free Plan

Wir freuen uns, eine brandneue **kostenlose Stufe für GitHub Copilot** ankündigen zu können. Melden Sie sich für den GitHub Copilot Free Plan an, und alles, was Sie brauchen, ist ein GitHub-Konto. Sie haben Anspruch auf eine bestimmte Anzahl von Vervollständigungen und Chat-Interaktionen pro Monat, die sich jeden Monat zurücksetzen.

Sie können sich direkt aus VS Code heraus anmelden. Befolgen Sie die Anweisungen im Copilot Setup Guide.

Chat view shows the Copilot message and a button that enables you to sign in to use Copilot.

Erfahren Sie mehr über die Details und Bedingungen des Copilot Free Plans.

Copilot-Bearbeitungen

Im letzten Meilenstein haben wir Copilot Edits (derzeit in der Vorschau) eingeführt, mit dem Sie mehrere Dateien gleichzeitig mit natürlicher Sprache bearbeiten können. Seitdem haben wir die Erfahrung weiter verbessert. Sie können Copilot Edits ausprobieren, indem Sie das Copilot-Menü in der Kommandozentrale öffnen und dann "Copilot Edits öffnen" auswählen oder durch Auslösen von .

Fortschritt und Editor-Steuerelemente

Copilot Edits kann mehrere Änderungen in verschiedenen Dateien vornehmen. Sie können nun deutlicher den Fortschritt sehen, während Edits gestreamt werden. Und mit den Overlay-Steuerelementen des Editors können Sie einfach durch alle Änderungen blättern und diese akzeptieren oder verwerfen.

Chat-Sitzung in Copilot Edits verschieben

Sie können die Chat-Ansicht verwenden, um Ideen für Änderungen an Ihrem Code zu untersuchen. Anstatt einzelne Codeblöcke anzuwenden, können Sie nun die Chat-Sitzung in Copilot Edits verschieben, um alle Code-Vorschläge aus der Sitzung anzuwenden.

Edit with Copilot showing for a chat exchange.

Vorgeschlagene Dateien für den Arbeitsbereich

In Copilot Edits bestimmt der Arbeitsbereich die Dateien, für die Copilot Edits Änderungen vorschlagen kann. Um Ihnen beim Hinzufügen relevanter Dateien zum Arbeitsbereich zu helfen, kann Copilot Edits für ein Git-Repository nun zusätzliche Dateien vorschlagen, basierend auf den bereits hinzugefügten Dateien. Zum Beispiel wird Copilot Edits Dateien vorschlagen, die oft zusammen mit den bereits hinzugefügten Dateien geändert werden.

Copilot zeigt vorgeschlagene Dateien neben der Schaltfläche **Dateien hinzufügen** im Arbeitsbereich an. Sie können auch auf **Dateien hinzufügen** klicken und dann **Verwandte Dateien** auswählen, um aus einer Liste vorgeschlagener Dateien zu wählen.

Bearbeitungssitzungen nach Neustart wiederherstellen

Bearbeitungssitzungen werden nach einem Neustart von VS Code nun vollständig wiederhergestellt. Dies umfasst den Arbeitsbereich, den Akzeptanzstatus sowie den Dateistatus aller vergangenen Bearbeitungsschritte.

Zu Arbeitsbereich hinzufügen aus Explorer, Suche und Editor

Sie können Dateien mit der neuen Kontextmenüaktion **Datei zu Copilot Edits hinzufügen** zu Ihrem Copilot Edits-Arbeitsbereich hinzufügen. Dies gilt für Suchergebnisse in der Suchansicht und für Dateien in der Explorer-Ansicht. Darüber hinaus können Sie auch eine Textauswahl aus dem Kontextmenü des Editors an Copilot Edits anhängen.

Add a file from the explorer view to Copilot Edits

Debuggen mit Copilot

Das Konfigurieren des Debuggings kann schwierig sein, besonders wenn Sie mit einem neuen Projekt oder einer neuen Sprache arbeiten. In diesem Meilenstein führen wir einen neuen Terminalbefehl copilot-debug ein, der Ihnen beim Debuggen Ihrer Programme mit VS Code hilft. Sie können ihn verwenden, indem Sie dem Befehl, den Sie normalerweise ausführen würden, copilot-debug voranstellen. Wenn Sie beispielsweise Ihr Programm normalerweise mit dem Befehl python foo.py ausführen, können Sie jetzt copilot-debug python foo.py ausführen, um eine Debugging-Sitzung zu starten.

Nachdem Ihr Programm beendet ist, erhalten Sie Optionen zum erneuten Ausführen Ihres Programms oder zum Anzeigen, Speichern oder Generieren der von VS Code verwendeten Startkonfiguration für Ihr Programm.

Das Terminal zeigt Optionen zum erneuten Ausführen, Generieren, Speichern oder die Startkonfiguration nach einer Debugging-Sitzung an. Theme: Codesong (Vorschau auf vscode.dev)

Aufgabenunterstützung

Copilots Debugging-Funktionen, einschließlich copilot-debug und der /startDebugging-Absicht, generieren nun bei Bedarf preLaunchTasks für Code, der vor dem Debuggen einen Kompilierungsschritt benötigt. Dies ist oft bei kompilierten Sprachen wie Rust und C++ der Fall.

Kontext hinzufügen

Wir haben neue Möglichkeiten hinzugefügt, Symbole und Ordner als Kontext in Copilot Chat und Copilot Edits einzubeziehen, um die Referenzierung relevanter Informationen während Ihres Workflows zu erleichtern.

Symbole

Symbole können nun einfach zu Copilot Chat und Copilot Edits hinzugefügt werden, indem Sie sie aus der Gliederungsansicht oder den Breadcrumbs in die Chat-Ansicht ziehen.

Wir haben auch die Symbolvervollständigung in der Chat-Eingabe eingeführt. Durch Eingabe von # gefolgt vom Symbolnamen sehen Sie Vorschläge für Symbole aus Dateien, mit denen Sie kürzlich gearbeitet haben.

Um Symbole in Ihrem gesamten Projekt zu referenzieren, können Sie #sym verwenden, um eine globale Symbolauswahl zu öffnen.

Ordner

Ordner können nun als Kontext hinzugefügt werden, indem Sie sie aus dem Explorer, den Breadcrumbs oder anderen Ansichten in Copilot Chat ziehen.

Wenn ein Ordner in Copilot Edits gezogen wird, sind alle Dateien innerhalb des Ordners im Arbeitsbereich enthalten.

Copilot-Nutzungsdiagramm

VS Code-Erweiterungen können die VS Code API nutzen, um auf den Fähigkeiten von Copilot aufzubauen. Sie können nun ein Diagramm der Copilot-Nutzung einer Erweiterung in der Laufzeitstatusansicht sehen. Dieses Diagramm zeigt die Anzahl der Chat-Anfragen, die die Erweiterung in den letzten 30 Tagen gestellt hat.

Copilot usage graph in the Runtime Status view

Benutzerdefinierte Anweisungen für die Generierung von Commit-Nachrichten

Copilot kann Ihnen helfen, Commit-Nachrichten basierend auf Ihren vorgenommenen Änderungen zu generieren. In diesem Meilenstein haben wir Unterstützung für benutzerdefinierte Anweisungen bei der Generierung von Commit-Nachrichten hinzugefügt. Wenn Ihre Commit-Nachrichten beispielsweise einem bestimmten Format folgen müssen, können Sie dies in den benutzerdefinierten Anweisungen beschreiben.

Sie können die Einstellung github.copilot.chat.commitMessageGeneration.instructions verwenden, um entweder die benutzerdefinierten Anweisungen anzugeben oder eine Datei in Ihrem Arbeitsbereich anzugeben, die die benutzerdefinierten Anweisungen enthält. Diese Anweisungen werden dem Prompt hinzugefügt, der zur Generierung der Commit-Nachricht verwendet wird. Erhalten Sie weitere Informationen darüber, wie Sie benutzerdefinierte Anweisungen verwenden.

Inline-Chat

In diesem Meilenstein haben wir die Benutzererfahrung von Inline Chat weiter verbessert: Die Fortschrittsmeldung wurde dezenter gestaltet, während Änderungen gestreamt werden, sind Wellenlinien deaktiviert und erkannte Befehle werden schöner gerendert.

Außerdem haben wir unsere Pseudocode-Erkennung weiter verbessert und zeigen nun einen Hinweis an, dass Sie mit Inline Chat fortfahren können, wenn eine Zeile hauptsächlich natürliche Sprache enthält. Diese Funktionalität ermöglicht es Ihnen, Pseudocode in den Editor einzugeben, der dann als Prompt für Inline Chat verwendet wird. Sie können diesen Flow auch durch Drücken von auslösen.

Inline Chat hint for a line that is dominated by natural language.

Zusätzlich gibt es eine neue, experimentelle Einstellung, um einen Inline Chat-Hinweis auf leeren Zeilen anzuzeigen. Diese Einstellung kann über inlineChat.lineEmptyHint aktiviert werden. Standardmäßig ist diese Einstellung deaktiviert.

Terminal Chat

Terminal Inline Chat hat einen neuen Anstrich bekommen, der das Aussehen und Gefühl näher an das Editor Inline Chat bringt.

Terminal inline chat looks a lot like editor chat now

Hier sind einige weitere erwähnenswerte Verbesserungen:

  • Das Layout und die Positionierung des Widgets sind verbessert und verhalten sich im Allgemeinen besser.
  • Es gibt eine Modellwahl.
  • Die Schaltflächen unten sind nun konsistenter.

Leistungsverbesserungen für @workspace

Wenn Sie @workspace verwenden, um Copilot nach Ihrem aktuell geöffneten Arbeitsbereich zu fragen, müssen wir den Arbeitsbereich zunächst auf eine Reihe relevanter Code-Snippets reduzieren, die wir Copilot als Kontext übergeben können. Wenn Ihr Arbeitsbereich von einem GitHub-Repository gesichert wird, können wir diese relevanten Snippets schnell durch die GitHub-Code-Suche finden. Da der Code-Suchindex jedoch den Hauptzweig Ihres Repositories verfolgt, konnten wir uns bei lokalen Änderungen oder auf einem Branch nicht darauf verlassen.

In diesem Meilenstein haben wir daran gearbeitet, die Geschwindigkeitsvorteile der GitHub-Suche auf Branches und Pull-Requests zu übertragen. Das bedeutet, dass wir nun sowohl den Remote-Index basierend auf dem Hauptzweig Ihres Repositories durchsuchen als auch alle lokal geänderten Dateien durchsuchen. Dann werden diese Ergebnisse zusammengeführt, wodurch Copilot ein schneller und aktueller Satz von Snippets zur Verfügung steht. Sie können mehr über die GitHub-Code-Suche und deren Aktivierung erfahren.

Barrierefreiheit

Barrierefreiheitsignale für Code-Aktionen

Einige Code-Aktionen können lange dauern, z. B. ein Quick-Fix, der einen externen Dienst aufruft, um alternative Texte für Bilder zu generieren. Es ist möglicherweise nicht offensichtlich, wann sie ausgelöst oder wann sie vollständig angewendet wurden. Daher haben wir Barrierefreiheitsignale hinzugefügt, um anzuzeigen, dass eine Code-Aktion ausgelöst oder angewendet wurde.

Sie können diese Signale mit den Einstellungen accessibility.signals.codeActionTriggered und accessibility.signals.codeActionApplied aktivieren.

Automatische Fokusverwaltung in der REPL

Wir haben eine neue Einstellung eingeführt, um die Barrierefreiheit bei der Arbeit in der REPL zu verbessern. Mit accessibility.replEditor.autoFocusReplExecution können Sie nun festlegen, ob der Fokus unverändert bleibt (none), zur Eingabebox wechselt (input) oder zum zuletzt ausgeführten Block wechselt (lastExecution), wenn Code ausgeführt wird. Standardmäßig wechselt der Fokus zur Eingabebox.

Workbench

Verbesserte Erweiterungs-Suchergebnisse

Wenn Sie mit freiem Text in der Erweiterungsansicht nach Erweiterungen suchen, erscheinen installierte Erweiterungen nun am Anfang der Suchergebnisse. Dies erleichtert das Finden und Verwalten Ihrer installierten Erweiterungen beim Durchsuchen des Marktplatzes.

Installed extensions shown at top of search results.

Erweiterungen aus der Erweiterungsansicht herunterladen

Sie können nun Erweiterungen direkt aus VS Code herunterladen, indem Sie die Download-Aktion im Kontextmenü einer Erweiterung in der Erweiterungsansicht verwenden. Dies kann nützlich sein, wenn Sie eine Erweiterung herunterladen möchten, ohne sie zu installieren.

Context menu option to download an extension from the Extensions view.

Erweiterungs-Festplattenspeicher

Sie können nun die Speichernutzung einer Erweiterung auf der Festplatte im Erweiterungseditor sehen. Dies kann Ihnen helfen zu verstehen, wie viel Speicherplatz eine Erweiterung beansprucht.

Extension memory usage on disk shown in the Extensions view.

Verbesserungen bei der Suche im Explorer

In der September-Version haben wir die Möglichkeit eingeführt, Dateien im Explorer im gesamten Projekt zu finden, eine Funktion, die zuvor nicht verfügbar war. Dieses Update hat jedoch den Hervorhebungsmodus vorübergehend entfernt und bestimmte Aktionen eingeschränkt.

In dieser Version bringen wir den Hervorhebungsmodus zurück. Diese Funktion ermöglicht es Ihnen, Dateien und Ordner in Ihrem Arbeitsbereich einfach zu lokalisieren, wobei übereinstimmende Ergebnisse zur besseren Sichtbarkeit hervorgehoben werden. Darüber hinaus haben wir eine neue visuelle Anzeige für eingeklappte Ordner eingeführt, die anzeigt, ob sich darin Übereinstimmungen befinden.

Der Filter-Schalter bleibt verfügbar, sodass Sie sich nur auf Dateien und Ordner konzentrieren können, die Ihrer Abfrage entsprechen, indem Sie nicht übereinstimmende Elemente ausblenden. Wir haben auch alle Kontextmenüaktionen wieder aktiviert, die wir in einer früheren Version deaktivieren mussten.

Wir haben auch die Benutzererfahrung bei der Verwendung der Suchsteuerelemente verbessert. Wenn Sie zum Anfang des Dateiexplorers scrollen, wird oben zusätzlicher Platz geschaffen, sodass das Steuerelement Ihre Suchergebnisse nicht verdeckt.

The find control is rendered above the first file or folder in the explorer when scrolled to the top.

Ansichten zwischen primärer und sekundärer Seitenleiste verschieben

Sie konnten bereits einen Ansichtscontainer per Drag & Drop oder über den Befehl Ansicht verschieben an einen anderen Ort verschieben. Sie können nun direkt die Kontextmenüaktion "Verschieben nach" auf einem Ansichtscontainer verwenden, um ihn zwischen der primären Seitenleiste, der sekundären Seitenleiste oder dem Bereich "Panel" zu verschieben.

Navigationssteuerelemente im Titelbereich ausblenden

Manche Leute ziehen es vor, den Titelbereich so sauber wie möglich zu halten. Wir haben eine neue Einstellung workbench.navigationControl.enabled hinzugefügt, mit der Sie die Vorwärts-/Rückwärtstasten im Titelbereich ausblenden können.

Sie können diese Einstellung auch aufrufen, indem Sie mit der rechten Maustaste in den Titelbereich klicken und **Navigationssteuerelemente** auswählen.

Navigation Controls context menu when right-clicking the VS Code title area.

Editor

Verhalten beim Einfügen und Ablegen konfigurieren

Wenn Sie eine Datei per Drag & Drop oder Kopieren und Einfügen in einen Texteditor ziehen, bietet VS Code mehrere Möglichkeiten, sie in diese Datei einzufügen. Standardmäßig versucht VS Code, den Arbeitsbereichs-relativen Pfad der Datei einzufügen. Nun können Sie die Drop/Paste-Steuerung verwenden, um zu ändern, wie die Ressource eingefügt wird. Erweiterungen können auch benutzerdefinierte Edits bereitstellen, wie z. B. in Markdown, das Edits zum Einfügen von Markdown-Links bereitstellt.

Mit den neuen Einstellungen editor.pasteAs.preferences und editor.dropIntoEditor.preferences können Sie nun eine Präferenz für den standardmäßig verwendeten Edit-Typ angeben. Wenn Sie beispielsweise möchten, dass Kopieren/Einfügen immer den absoluten Pfad eingefügter Dateien einfügt, setzen Sie einfach

"editor.pasteAs.preferences": [
    "uri.path.absolute"
]

Diese Einstellungen sind geordnete Listen von Edit-Arten. Der erste passende Edit einer bevorzugten Art wird standardmäßig angewendet. Sie können weiterhin die Drop/Paste-Steuerung verwenden, um nach der Anwendung des Standard-Edits zu einer anderen Edit-Art zu wechseln.

Diese neuen Einstellungen spielen gut zusammen mit unserer neuen Unterstützung für Kopieren und Einfügen mit Importen in JavaScript und TypeScript. Diese Funktion fügt automatisch Importe hinzu, wenn Code zwischen JavaScript- oder TypeScript-Dateien kopiert und eingefügt wird. Um Ihre Workflows nicht zu stören, haben wir standardmäßig entschieden, dass beim Einfügen einfach nur Klartext eingefügt wird und Einfügen mit Importen als Option im Einfüge-Steuerelement angeboten wird. Wenn Sie jedoch möchten, dass VS Code immer versucht, mit Importen einzufügen, setzen Sie einfach

"editor.pasteAs.preferences": [
    "text.updateImports"
]

Nun versucht VS Code automatisch, mit Importen einzufügen, wenn möglich, und fällt auf das Einfügen von Klartext zurück, wenn kein "Einfügen mit Importen"-Edit verfügbar ist. Derzeit funktioniert dies nur für JavaScript und TypeScript, aber wir hoffen, dass in Zukunft weitere Sprachen Unterstützung erhalten werden.

Schließlich können Sie auch einen bevorzugten Einfügestil beim Einrichten einer editor.action.pasteAs-Tastenkombination angeben. Die folgende Tastenkombination versucht immer, mit Importen einzufügen und zu aktualisieren

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

Verlauf der Editor-Suche beibehalten

Die Suchleiste kann nun den Suchverlauf über Sitzungen hinweg speichern und über VS Code-Neustarts hinweg wiederherstellen. Der Suchverlauf wird pro Arbeitsbereich gespeichert und kann über die Einstellung editor.find.history deaktiviert werden.

Überschreibmodus

Wussten Sie, dass VS Code das Überschreiben von Text im Editor nicht unterstützte, es sei denn, Sie installierten das Vim-Keymap? Auf vielfachen Wunsch haben wir nun den Überschreibmodus hinzugefügt, um Text im Editor zu überschreiben, anstatt ihn beim Tippen einzufügen. Ein nützliches Szenario hierfür ist die Bearbeitung von Markdown-Tabellen, bei denen Sie die Tabellenzellengrenzen schön ausgerichtet halten möchten.

Dieser Modus kann mit dem Befehl Ansicht: Überschreib-/Einfügemodus umschalten oder durch Drücken der Taste Einfg auf Ihrer Tastatur umgeschaltet werden. Wenn Sie sich im Überschreibmodus befinden, zeigt die Statusleiste eine OVR-Anzeige an.

Es ist möglich, den Cursorstil im Überschreibmodus mit der Einstellung editor.overtypeCursorStyle zu ändern. Darüber hinaus gibt es eine Einstellung editor.overtypeOnPaste, die bestimmt, ob das Einfügen im Überschreibmodus überschreiben oder einfügen soll. Das Standardverhalten ist das Einfügen von eingefügtem Text.

Quellcodeverwaltung

Git-Schuldinformationen (experimentell)

In diesem Meilenstein haben wir experimentelle Unterstützung für die Anzeige von Schuldinformationen mithilfe von Editor-Dekorationen und einem Statusleistenelement hinzugefügt. Sie können diese Funktionalität mithilfe der Einstellungen git.blame.editorDecoration.enabled und git.blame.statusBarItem.enabled aktivieren. Sie können über die Schuldinformationen schweben, um weitere Commit-Details anzuzeigen.

Sie können das Format der Nachricht, die im Editor und in der Statusleiste angezeigt wird, mit den Einstellungen git.blame.editorDecoration.template und git.blame.statusBarItem.template anpassen. Sie können Variablen für die gängigsten Informationen verwenden. Beispielsweise zeigt die folgende Vorlage den Betreff des Commits, den Namen des Autors und das Datum des Autors relativ zu jetzt an.

{
  "git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}

Wenn Sie die Farbe der Editor-Dekoration anpassen möchten, verwenden Sie die Theme-Farbe git.blame.editorDecorationForeground.

Probieren Sie diese experimentelle Funktion aus und teilen Sie uns Ihre Meinung mit.

Titelaktionen im Quellcodeverwaltungsdiagramm

Basierend auf Benutzerfeedback haben wir die Aktionen "Pull" und "Push" wieder in die Titelleiste der Quellcodeverwaltungsdiagrammansicht integriert. Diese Aktionen sind aktiviert, wenn die aktuelle Verweis auf das Verlaufselement im Quellcodeverwaltungsdiagramm angezeigt wird.

Wenn Sie diese Aktionen oder andere Aktionen aus der Titelleiste der Quellcodeverwaltungsdiagrammansicht nicht verwenden möchten, können Sie mit der rechten Maustaste auf die Titelleiste klicken und sie ausblenden.

Source Control Graph title actions and context menu to hide specific items.

Notebooks

Auswahlhervorhebung über Zellen hinweg

Die Auswahlhervorhebung wird nun in Notebooks unterstützt und ermöglicht die textbasierte Hervorhebung über mehrere Zellen hinweg. Dies wird mit der bereits vorhandenen Einstellung editor.selectionHighlight gesteuert.

Mehrfachcursor: Alle Vorkommen des Suchtreffers auswählen

Notebooks unterstützen nun die Tastenkombination für Alle Vorkommen des Suchtreffers auswählen. Diese ist über die Befehls-ID notebook.selectAllFindMatches zu finden und kann standardmäßig mit der Tastenkombination ⇧⌘L (Windows, Linux Ctrl+Shift+L) verwendet werden.

Zellen in Abschnitt für Markdown ausführen

Notebooks haben nun die Aktion Zellen in Abschnitt ausführen, die in der Zellen-Toolbar von Markdown-Zellen verfügbar ist. Wenn die Markdown-Zelle einen Header hat, werden alle Zellen innerhalb des Abschnitts und der untergeordneten Abschnitte ausgeführt. Wenn kein Header vorhanden ist, werden alle Zellen im umgebenden Abschnitt ausgeführt, sofern möglich.

Ausführlichkeitsgrad der Zellenausführungszeit

Die Informationen zur Ausführungszeit in der Zellen-Statusleiste bieten nun eine Option für erhöhte Ausführlichkeit. Dies kann mit der Einstellung notebook.cellExecutionTimeVerbosity eingeschaltet werden und kann neben der Dauer auch den Ausführungszeitstempel anzeigen.

Verbose cell execution time within cell status bar.

Terminal

Ligaturenunterstützung

Ligaturen werden nun im Terminal unterstützt, unabhängig davon, ob GPU-Beschleunigung verwendet wird. Diese Funktion kann mit der Einstellung terminal.integrated.fontLigatures aktiviert werden.

Fonts that support ligatures like ->, ==>, and so on will now visually look like single characters

Um diese Funktion nutzen zu können, stellen Sie außerdem sicher, dass Sie eine Schriftart verwenden, die Ligaturen unterstützt, terminal.integrated.fontFamily.

Neue Variablen zur Anpassung von Terminal-Tabs

Welcher Text in Terminal-Tabs angezeigt wird, wird durch die Einstellungen terminal.integrated.tabs.title und terminal.integrated.tabs.description bestimmt, die die Verwendung einer Sammlung von Variablen ermöglichen. Wir unterstützen nun die folgenden neuen Variablen:

  • ${shellType} - Der erkannte Typ der Shell, die im Terminal verwendet wird. Dies ähnelt dem Standardwert, ändert sich aber nicht z. B. zu git, wenn ein Git-Befehl ausgeführt wird.

  • ${shellCommand} - Der Befehl, der im Terminal ausgeführt wird. Dies erfordert Shell-Integration.

    alt text

  • ${shellPromptInput} - Der im Terminal ausgeführte Befehl oder die aktuell erkannte Prompt-Eingabe. Dies erfordert Shell-Integration.

    Typing "echo hello" in the terminal will show "echo hello|" in the tab when configured

Befehl zuletzt ausführen zeigt nun die Quelldatei des Verlaufs an

Die Shell-Integrationsfunktion "Befehl zuletzt ausführen" enthält nun vollständige Header für die Quelle des Befehls, einschließlich der Verlaufsdatei, wo relevant, und einer praktischen Schaltfläche zum Öffnen.

alt text

Die Standard-Tastenkombination für diesen Befehl ist Strg+Alt+R.

Links im Format /pfad/zur/datei.ext, <zeile> sollten nun im Terminal als Links erkannt werden.

Testen

Zuschreibbare Abdeckung

In diesem Meilenstein haben wir eine API fertiggestellt, die es Erweiterungen ermöglicht, eine Abdeckung pro Test bereitzustellen, sodass Sie genau sehen können, welcher Code von einem bestimmten Test ausgeführt wurde. Wenn eine zuschreibbare Abdeckung verfügbar ist, ist ein Filterknopf in der Testabdeckungsansicht, in Editor-Aktionen, in der Testabdeckungs-Toolbar (wenn aktiviert über den Befehl Test: Test Coverage Toolbar) oder einfach durch Verwendung des Befehls Test: Abdeckung nach Test filtern verfügbar.

Theme: Codesong (Vorschau auf vscode.dev)

Überarbeitete Inline-Fehlermeldungen

Wir haben Testfehlermeldungen überarbeitet, um sie sowohl auffälliger als auch weniger aufdringlich zu gestalten. Dies ist besonders nützlich für geschäftige Szenarien, wie z. B. in Diff-Ansichten von SCM oder Copilot Edits. Das Auswählen der Fehlermeldung öffnet immer noch eine Peek-Ansicht, um die vollständigen Details des Fehlers anzuzeigen.

Image of new test error messages in the editor.

Verbesserungen an der Benutzeroberfläche für kontinuierliches Ausführen

Zuvor wurde der globale Status von kontinuierlichen Testläufen, der über das "Auge"-Symbol in der Test Explorer-Ansicht umgeschaltet werden kann, kontinuierliche Ausführung mit den Standard-Ausführungsprofilen ein- oder ausgeschaltet.

Wir haben die Benutzeroberfläche für kontinuierliches Ausführen überarbeitet, um ein Dropdown-Menü aufzunehmen, mit dem kontinuierliche Ausführung individuell pro Profil ein- oder ausgeschaltet werden kann. Das Auswählen des Indikators schaltet den zuletzt verwendeten Satz von Ausführungsprofilen ein oder aus.

Sprachen

TypeScript 5.7

Unsere JavaScript- und TypeScript-Unterstützung verwendet nun TypeScript 5.7. Dieses große Update enthält eine Reihe von Sprach- und Tooling-Verbesserungen sowie wichtige Fehlerbehebungen und Leistungsoptimierungen.

Sie können alles über die TypeScript 5.7-Version im TypeScript-Blog lesen. Wir haben auch einige Tooling-Highlights in den folgenden Abschnitten aufgenommen.

Einfügen mit Importen für JavaScript und TypeScript

Haben Sie es satt, nach dem Verschieben von Code zwischen Dateien Importe hinzufügen zu müssen? Probieren Sie die Funktion "Mit Importen einfügen" für TypeScript 5.7+ aus. Immer wenn Sie Code zwischen JavaScript oder TypeScript kopieren und einfügen, kann VS Code Importe für den eingefügten Code hinzufügen.

Beachten Sie, dass nicht nur Importe hinzugefügt werden, sondern sogar ein neuer Export für eine lokale Variable hinzugefügt wurde, die im eingefügten Code verwendet wurde!

Obwohl wir glauben, dass diese Funktion eine enorme Zeitersparnis bedeutet, sind wir uns auch bewusst, dass sie Ihren bestehenden Workflow stören könnte. Deshalb haben wir standardmäßig beibehalten, dass Kopieren und Einfügen immer nur den eingefügten Text einfügt. Wenn ein Mit Importen einfügen-Edit verfügbar ist, sehen Sie dann die Einfüge-Steuerung, die es Ihnen ermöglicht, das Mit Importen einfügen-Edit auszuwählen.

Paste control that shows options to insert plain text or paste with imports.

Wenn Sie bevorzugen, immer mit Importen einzufügen, können Sie die neue Einstellung editor.pasteAs.preferences verwenden.

"editor.pasteAs.preferences": [
    "text.updateImports"
]

Dies versucht immer, mit Importen einzufügen, wenn ein Edit verfügbar ist.

Sie können auch eine Tastenkombination einrichten, um mit Importen einzufügen, falls verfügbar.

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

Wenn Sie es bevorzugen, können Sie sogar das Gegenteil tun und das Einfügen mit Importen zur Standardeinstellung machen und eine Tastenkombination zum Einfügen als Klartext hinzufügen.

"editor.pasteAs.preferences": [
    "text.updateImports"
]
{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.plain"]
  }
}

Schließlich können Sie zum vollständigen Deaktivieren von Importieren mit Einfügen die Optionen typescript.updateImportsOnPaste.enabled und javascript.updateImportsOnPaste.enabled verwenden.

Remote-Entwicklung

Die Remote Development Extensions ermöglichen es Ihnen, einen Dev Container, einen Remote-Computer über SSH oder Remote Tunnels oder das Windows Subsystem for Linux (WSL) als vollwertige Entwicklungsumgebung zu nutzen.

Zu den Highlights gehören

  • remote-ssh Copilot-Chat-Teilnehmer
  • Erweiterte Sitzungsprotokollierung

Weitere Informationen zu diesen Funktionen finden Sie in den Release Notes für Remote Development.

Enterprise-Support

Zulässige Erweiterungen konfigurieren

Sie können jetzt steuern, welche Erweiterungen in VS Code installiert werden können, indem Sie die Einstellung extensions.allowed verwenden. Diese Einstellung ermöglicht es Ihnen, zulässige oder blockierte Erweiterungen nach Herausgeber, bestimmten Erweiterungen und Versionen anzugeben. Wenn eine Erweiterung oder Version blockiert ist, wird sie deaktiviert, falls sie bereits installiert ist. Sie können die folgenden Arten von Erweiterungsauswahlen angeben:

  • Alle Erweiterungen eines Herausgebers zulassen oder blockieren
  • Bestimmte Erweiterungen zulassen oder blockieren
  • Bestimmte Erweiterungsversionen zulassen
  • Bestimmte Erweiterungsversionen und Plattformen zulassen
  • Nur stabile Versionen einer Erweiterung zulassen
  • Nur stabile Erweiterungsversionen eines Herausgebers zulassen

Der folgende JSON-Schnipsel zeigt Beispiele für die verschiedenen Einstellungswerte

"extensions.allowed": {
    // Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
    "microsoft": true,

    // Allow all extensions from the 'github' publisher
    "github": true,

    // Allow prettier extension
    "esbenp.prettier-vscode": true,

    // Do not allow docker extension
    "ms-azuretools.vscode-docker": false,

    // Allow only version 3.0.0 of the eslint extension
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // Allow multiple versions of the figma extension
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // Allow version 5.0.0 of the rust extension on Windows and macOS
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // Allow only stable versions of the GitHub Pull Requests extension
    "github.vscode-pull-request-github": "stable",

    // Allow only stable versions from redhat publisher
    "redhat": "stable"
}

Herausgeber anhand ihrer Herausgeber-ID angeben. Wenn ein Schlüssel keinen Punkt (.) enthält, wird er als Herausgeber-ID betrachtet. Wenn ein Schlüssel einen Punkt enthält, wird er als Erweiterungs-ID betrachtet. Die Verwendung von Platzhaltern wird derzeit nicht unterstützt.

Sie können microsoft als Herausgeber-ID verwenden, um sich auf alle von Microsoft veröffentlichten Erweiterungen zu beziehen, auch wenn diese möglicherweise unterschiedliche Herausgeber-IDs haben.

Versionsbereiche werden nicht unterstützt. Wenn Sie mehrere Versionen einer Erweiterung zulassen möchten, müssen Sie jede Version einzeln angeben. Um Versionen weiter nach Plattform einzuschränken, verwenden Sie das Symbol @, um die Plattform anzugeben. Beispiel: "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]. Weitere Details finden Sie in der Enterprise-Dokumentation.

Administratoren können diese Einstellung auch über Gruppenrichtlinien unter Windows konfigurieren. Weitere Informationen finden Sie im Abschnitt Gruppenrichtlinien unter Windows in der Enterprise-Dokumentation.

VS Code mit vorinstallierten Erweiterungen einrichten

Sie können VS Code mit einer Reihe von vorinstallierten Erweiterungen (Bootstrapping) einrichten. Diese Funktionalität ist nützlich, wenn Sie ein Maschinen-Image, eine virtuelle Maschine oder eine Cloud-Workstation vorbereiten, auf der VS Code vorinstalliert ist und bestimmte Erweiterungen sofort für Benutzer verfügbar sind.

Hinweis: Die Unterstützung für die Vorinstallation von Erweiterungen ist derzeit nur unter Windows verfügbar.

Befolgen Sie diese Schritte, um Erweiterungen zu bootstrappen

  1. Erstellen Sie einen Ordner bootstrap\extensions im VS Code-Installationsverzeichnis.

  2. Laden Sie die VSIX-Dateien für die Erweiterungen herunter, die Sie vorinstallieren möchten, und legen Sie sie im Ordner bootstrap\extensions ab.

  3. Wenn ein Benutzer VS Code zum ersten Mal startet, werden alle Erweiterungen im Ordner bootstrap\extensions im Hintergrund leise installiert.

Benutzer können vorinstallierte Erweiterungen weiterhin deinstallieren. Ein Neustart von VS Code nach der Deinstallation einer Erweiterung installiert die Erweiterung nicht neu.

Beiträge zu Erweiterungen

Python

Python-Umgebungs-Erweiterung

In dieser Version stellen wir die Python-Umgebungs-Erweiterung vor, die jetzt als Vorschau im Marketplace verfügbar ist.

Diese Erweiterung vereinfacht die Verwaltung von Python-Umgebungen und bietet eine Benutzeroberfläche zum Erstellen, Löschen und Verwalten von Umgebungen sowie zur Paketverwaltung für die Installation und Deinstallation von Paketen.

Sie ist so konzipiert, dass sie sich nahtlos über verschiedene APIs mit Ihren bevorzugten Umgebungsmanagern integriert. Sie unterstützt standardmäßig globale Python-Interpreter, venv und Conda. Entwickler können Erweiterungen erstellen, um Unterstützung für ihre bevorzugten Python-Umgebungsmanager hinzuzufügen und sich mit unserer Erweiterungs-Benutzeroberfläche zu integrieren, wodurch Funktionalität und Benutzererfahrung verbessert werden.

Sie können die Python-Umgebungen im Marketplace herunterladen und mit der Vorabversionsversion der Python-Erweiterung verwenden.

Verbesserungen bei Python-Tests

  • Das Argument --rootdir für pytest wird jetzt dynamisch angepasst, basierend auf der Anwesenheit einer Einstellung python.testing.cwd in Ihrem Arbeitsbereich.
  • Ein Neustart einer Test-Debugging-Sitzung führt jetzt nur die angegebenen Tests erneut aus.
  • Die Abdeckungsunterstützung wurde aktualisiert, um NoSource-Ausnahmen zu behandeln.
  • Das pytest-describe-Plugin wird mit Test-Erkennung und -Ausführung in der Benutzeroberfläche unterstützt.
  • Testing Rewrite nutzt jetzt FIFO anstelle von UDS für die Interprozesskommunikation, sodass Benutzer pytest-Plugins wie pytest_socket in ihrem eigenen Testdesign nutzen können.
  • Rewrite nähert sich dem Standardstatus: Diese Veröffentlichung behebt das letzte bekannte Problem im Test-Rewrite. Wenn keine weiteren Probleme auftreten, wird das Rewrite-Experiment deaktiviert und das Rewrite wird Anfang 2025 zum Standard.

Verbesserungen an der Python REPL

  • Fokus auf dem Editor belassen nach Smart-Send an Native REPL
  • Verbesserte Behandlung nach dem Neuladen für Native REPL
  • Fehler bei der Einrückung für Python 3.13 im VS Code-Terminal beheben

Pylance "vollständiger" Sprachservermodus

Die Einstellung python.analysis.languageServerMode unterstützt jetzt auch den Modus full, sodass Sie die vollständige Funktionalität von Pylance und die umfassendste IntelliSense-Erfahrung nutzen können. Es ist erwähnenswert, dass dies auf Kosten geringerer Leistung geht, da es Pylance, insbesondere in großen Codebasen, ressourcenintensiv machen kann.

Die Einstellung python.analysis.languageServerMode ändert nun die Standardwerte der folgenden Einstellungen, je nachdem, ob sie auf light, default oder full gesetzt ist

Einstellung light default full
python.analysis.exclude ["**"] [] []
python.analysis.useLibraryCodeForTypes false true true
python.analysis.enablePytestSupport false true true
python.analysis.indexing false true true
python.analysis.autoImportCompletions false false true
python.analysis.showOnlyDirectDependenciesInAutoImport false false true
python.analysis.packageIndexDepths [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] { "name": "", "depth": 4, "includeAllSymbols": true }
python.analysis.regenerateStdLibIndices false false true
python.analysis.userFileIndexingLimit 2000 2000 -1
python.analysis.includeAliasesFromUserFiles false false true
python.analysis.functionReturnTypes false false true
python.analysis.pytestParameters false false true
python.analysis.supportRestructuredText false false true
python.analysis.supportDocstringTemplate false false true

TypeScript

Erweiterbare Hover-Funktion für TypeScript (experimentell)

In diesem Meilenstein haben wir es möglich gemacht, erweiterte/reduzierte Informationen vom TS-Server anzuzeigen. Die Erweiterung verwendet die API für erweiterbare Hover, um +- und --Markierungen im Hover-Fenster des Editors anzuzeigen, um mehr oder weniger Informationen anzuzeigen.

Die experimentelle Einstellung kann über typescript.experimental.expandableHover aktiviert werden. Damit diese Einstellung funktioniert, müssen Sie TypeScript-Version 5.8 oder höher verwenden. Sie können die TypeScript-Version über den Befehl TypeScript: TypeScript-Version auswählen... ändern.

Microsoft-Konto verwendet jetzt MSAL (mit WAM-Unterstützung unter Windows)

Um eine starke Sicherheitsbasis für die Microsoft-Authentifizierung zu gewährleisten, haben wir die Microsoft Authentication Library in die Microsoft Account-Erweiterung übernommen.

Eines der herausragenden Merkmale dieser Arbeit ist die WAM (Web Account Manager... auch bekannt als Broker) Integration. Vereinfacht gesagt, anstatt für Microsoft-Authentifizierungsflüsse in den Browser zu gehen, kommunizieren wir jetzt direkt mit dem Betriebssystem, was der empfohlene Weg ist, eine Microsoft-Authentifizierungssitzung zu erhalten. Außerdem ist es schneller, da wir die Konten nutzen können, bei denen Sie bereits im Betriebssystem angemeldet sind.

An authentication popup that the OS shows over VS Code.

Bitte teilen Sie uns mit, ob Sie Probleme mit diesem neuen Fluss feststellen. Wenn Sie ein größeres Problem feststellen und zum alten Microsoft-Authentifizierungsverhalten zurückkehren müssen, können Sie dies mit microsoft-authentication.implementation (indem Sie sie auf classic setzen und VS Code neu starten) tun. Beachten Sie jedoch, dass diese Einstellung nicht mehr lange verfügbar sein wird. Öffnen Sie also ein Issue, wenn Sie Probleme mit dem MSAL-Fluss haben.

Erweiterungsentwicklung

@vscode/chat-extension-utils

Unsere Chat- und Language Model-Erweiterungs-APIs sind seit mehreren Monaten verfügbar, um Erweiterungsautoren die Integration mit GitHub Copilot zu ermöglichen. Wir haben jedoch festgestellt, dass die Arbeit mit LLMs und der Aufbau hochwertiger Chat-Erweiterungen inhärent komplex ist, insbesondere wenn Sie die Tool-Aufrufe nutzen möchten.

Wir haben ein npm-Paket, @vscode/chat-extension-utils, veröffentlicht, das es so einfach wie möglich machen soll, einen Chat-Teilnehmer einzurichten. Es übernimmt mehrere Aufgaben, die Sie sonst selbst erledigen müssten, sodass Ihr Chat-Teilnehmer in wenigen Codezeilen implementiert werden kann. Das Paket enthält auch eine Sammlung nützlicher, hochwertiger Elemente für die Verwendung mit @vscode/prompt-tsx.

Die vollständige Dokumentation finden Sie im chat-extension-utils Repository und sehen Sie es in Aktion in der Beispiel-Chat-Erweiterung. Unsere neuen LanguageModelTool API Docs beschreiben ebenfalls die Verwendung.

Attributable Coverage API

Die Test-Coverage-APIs ermöglichen es Erweiterungen nun, Coverage-Informationen pro Test bereitzustellen. Um diese API zu implementieren, füllen Sie die Eigenschaft includesTests?: TestItem[] auf der FileCoverage aus, um anzugeben, welche Tests Code in dieser Datei ausgeführt haben, und implementieren Sie TestRunProfile.loadDetailedCoverageForTest, um Statement- und Deklarations-Coverage bereitzustellen.

Sehen Sie sich den Abschnitt Attributable Coverage oben für ein Beispiel an, wie dies für Benutzer aussieht.

Beitragen zu einem JavaScript Debug Terminal

Der JavaScript-Debugger verfügt jetzt über einen Mechanismus, mit dem andere Erweiterungen an der Erstellung von JavaScript Debug Terminals teilnehmen können. Dies ermöglicht Frameworks oder Laufzeitumgebungen außerhalb von Node.js, das Debugging am selben vertrauten Ort zu aktivieren. Weitere Informationen finden Sie in der Dokumentation zu JavaScript Debugger.

Proxy-Unterstützung für die Node.js fetch API

Die globale fetch-Funktion verfügt jetzt über aktivierte Proxy-Unterstützung (http.fetchAdditionalSupport). Dies ist ähnlich wie das https-Modul, das bereits Proxy-Unterstützung hatte.

Vorschau-Features

Code einfügen, um Chat-Kontext anzuhängen

Zuvor konnten Sie bereits Dateien als Kontext an Copilot Chat anhängen. Für eine feinere Kontrolle über den Kontext können Sie jetzt ein Codefragment einfügen, um es als Kontext für den Chat anzuhängen. Dies fügt die erforderlichen Dateinformationen und die entsprechenden Zeilennummern hinzu. Sie können nur Code aus Dateien im aktuellen Arbeitsbereich einfügen.

Um dies auszuprobieren, kopieren Sie Code und fügen Sie ihn in Inline Chat, Quick Chat oder die Chat-Ansicht ein. Wählen Sie das eingefügte Steuerelement aus und wählen Sie Angefügter Code. Alternativ können Sie die Einstellung editor.pasteAs.preferences setzen

"editor.pasteAs.preferences": [
    "chat.attach.text"
]

Attaching code as context in Copilot Chat using the paste control.

Terminal-Vervollständigungen für mehr Shells

Wir haben in früheren Iterationen experimentelle Unterstützung für Terminal-Vervollständigungen in pwsh hinzugefügt. In dieser Version haben wir begonnen, diese auf andere Shells auszuweiten. Derzeit zielen wir speziell auf bash und zsh ab, aber da dieser neue Ansatz von einer Extension Host API angetrieben wird, planen wir eine allgemeine Unterstützung für die meisten Shells.

Sie können die aktuelle Arbeit in progress ausprobieren, indem Sie terminal.integrated.suggest.enabled und terminal.integrated.suggest.enableExtensionCompletions setzen. Derzeit werden nur Argumente für cd, code und code-insiders unterstützt.

The command  is typed on the terminal, which shows suggestions. Then  is typed and options are provided,  is selected. Completions are requested with ctrl+space and all locales are shown.  is typed and the list is filtered to  and .

Vorgeschlagene APIs

Vorgeschlagene Wertauswahl-API für Quick Pick

Für InputBox konnten Sie die "Wertauswahl" festlegen, die es Ihnen ermöglicht, Teile oder den gesamten Input programmatisch auszuwählen. In diesem Meilenstein haben wir eine vorgeschlagene API für die Wertauswahl in einem QuickPick hinzugefügt.

Hier ist ein Beispiel, wie das aussehen könnte

const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];
qp.items = [
  { label: '12345678', description: 'desc 1' },
  { label: '12345678', description: 'desc 2' },
  { label: '12345678', description: 'desc 3' }
];
qp.show();

A couple of characters are selected in the quick pick's input box.

Probieren Sie den valueSelectionInQuickPick-Vorschlag aus und lassen Sie uns wissen, was Sie denken, in diesem GitHub-Issue!

Vorgeschlagene Native Window Handle API

In diesem Meilenstein haben wir eine neue vorgeschlagene API hinzugefügt, um das native Fensterhandle des fokussierten Fensters abzurufen. Das native Fensterhandle ist ein Betriebssystemkonzept, das im Wesentlichen einen Zeiger auf ein bestimmtes Fenster bereitstellt. Dies ist nützlich, wenn Sie mit nativem Code interagieren und beispielsweise einen nativen Dialog über einem Fenster rendern möchten.

declare module 'vscode' {
  export namespace window {
    /**
     * Retrieves the native window handle of the current active window.
     * This will be updated when the active window changes.
     */
    export const nativeHandle: Uint8Array | undefined;
  }
}

Dies wurde speziell für die Übernahme von MSAL durch Microsoft-Authentifizierung hinzugefügt, damit wir das native Handle an das Betriebssystem übergeben können, damit es einen Authentifizierungsdialog über VS Code rendert.

Wenn Sie einen Anwendungsfall oder Feedback für den nativeWindowHandle-Vorschlag haben, lassen Sie uns wissen, was Sie denken, in diesem GitHub-Issue!

Technik

Optimierte Erweiterungsupdates mit vscode-unpkg-Dienst

Um die Last auf der Marketplace-Infrastruktur zu reduzieren, verwendet VS Code jetzt den neu hinzugefügten Endpunkt des vscode-unpkg-Dienstes, um auf Erweiterungsupdates zu prüfen. Der Dienst implementiert serverseitiges Caching mit einem TTL von 10 Minuten, was die Anzahl direkter Anfragen an den Marketplace erheblich reduziert. Die Optimierung wird über die Einstellung extensions.gallery.useUnpkgResourceApi gesteuert (standardmäßig aktiviert).

Wenn Sie Probleme mit Erweiterungsupdates feststellen, können Sie diese Funktionalität mit extensions.gallery.useUnpkgResourceApi deaktivieren und zu direkten Marketplace-Versionsprüfungen zurückkehren.

Grundlagen für GPU-Beschleunigung im Editor

Wir freuen uns, Ihnen mitteilen zu können, dass wir mit der Arbeit an der Aktivierung der GPU-Beschleunigung im Editor begonnen haben, ähnlich wie im Terminal. Die Ziele dieser Bemühungen sind die Verbesserung des gesamten Codierungserlebnisses, hauptsächlich durch Reduzierung der Eingabelatenz und Verbesserung der Scroll-Leistung.

Dies ist noch früh und noch nicht zum Testen bereit, aber wir wollten einige Details über die erzielten Fortschritte mitteilen

  • Der GPU-Renderer verwendet im Hintergrund WebGPU.
  • Wir konzentrieren uns derzeit auf Funktionsparität und Korrektheit gegenüber der Leistung.
  • Es gibt einen Fallback-Mechanismus, wenn die GPU-Beschleunigung aktiviert ist, der es Zeilen ermöglicht, auf DOM-Rendering zurückzufallen, wenn es nicht vollständig unterstützt wird. Das bedeutet, dass wir frühzeitig selbst hosten können und derzeit inkompatible Zeilen stattdessen über den DOM-Ansatz angezeigt werden. Einige Beispiele für Zeilen, die derzeit zurückfallen: Zeilen mit über 200 Zeichen, Zeilen mit bestimmten Monaco-Dekorationen (z. B. Verblassen von ungenutzten Variablen), Zeilen mit Umbrüchen usw.
  • Monacos Inline-Dekorationen, die das Styling der tatsächlichen Elemente, die die Zeichen enthalten, ermöglichen, stellten eine große Herausforderung für diese Funktion dar, da sie mit CSS gestylt werden. Der Ansatz, den wir verwenden, um die meisten Inline-Dekorationen zu unterstützen, ohne die API zu brechen oder zu ändern, besteht darin, das an diese Dekorationen angehängte CSS zu erkennen und dann eine Teilmenge gängiger CSS-Eigenschaften zu unterstützen und bei Nichtunterstützung aller Stile zurückzufallen.

Hier ist ein Screenshot der Funktion in Aktion. Beachten Sie, dass die gelbe Linie in der Seitenleiste uns mitteilt, welche Zeilen Fallback-Rendering verwenden. Dieser spezielle Fall verwendet Fallback-Rendering, da der Parameter dontShow eine Inline-Dekoration als ungenutzt hat.

GPU rendering looks mostly the same as DOM rendering currently, a yellow line appears for lines rendered via the DOM

Das Issue, das diese Arbeit verfolgt, ist #221145, das häufige Updates und weitere Details zum Fortschritt enthält.

EOL-Warnung für macOS 10.15

VS Code Desktop wird in den nächsten paar Meilensteinen auf Electron 33 aktualisiert. Mit dem Electron 33-Update wird VS Code Desktop nicht mehr unter macOS Catalina ausgeführt. In diesem Meilenstein haben wir Deprecation-Hinweise für Benutzer auf dieser betroffenen Plattform hinzugefügt, um sie auf die Migration vorzubereiten. Wenn Sie Benutzer der oben genannten Betriebssystemversion sind, werfen Sie bitte einen Blick auf unsere FAQ für zusätzliche Informationen.

Bemerkenswerte Fehlerbehebungen

  • 233915 Teilen Sie eine Erweiterung mit anderen, indem Sie die Aktion Link kopieren im Kontextmenü einer Erweiterung in der Erweiterungsansicht verwenden.
  • 231542 Häufiges Speichern von Dateien nicht möglich oder Dateidaten werden mit Fehler EBUSY gelöscht
  • 233304 onDidChangeCheckboxState defekt in 1.95
  • 232263 Optimieren der Baumansicht, sodass Prozessübergreifende Aufrufe gebündelt werden
  • 156723 Drag-and-Drop-Unterstützung behoben beim Ausführen mit Wayland

Vielen Dank

Last but not least, ein großes Danke an die Mitwirkenden von VS Code.

Fehlerverfolgung

Beiträge zu unserer Fehlerverfolgung

Pull-Anfragen

Beiträge zu vscode

Beiträge zu vscode-emmet-helper

Beiträge zu vscode-eslint

Beiträge zu vscode-extension-samples

Beiträge zu vscode-extension-telemetry

Beiträge zu vscode-hexeditor

Beiträge zu vscode-json-languageservice

Beiträge zu vscode-jupyter

Beiträge zu vscode-mypy

Beiträge zu vscode-python-debugger

Beiträge zu vscode-python-tools-extension-template

Beiträge zu vscode-test-web

Beiträge zu inno-updater

Beiträge zu language-server-protocol

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