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

Juni 2024 (Version 1.91)

Update 1.91.1: Das Update behebt diese Probleme.

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


Willkommen zur Juni 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.

Barrierefreiheit

Zugängliche Ansicht für Editor-Tooltips

Um die Zugänglichkeit beim Codieren zu verbessern, können die zugängliche Ansicht und das Hilfemenü für Barrierefreiheit nun den Inhalt der Editor-Tooltip-Informationen präsentieren. Je nach fokussiertem Teil des Tooltips werden Informationen über den fokussierten Teil oder den gesamten Tooltip-Inhalt angezeigt.

Accessible View showing the contents of the editor hover information.

Um Links im Workbench leichter vom normalen Text zu unterscheiden, können Sie die Einstellung accessibility.underlineLinks aktivieren, um Links zu unterstreichen.

The run and debug view showing a mix of regular text and underlined links.

Workbench

Wir haben eine neue Einstellung search.ripgrep.maxThreads hinzugefügt, mit der Sie die Anzahl der Threads begrenzen können, die die ripgrep-Suchmaschine verwendet. Diese Einstellung gilt unabhängig davon, ob die Suche vom Kernprodukt oder über die Extension API verwendet wird.

Setzen Sie search.ripgrep.maxThreads auf einen Wert ungleich Null, um die Anzahl der Threads zu konfigurieren. Seien Sie vorsichtig, da das Festlegen dieser Einstellung auf einen bestimmten Wert ripgrep verlangsamen kann.

Zulässige Kodierungen für Vermutungen anpassen

Mit der neuen Einstellung files.candidateGuessEncodings können Sie eine Reihe von Kodierungen konfigurieren, die berücksichtigt werden sollen, wenn files.autoGuessEncoding aktiviert ist. Die Reihenfolge der Konfiguration bestimmt die Priorität. Diese Funktionalität ermöglicht es Ihnen, die möglichen zu erkennenden Kodierungen auf eine kleinere Menge zu beschränken und eine Kodierung gegenüber einer anderen zu priorisieren.

Vorschau des Profile-Editors

In diesem Meilenstein haben wir einen neuen Profile-Editor eingeführt, mit dem Sie Profile von einem zentralen Ort aus verwalten können. Diese Erfahrung umfasst das Erstellen neuer Profile, das Bearbeiten und Löschen vorhandener Profile sowie das Importieren und Exportieren von Profilen zum Teilen mit anderen. Beim Erstellen eines neuen Profils können Sie eine Vorschau des Profils anzeigen und es nach Bedarf anpassen, bevor Sie es speichern. Der Profile-Editor ermöglicht es Ihnen auch, neue Fenster mit einem bestimmten Profil zu öffnen oder ein Profil als Standardprofil für neue Fenster festzulegen.

Profiles Editor showing all user profiles and their settings.

Der Profile-Editor ist als experimentelles Feature hinter der Einstellung workbench.experimental.enableNewProfilesUI verfügbar. Sobald er aktiviert ist, können Sie auf den Profile-Editor über das Zahnradsymbol für Einstellungen in der unteren linken Ecke des Fensters zugreifen.

Settings menu showing the Profiles menu item to open the Profiles Editor.

Probieren Sie es aus und geben Sie uns Feedback, wie wir diese Erfahrung weiter verbessern können.

Menüpunkt "Neues Fenster mit Profil"

Zusätzlich zum Profile-Editor haben wir Aktionen zum Menü "Datei" hinzugefügt, um ein neues Fenster mit einem bestimmten Profil zu öffnen. Verwenden Sie das Menü Datei > Neues Fenster mit Profil, um ein neues Fenster mit einem bestimmten Profil zu öffnen.

Screenshot of the File menu showing the New Window with Profile menu items.

Erweiterungsinstallationsoptionen

Wir haben weitere Optionen hinzugefügt, um Ihnen mehr Flexibilität bei der Installation von Erweiterungen zu bieten.

  • Installieren Sie eine Erweiterung, ohne sie zu synchronisieren.
  • Installieren Sie eine bestimmte Version einer Erweiterung. Zuvor mussten Sie zuerst die neueste Version der Erweiterung installieren, bevor Sie eine bestimmte Version auswählen konnten.

Diese Aktionen sind im Kontextmenü der Erweiterung in der Erweiterungsansicht verfügbar.

Context menu for the Extensions view, showing the additional install actions.

Zugriff auf Dateierweiterungen in benutzerdefinierten Labels

Wenn Sie benutzerdefinierte Labels definieren, haben Sie nun mehr Flexibilität, auf einzelne Dateierweiterungen zuzugreifen, indem Sie die Syntax ${extname(N)} verwenden. Zusätzlich unterstützt ${extname(N)} auch negative Indizes, um Dateierweiterungen in umgekehrter Reihenfolge zu erfassen. Um die gesamte Dateierweiterung zu erhalten, verwenden Sie ${extname}.

Zum Beispiel für die Datei tests/editor.test.ts

  • ${filename} => editor
  • ${extname} => test.ts
  • ${extname(0)} => ts
  • ${extname(1)} => test
  • ${extname(-1)} => test
  • ${extname(-2)} => ts

Zusammenführung von benutzerdefinierten Label-Mustern aus mehreren Erweiterungen

Wenn zwei Erweiterungen eine Standardkonfiguration für die Einstellung workbench.editor.customLabels.patterns in ihren configurationDefaults beitragen, werden die beigesteuerten Muster zusammengeführt.

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
Standardbeitrag von Erweiterung 1 Standardbeitrag von Erweiterung 2
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
Ergebnis der benutzerdefinierten Label-Muster

Ein Theme-Farbe zurücksetzen

Wenn ein Theme eine Farbe oder einen Rahmen festlegt, der Ihnen nicht gefällt, können Sie nun default verwenden, um ihn auf den ursprünglichen Wert zurückzusetzen.

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

Farbe des Faltungsplatzhalters ändern

Der Faltungsplatzhalter (Ellipsen) kann jetzt mit der Farbe editor.foldPlaceholderForeground thematisiert werden.

Editor

Codeaktionen beim Speichern

Mit der Einstellung editor.codeActionsOnSave können Sie eine Reihe von Code Actions konfigurieren, die beim Speichern einer Datei automatisch angewendet werden, z. B. zum Organisieren von Importen. Wir haben die IntelliSense für die Konfiguration dieser Einstellung verbessert, indem wir eine Liste verfügbarer Code Actions basierend auf Ihren Arbeitsbereichsdateien und den aktiven Erweiterungen bereitstellen.

Hinweis: Beachten Sie, dass true und false derzeit noch gültige Konfigurationen sind, aber zugunsten von explicit, always und never veraltet sein werden. Beispiele finden Sie in der Dokumentation zu Code Actions on Save.

Schnelles Deaktivieren des schreibgeschützten Dateistatus

Wenn Sie eine Datei über die Einstellung files.readonlyInclude als schreibgeschützt konfiguriert haben, können Sie den schreibgeschützten Status der Datei nun schnell über die Meldung des schreibgeschützten Editors deaktivieren.

Read-only editor message enabling you to toggle the read-only status.

Quellcodeverwaltung

Vorschau des Graphen für eingehende/ausgehende Änderungen

Wir haben eine alternative Visualisierung der eingehenden und ausgehenden Änderungen erforscht. Dieser Meilenstein enthält ein experimentelles Feature, das einen Graphen verwendet, um die eingehenden und ausgehenden Änderungen zu visualisieren. Der Graph enthält den aktuellen Branch, den Upstream-Branch des aktuellen Branches und einen optionalen Basis-Branch. Die Wurzel des Graphen ist der gemeinsame Vorfahre dieser Branches.

Sie können diese neue Visualisierung mit der Einstellung scm.experimental.showHistoryGraph aktivieren. Probieren Sie es aus und lassen Sie uns wissen, was Sie davon halten, während wir die Funktionalität dieser Visualisierung weiter verbessern und erweitern.

Source control view showing a graph visualization of the incoming and outgoing changes.

Notebooks

Finden in Textauswahl

Die Notebook-Suchfunktion verfügt nun über "In Auswahl suchen" für Text- und Zellenauswahlen. Dieses Verhalten ist standardmäßig aktiviert und kann über die Schaltfläche in der Steuerung gesteuert werden. Basierend auf dem Kontext Ihrer Auswahl grenzt das Umschalten dieser Schaltfläche Ihre Suchanfrage auf eine oder mehrere ausgewählte Zellen oder Zeilen innerhalb einer Zelle ein.

Kopieren oder Öffnen von Textausgaben aus dem Kontextmenü

Wenn Sie mit Textausgaben in Notebooks arbeiten, können Sie nun das Kontextmenü einer Textausgabe verwenden, um den Ausgabewert zu kopieren oder die Ausgabe in einem neuen Editor zu öffnen. Diese Funktion erleichtert die Überprüfung großer Streaming-Ausgaben.

Terminal

Unterstützung für Escape-Sequenzen zum Kopieren und Einfügen (OSC 52)

Die Escape-Sequenz "Operating System Command" (OSC) 52 wird nun unterstützt. Diese kann von allem verwendet werden, was im Terminal ausgeführt wird, aber der primäre Anwendungsfall ist der Zugriff auf die Zwischenablage für tmux.

Neue benutzerdefinierte Glyphen

Das Terminal unterstützt nun benutzerdefinierte Glyphen für die Powerline-Symbole für Branch, Zeilennummer und Sperre. Wie die anderen benutzerdefinierten Glyphen, die wir unterstützen, funktionieren diese Symbole ohne Konfiguration einer Schriftart, wenn die GPU-Beschleunigung aktiviert ist.

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

Diese Symbole skalieren auch perfekt mit der Zelle, wenn Schriftgröße, Zeilenhöhe oder Buchstabenabstand angepasst werden.

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

Debuggen

JavaScript-Debugger

Der JavaScript-Debugger zeigt nun den korrekten Wert von überschriebenen Variablen beim Überfahren mit der Maus und in Inline-Werten (aktiviert über die Einstellung debug.inlineValues) basierend auf den Gültigkeitsbereichen des Programms an.

JavaScript code snippet that shows an overlay with the value of shadowed variables.

Theme: Codesong (Vorschau auf vscode.dev)

Sprachen

TypeScript 5.5

Wir haben TypeScript 5.5 integriert. Dieses große Update bringt eine Reihe neuer Sprachfunktionen und Tooling-Verbesserungen. Lesen Sie den TypeScript 5.5 Blogbeitrag für Details zu dieser Version.

Syntaxprüfung für reguläre Ausdrücke

Dank TypeScript 5.5 melden wir nun viele Syntaxfehler in JavaScript- und TypeScript-Regulärausdruckliteralen. Dazu gehören Fehler wie ungeschlossene Gruppen, falsche Rückverweise oder ungültige Escape-Sequenzen.

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

Lesen Sie den TypeScript 5.5 Blogbeitrag für weitere Details.

Beiträge zu Erweiterungen

GitHub Copilot

Kompakter Inline-Chat

Das Rendering des Inline-Chats ist jetzt kompakter, was es einfacher macht, Vorschläge zu lesen und zu verstehen. Wir experimentieren auch mit einem erzählerischeren Stil für den Schaltflächentext, den Sie über inlineChat.experimental.textButtons aktivieren können.

Sample of more compact inline chat in the editor.

Terminal-Hinweis zu Beginn

Im Terminal wird ein neuer Hinweis angezeigt, der beim Entdecken des Inline-Chats hilft.

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

Dieser Hinweis wird nur angezeigt, wenn die Copilot-Erweiterung installiert ist und es ein einzelnes Terminal gibt, das noch nicht interagiert wurde. Die Nachricht kann durch Rechtsklick dauerhaft entfernt werden. Die Nachricht wird auch ausgeblendet, nachdem Sie den Terminal-Inline-Chat zum ersten Mal verwendet haben.

Codeblock anwenden

Der Befehl Im Editor anwenden für einen Codeblock in der Chat-Ansicht verwendet das Sprachmodell, um den besten Ansatz zum Anwenden der Änderungen auf den aktuellen Editor zu ermitteln.

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

Python-Umgebungsermittlung mit python-environment-tools

Wir freuen uns, ein neues Tool vorzustellen: python-environment-tools, das darauf ausgelegt ist, die Geschwindigkeit der Erkennung globaler Python-Installationen und Python-virtueller Umgebungen erheblich zu verbessern. Dieses Tool verwendet Rust, um einen schnellen und genauen Ermittlungsprozess zu gewährleisten.

Wir testen diese neue Funktion derzeit parallel zur bestehenden Unterstützung, um die neue Ermittlungsleistung in der Python-Erweiterung zu bewerten. Sie werden daher einen neuen Protokollkanal namens Python Locator sehen, der die Ermittlungszeiten mit diesem neuen Tool anzeigt.

Diese Verbesserung ist Teil unserer laufenden Bemühungen zur Optimierung der Leistung und Effizienz der Python-Unterstützung in VS Code. Besuchen Sie das Repository python-environment-tools, um mehr über diese Funktion, laufende Arbeiten zu erfahren und Feedback zu geben.

Intelligentes Senden im nativen REPL

Die Python-Erweiterung hat nun Smart Send im VS Code nativen REPL aktiviert.

Zuvor sendete die Python-Erweiterung, wenn Sie den Cursor auf eine Zeile mit Python-Code setzten und Shift+Enter drückten, den exakten Zeileninhalt an das native REPL, auch wenn dies fehlschlagen würde, z. B. weil es Teil eines Mehrzeilenbefehls ist.

Jetzt sendet Shift+Enter minimale ausführbare Codeblöcke in einem nicht verschachtelten Szenario oder den höchsten Block auf oberster Ebene in einem verschachtelten Szenario. Dies ermöglicht es Benutzern, schnell Shift+Enter durch ihre Datei zu drücken, um die maximale Menge an ausführbarem Code mit geringstem Aufwand auszuführen.

Unterstützung für reStructuredText-Docstrings

Pylance unterstützt nun die Darstellung von reStructuredText-Dokumentationsstrings (Docstrings) beim Überfahren mit der Maus!

Diese Funktion befindet sich in einem frühen Stadium und ist derzeit hinter einem Flag versteckt, während wir sicherstellen, dass sie verschiedene Sphinx-, GoogleDoc- und Epytext-Szenarien effektiv handhabt. Um sie auszuprobieren, können Sie die experimentelle Einstellung python.analysis.supportRestructuredText aktivieren.

Docstring displayed when hovering over the panel module.

Probieren Sie diese Änderung aus und melden Sie alle Probleme oder Feedback im Pylance GitHub-Repository.

Hinweis: Diese Einstellung ist experimentell und wird wahrscheinlich in Zukunft entfernt, wenn wir diese neue Funktion stabilisieren und standardmäßig aktivieren.

GitHub Pull Requests und Issues

Es gab weitere Fortschritte bei der GitHub Pull Requests-Erweiterung, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten. Neue Funktionen umfassen

  • Commit-Daten werden im Unterbaum Commits für ausgecheckte PRs angezeigt.
  • Zahlreiche Fehlerbehebungen.

Überprüfen Sie das Changelog für die Version 0.92.0 der Erweiterung, um mehr über die anderen Highlights zu erfahren.

ESLint

Die ESLint-Erweiterung unterstützt nun das Flat Config-Dateiformat. Die Erweiterung unterstützt weiterhin eslintrc-Dateien, und Sie können die Einstellung eslint.useFlatConfig verwenden, um zu steuern, welches Konfigurationsdateiformat verwendet wird.

Konsultieren Sie den ESLint Flat Config Rollout Plan, um ESLints Plan für die Veralterung und Entfernung der Unterstützung für das eslintrc-Dateiformat zu verstehen.

Erweiterungs-Authoring

Chat und Language Model API

Im letzten Monat haben wir die APIs finalisiert, die es Erweiterungen ermöglichen, am Chat teilzunehmen und auf Sprachmodelle zuzugreifen, aber sie waren nur in VS Code Insiders verfügbar. In dieser Version sind diese APIs nun vollständig in VS Code Stable verfügbar.

Lesen Sie unseren Ankündigungs-Blogbeitrag, um mehr über diese APIs zu erfahren und zu sehen, wie einige der ersten Anwender sie nutzen.

Um loszulegen, gehen Sie zu unserem Erweiterungsbeispiel und der Chat-Erweiterbarkeitsdokumentation.

Verarbeitung von Standardwerten für Objekteinstellungen

Wenn mehrere Erweiterungen Standardwerte für dieselbe Objekteinstellung beitragen, werden diese Standardwerte nun kombiniert. Dies verhindert Konflikte zwischen den Erweiterungen.

Finalisierte DebugSessionOptions.testRun API

Erweiterungen, die eine Debug-Sitzung aus einer Testausführung starten, können diesen Lauf nun in den DebugSessionOptions übergeben, wenn sie vscode.debug.startDebugging aufrufen. Wenn übergeben, erstellen Lifecycle-Aktionen wie das Neustarten der Debug-Sitzung auch eine neue Testausführung.

Debug Adapter Protocol

Ein paar bemerkenswerte Änderungen wurden am Debug Adapter Protocol vorgenommen.

  • Notation für Rückgabewerte durch eine neue Option Scope.presentationHint = returnValue.
  • Hinzufügen eines Quellorts zu evaluate-Anfragen. VS Code implementiert dies und übergibt den Ort beim Auswerten von Hover-Informationen und Inline-Werten.

Vorgeschlagene APIs

Tools und Funktionen für Sprachmodelle

Wir haben einen API-Vorschlag hinzugefügt, der das Aufrufen von Tools oder Funktionen ermöglicht. Die API besteht aus zwei Hauptteilen:

  1. Die Fähigkeit für Erweiterungen, ein "Tool" zu registrieren. Ein Tool ist ein Funktionsbestandteil, der von Sprachmodellen verwendet werden soll. Zum Beispiel das Lesen der Git-Historie einer Datei.

  2. Die Mechanismen für Sprachmodelle zur Unterstützung von Tools, wie z. B.: Erweiterungen, die Tools bei einer Anfrage übergeben, Sprachmodelle, die eine Tool-Ausführung anfordern, und Erweiterungen, die das Ergebnis einer Tool-Ausführung kommunizieren.

Der Vorschlag ist als vscode.proposed.lmTools.d.ts verfügbar.

Hinweis: Die API befindet sich noch in aktiver Entwicklung, und es wird sich noch ändern. Erwarten Sie auch, dass VS Code mit sinnvollen Standardtools ausgeliefert wird.

Authentifizierung getSessions ist jetzt getAccounts

Obwohl wir Multi-Account-Authentifizierungsanbieter unterstützen, fehlte immer die Möglichkeit, alle Sitzungen abzurufen und eine bestimmte Sitzung zu bearbeiten. Zuvor hatten wir einen API-Vorschlag getSessions, der versuchte, dieses Problem zu lösen, aber nach Experimenten und Inspiration von beliebten Authentifizierungsbibliotheken verfolgen wir einen anderen Ansatz, um das Problem zu lösen.

Wir sind von der vorherigen vorgeschlagenen getSessions API zu etwas übergegangen, das die Konzepte "Konten" und "Sitzungen" trennt.

Erweiterungsautoren, die Authentifizierungssitzungen nutzen möchten, können den folgenden Code ausführen, um die AuthenticationSessionAccountInformation der Konten zu erhalten, bei denen der Benutzer angemeldet ist.

const accounts = vscode.authentication.getAccounts('microsoft');

Von dort aus können Sie diese Konten verwenden, um Sitzungen speziell für diese Konten zu erstellen.

const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});

Hinweis: Damit dies funktioniert, muss der Authentifizierungsanbieter einen neuen Parameter verarbeiten, über den Sie in der folgenden API-Vorschlag lesen können.

Wir glauben, dass dies eine deutlich klarere Möglichkeit ist, mehrere Authentifizierungssitzungen zu verwalten, und dass es verschiedene Szenarien bewältigen kann, die wir zuvor nicht unterstützen konnten.

Der Vorschlag ist als vscode.proposed.authGetSessions.d.ts verfügbar, der den bisherigen Namen für diesen Vorschlag verwendet, um keinen bestehenden Code zu brechen, der von diesem Vorschlag abhängt.

Kommentar-Thread-Offenlegung

Wir haben einen API-Vorschlag hinzugefügt, der es Erweiterungen, die Kommentare bereitstellen, ermöglicht, ihre eigenen Kommentar-Threads im Editor anzuzeigen. Diese API bietet Optionen dafür, ob der Fokus beim Anzeigen des Threads beibehalten oder in das Antwortfeld des Threads fokussiert werden soll.

Der Vorschlag ist unter vscode.proposed.commentReveal.d.ts verfügbar.

Zurechenbare Testabdeckung

Wir arbeiten an einer API, die die Zuordnung von Testabdeckung pro Test ermöglicht. Dies ermöglicht es Benutzern zu sehen, welche Tests welchen Code ausgeführt haben, und filtert sowohl die im Editor angezeigte Abdeckung als auch die im **Test Coverage**-Fenster.

Prüfen Sie vscode#212196 für weitere Informationen und Updates.

Technik

NLS entkoppeln vom AMD-Loader

In diesem Meilenstein haben wir begonnen, die Abhängigkeit der nativen Kernsprachenunterstützung (NLS) in VS Code vom Asynchronous Module Definition (AMD)-Loader zu entfernen, den wir ausliefern. Unser zukünftiges Ziel ist es, ECMAScript Modules (ESM)-Loading zu verwenden und AMD vollständig abzuschaffen. Um in diese Richtung Fortschritte zu machen, entfernen wir unsere AMD-Loader-Plugin-Abhängigkeiten. Sie sollten keine Verhaltensänderungen feststellen, und alle Übersetzungen, die wir bisher unterstützt haben, werden sowohl im Web als auch auf dem Desktop weiterhin unterstützt.

Bemerkenswerte Fehlerbehebungen

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-css-languageservice

Beiträge zu vscode-extension-samples

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-languageserver-node

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

Beiträge zu node-jsonc-parser

  • @Vbbab: Ermöglichen des Abbruchs von Rückrufen durch den Besucher PR #88

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