April 2023 (Version 1.78)
Update 1.78.1: Das Update behebt dieses Sicherheitsproblem Problem.
Update 1.78.2: Das Update behebt diese Probleme.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Willkommen zur April 2023-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Hier sind einige der wichtigsten Highlights:
- Barrierefreiheitsverbesserungen - Bessere Unterstützung für Screenreader, neue Audiocues.
- Neue Farbthemen - „Modern“ Light und Dark als neue Standard-Farbthemen.
- Profilvorlagen - Integrierte Vorlagen für Python, Java, Data Science und mehr.
- Drag & Drop-Selektor - Wählen Sie aus, wie Sie mit Links zu Elementen im Editor umgehen möchten.
- Eigenständiger Farbwähler - Farbwähler-UI zum Einfügen oder Ändern von Farbformaten.
- Schnellkorrekturen für Source Control Eingabe - Korrigieren Sie Tippfehler und andere Fehler direkt im Eingabefeld.
- Videos per Drag & Drop in Markdown-Dateien - Fügen Sie einfach Video-Tags in Markdown-Dateien ein.
- Notebooks fügen Bilder als Anhänge ein - Wählen Sie zwischen einem Bildlink, Pfad oder Anhang.
- Git LFS und VS Code für das Web - Verwenden Sie vscode.dev für Repositories mit Git Large File Storage.
- VS Code Day 2023 - Sehen Sie sich die Sitzungen in der YouTube-Playlist an.
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
Aria-Detaillierungsgrad-Einstellungen
Screenreader-Benutzer können Hinweise aus dem aria-label einer Funktion ausschließen, um Redundanzen zu reduzieren, über die Einstellungen "accessibility.verbosity.diff-editor" und "accessibility.verbosity.terminal".
Verbesserte und ausgerichtete Quick Pick-Erfahrung
Zuvor hatten Benutzer des Barrierefreiheitsmodus unterschiedliche Verhaltensweisen, wenn sie mit der Befehlspalette und anderen Quick Picks arbeiteten. Im Barrierefreiheitsmodus war das erste Element des Quick Picks nicht ausgewählt, um vollständig barrierefrei zu sein. In dieser Iteration haben wir ein neues Verhalten eingeführt, das Ihnen das Beste aus beiden Welten bietet: einen barrierefreien **und** schnellen Quick Pick-Workflow, der es Ihnen ermöglicht, sofort Enter zu drücken.
Hinweis: Ein Kompromiss bei diesem Ansatz ist, dass Sie, wenn ein Element im Quick Pick ausgewählt ist, ARIA-Änderungen im Quick Pick-Eingabefeld aufgrund einer ARIA-Beschränkung nicht hören können. Um diese Änderungen zu hören, können Sie Shift + Tab drücken, bis kein Element der Liste mehr ausgewählt ist.
Terminal
Verbesserungen am zugänglichen Puffer des Terminals
- Springen Sie zwischen Befehlen mit ⌥↓ (Windows, Linux Alt+Down) und ⌥↑ (Windows, Linux Alt+Up).
- Verwenden Sie Auswahlanker festlegen, Von Anker bis Cursor auswählen und Seitenavigation mit ⇧PageUp (Windows, Linux Shift+PageUp) und ⇧PageDown (Windows, Linux Shift+PageDown).
- Vorschau der Position bei Verwendung von Gehe zu Symbol in zugänglicher Ansicht (⇧⌘O (Windows, Linux Ctrl+Shift+O)) vor dem Akzeptieren eines Befehls, um zu einem neuen Speicherort zu gelangen.
- Interagieren Sie mit der Ausgabe, während dynamische Updates stattfinden.
Terminal-Hilfemenü für Barrierefreiheit
Das Menü Barrierefreiheits-Hilfe des Terminals kann nun mit den Pfeiltasten navigiert werden.
Verbesserte Audiocues für den Diff-Editor
VS Code speichert nun Audiocues im Cache, sodass sie nur einmal geladen werden müssen, was zu einer besseren Reaktionsfähigkeit führt, und die Töne für den Diff-Editor wurden verbessert.
Ankündigung von Zeile/Spalte
Wenn Gehe zu Zeile/Spalte... (⌃G (Windows, Linux Ctrl+G)) aufgerufen wird, liest der Screenreader nun den zugehörigen Zeileninhalt vor.
Workbench
Neue Standard-Farbthemen
Die neuen Themen 'Dark Modern' und 'Light Modern' ersetzen 'Dark+' und 'Light+' als neue Standard-Farbthemen für Dunkel und Hell.

Profilvorlagen
Profile ermöglichen es Ihnen, Ihre Editor-Erweiterungen, Einstellungen und UI-Layouts schnell zu wechseln, je nach Ihrem aktuellen Projekt oder Ihrer Aufgabe. Um Ihnen den Einstieg in Profile zu erleichtern, liefern wir Profilvorlagen, d. h. kuratierte Profile für verschiedene Programmiersprachen und Szenarien. Sie können eine Profilvorlage so verwenden, wie sie ist, oder sie als Ausgangspunkt für weitere Anpassungen für Ihre eigenen Arbeitsabläufe nutzen.
Sie wählen eine Profilvorlage über das Dropdown-Menü Profile > Profil erstellen... aus.

Sobald Sie eine Profilvorlage ausgewählt haben, können Sie die Einstellungen, Erweiterungen und andere Daten überprüfen und einzelne Elemente entfernen, wenn Sie sie nicht in Ihr neues Profil aufnehmen möchten.

Nachdem Sie das neue Profil basierend auf einer Vorlage erstellt haben, werden Änderungen an Einstellungen, Erweiterungen oder der Benutzeroberfläche in Ihrem Profil gespeichert.
Verbesserungen beim Rendern von Glyphenranddekorationen
In diesem Monat haben wir das Rendern von Dekorationen, die im Editorrand erscheinen, verbessert. Debugging-bezogene Dekorationen wie Breakpoints und Stack-Frame-Zeiger werden immer neben den Zeilennummern des Editors gerendert. Zusätzliche Dekorationen werden links von allen Debugging-bezogenen Dekorationen gerendert. Dies ermöglicht es Ihnen, Ihre Breakpoints anzuzeigen, auch wenn sich andere Dekorationen in derselben Zeile befinden, wie z. B. Testdekorationen oder Bookmarks. Beachten Sie, dass Klicks noch nicht auf einzelne Dekorationen beschränkt sind.

Bilder aus der Bildvorschau kopieren
Sie können jetzt Bilder aus der integrierten Bildvorschau mit ⌘C (Windows, Linux Ctrl+C) oder durch Rechtsklick in der Vorschau und Auswahl von Kopieren kopieren. Die kopierten Bilddaten können zurück in VS Code oder in andere Anwendungen eingefügt werden.
Editor
Drop-Selektor
VS Code ermöglicht es Ihnen, Dateien und Inhalte per Drag & Drop in Texteditoren einzufügen, indem Sie vor dem Ablegen Shift gedrückt halten. In diesem Update haben wir eine Benutzeroberfläche hinzugefügt, mit der Sie ändern können, wie diese Inhalte in die Datei eingefügt werden. Nachdem Sie beispielsweise ein Bild in eine Markdown-Datei gezogen haben, können Sie mit diesem Steuerelement zwischen dem Einfügen eines Markdown-Bildes, eines relativen Workspace-Pfads zum Bild und des vollständigen Pfads zum Bild wechseln.
Das Drop-Selektor-Steuerelement erscheint immer dann, wenn Sie Inhalte ziehen und es mehr als eine mögliche Einfügemethode gibt. Sie können das Steuerelement öffnen, indem Sie darauf klicken oder ⌘. (Windows, Linux Ctrl+.) verwenden. Der Drop-Selektor verschwindet, sobald Sie zu tippen beginnen oder den Cursor außerhalb des eingefügten Textes bewegen. Sie können das Drop-Selektor-Steuerelement auch vollständig deaktivieren, indem Sie "editor.dropIntoEditor.showDropSelector": "never" verwenden.
VS Code enthält einige integrierte Möglichkeiten, gängige Inhaltsformate abzulegen. Erweiterungen können auch eigene Drop-Optionen über die DocumentDropEditProvider API hinzufügen.
Eigenständiger Farbwähler
Es ist jetzt möglich, einen eigenständigen Farbwähler zu starten, um Farben einzufügen und zu ersetzen. Um den Farbwähler zu öffnen, wählen Sie Eigenständigen Farbwähler anzeigen oder fokussieren aus der Befehlspalette.

Wenn keine Farben oder Farbformate von Erweiterungen bereitgestellt werden, greift der Farbwähler auf CSS-formatierte Farben zurück. Es ist auch jetzt möglich, Inline-Farbdekorationen für CSS-formatierte Farben in allen Dateitypen zu visualisieren. Um diese Dekorationen anzuzeigen, aktivieren Sie die Einstellung Editor: Standard-Farbdekorationen (editor.defaultColorDecorators).
Neue Snippet-Variable für Zeitzonenverschiebung
Eine neue Snippet-Variable, CURRENT_TIMEZONE_OFFSET, ist jetzt verfügbar. Diese Variable gibt die aktuelle Zeitzonenverschiebung im Format +HH:MM oder -HH:MM zurück (z. B. -07:00). Dies ergänzt andere zeitbezogene Snippet-Variablen wie CURRENT_YEAR, CURRENT_MONTH, CURRENT_DAY_NAME usw.
Verbesserungen am Diff-Algorithmus
Wir haben den neuen Diff-Algorithmus in VS Code weiter verbessert und den alten Algorithmus als veraltet erklärt. Während der alte Algorithmus weiterhin der Standard für den Diff-Editor ist, werden wir den Standard langsam auf den neuen Algorithmus umstellen und seine Leistung messen.
Sie können den Standard überschreiben, indem Sie diffEditor.diffAlgorithm auf advanced (neuer Diff-Algorithmus) oder legacy (Standard) setzen.
Der neue Algorithmus liefert in vielen Fällen bessere Diffs, ist aber möglicherweise für einige Dokumente langsamer.
Hier sind einige Beispiele (Legacy vs. Advanced)
-
Verbesserte Zeileneinfüge-Diffs durch Berücksichtigung der Einrückung


-
Verbesserte Wortereinfüge-Diffs durch Berücksichtigung von Leerzeichen und Trennzeichen


-
Natürlichere Diffs, indem nicht nur die Länge des Diffs, sondern auch die Anzahl der Chunks minimiert wird


-
Weniger Rauschen durch Ausdehnung von Zeichen-Level-Diffs auf ganze Wörter, wenn ein Teil des Wortes signifikant geändert wurde


Das Diffen von Quellcode und sogar nur die Bewertung der Qualität eines Diffs sind schwierige Probleme, und es gibt noch Raum für Verbesserungen. Wenn Sie auf ein Diff stoßen, bei dem Sie denken, dass der Algorithmus besser sein könnte, probieren Sie unser Diff Playground aus und teilen Sie Ihr Feedback und Ihre Ideen in unserem Issue Tracker!
Inline-Vervollständigung verbessert
In dieser Iteration haben wir die Inline-Vervollständigungsfunktion neu geschrieben und viele Fehler behoben.
Insbesondere funktioniert Wort akzeptieren jetzt zeilenübergreifend und es gibt einen neuen Befehl Zeile akzeptieren. Um diese Funktion zu unterstützen, fragt das Akzeptieren des nächsten Wortes/der nächsten Zeile die Erweiterung nicht mehr erneut ab, da Anbieter von Inline-Vervollständigungen oft völlig andere Vorschläge meldeten, wenn sie nach Inline-Vervollständigungen für die nächste Zeile fragten.
Erweiterungen
Verbesserte Benachrichtigung über Erweiterungsempfehlungen
Die Benachrichtigung über Erweiterungsempfehlungen zeigt nun den Herausgeber der empfohlenen Erweiterung an. Dies hilft Ihnen, eine fundiertere Entscheidung zu treffen, bevor Sie die Erweiterung installieren. Die folgenden Bilder zeigen die neue Benachrichtigung, wenn Empfehlungen für eine einzelne Erweiterung und für mehrere Erweiterungen vorliegen.

Information über installierte veraltete Erweiterungen
Wenn Sie eine veraltete Erweiterung installiert haben, erhalten Sie nun eine Benachrichtigung, die Sie darüber informiert und Alternativen vorschlägt. Dies wird nur einmal pro veralteter Erweiterung angezeigt.

Quellcodeverwaltung
Schnellkorrekturen in der Source Control-Eingabe
Code-Aktionen und Schnellkorrekturen werden nun im Nachrichtenfeld der Quellcodeverwaltung unterstützt.
Die Erweiterung Code Spell Checker fügt beispielsweise Tippfehlerkorrekturen in die Source Control-Eingabe ein. Erweiterungen können zusätzliche Korrekturen und Code-Aktionen beitragen.
GitHub Repository Rulesets
VS Code ermöglicht es Ihnen bereits, Branch-Schutz mit der Einstellung git.branchProtection zu definieren. In diesem Meilenstein haben wir eine neue experimentelle Funktion hinzugefügt, die die kürzlich angekündigten GitHub Repository Rulesets verwendet, um zu bestimmen, ob ein Branch geschützt ist. Wenn Sie GitHub Repository Rulesets verwenden, können Sie diese Funktion mit der Einstellung github.branchProtection aktivieren.
Notebooks
Ziehen Sie Bilddateien in Notebooks, um Anhänge zu erstellen
Sie können nun Bilddateien per Drag & Drop in Markdown-Zellen von Notebooks ziehen, um Anhänge zu erstellen. Wenn Sie das Bild ziehen, verwenden Sie das neue Drop-Selektor-Steuerelement, um Bild als Anhang einfügen auszuwählen.

Dies fügt das Bild als Anhang zum Notebook hinzu, anstatt nur einen Link zum Bild einzufügen.

Umschalten des Scrollens der Notebook-Ausgabe
Sie können nun einzelne Zellen umschalten, um die Ausgabe in einem scrollbaren Bereich anzuzeigen, entweder über den Befehl Notebook: Scrollen der Zellenausgabe umschalten (⌘K Y (Windows, Linux Ctrl+K Y)) oder über den Link in der Abschneidenachricht.
Verbesserungen am Find-Steuerelement
Das Find-Steuerelement des Notebooks durchsucht standardmäßig die visuell dargestellten Schlüsselwörter. Benutzer können den Suchbereich (Markdown-Quelle, Markdown-Vorschau, Quellcode und Code-Ausgaben) über die Einstellung notebook.find.scope ändern. Darüber hinaus wird beim Ersetzen von Treffern die Markdown-Zelle in eine bearbeitbare Zelle umgewandelt, sodass Sie die Ersetzung vornehmen können. Wenn Sie fertig sind, wird die Zelle wieder in Markdown umgewandelt und die Vorschau wiederhergestellt.
Sprachen
Videos per Drag & Drop in Markdown-Dateien
Möchten Sie ein Video in Ihr Markdown einfügen? Ziehen Sie es einfach in den Editor und halten Sie dann Shift gedrückt, um es in die Datei zu ziehen.
Dies fügt einen <video>-Tag ein, der auf die Videodatei verweist. Sie können Videos aus dem Explorer von VS Code oder aus Ihrem lokalen Betriebssystem ziehen.
Strikte Nullwerte für JavaScript-Skriptblöcke in HTML
Sie können nun die Einstellung js/ts.implicitProjectConfig.strictNullChecks verwenden, um strikte Nullwerte für JavaScript in HTML-Skriptblöcken zu aktivieren.

Mit aktivierten strikten Nullwerten zeigen Hovers und andere IntelliSense-Funktionen an, wann ein Typ nullable sein kann. Beispielsweise wird bei el nun der Typ HTMLElement | null angezeigt. Dies liegt daran, dass document.getElementById null zurückgibt, wenn es kein Element mit dieser ID findet.
Testen
Kontinuierliche Ausführung kann nun für einzelne Tests aktiviert werden. Dies erfordert eine Test-Erweiterung, die die kontinuierliche Ausführung unterstützt und die API supportsContinuousRun übernommen hat, die in der letzten Iteration finalisiert wurde.

VS Code für das Web
Dateien in Git Large File Storage committen
Git Large File Storage (LFS) ermöglicht es Ihnen, große Dateien effizient in Git-Repositories zu speichern. github.dev und vscode.dev unterstützen nun das Committen von Dateien an Git LFS in auf GitHub gehosteten Repositories, was einfache Updates über den Browser ermöglicht, ohne die LFS-Erweiterung für Git lokal installieren zu müssen.
Die LFS-Commit-Unterstützung in github.dev und vscode.dev funktioniert sofort, wenn Ihr Repository bereits eine .gitattributes-Datei im Stammverzeichnis Ihres Repositories hat, die angibt, welche Dateitypen mit Git LFS gespeichert werden sollen. Um Ihr Repository zum ersten Mal für Git LFS einzurichten, konsultieren Sie die Git LFS-Dokumentation.
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.
Sie können neue Erweiterungsfeatures und behobene Fehler in den Remote Development Release Notes nachlesen.
Und sehen Sie sich die VS Code Day-Sitzung Develop Anywhere with VS Code an.
Beiträge zu Erweiterungen
Python
Jupyter-Erweiterung nicht mehr standardmäßig installiert
Die Jupyter-Erweiterung wird standardmäßig nicht mehr automatisch zusammen mit der Python-Erweiterung installiert. Diese Änderung wurde als Reaktion auf Feedback von Dev Container-Benutzern vorgenommen, die einen schnelleren Container-Erstellungsprozess ohne die standardmäßig installierte Jupyter-Erweiterung wünschten.
Wenn Sie Dev Container-Definitionen haben, die nur die Python-Erweiterung auflisten und weiterhin die Jupyter Notebook-Funktionen in Ihren Containern nutzen möchten, können Sie die Jupyter-Erweiterungs-ID zu Ihrer devcontainer.json-Datei hinzufügen.
"customizations": {
"vscode": {
"extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
}
}
Alternativ können Sie ein Profil erstellen, das die Python- und Jupyter-Erweiterungen sowie alle anderen Ihrer bevorzugten Erweiterungen enthält.
Umgebung erstellen-Befehl mit microvenv
Wenn der Befehl Python: Umgebung erstellen mit einer Python-Distribution aufgerufen wird, bei der das Paket venv nicht installiert ist, verwendet die Python-Erweiterung nun microvenv als Fallback. Dies kann ein Hindernis für vorinstallierte Python-Umgebungen auf Unix-basierten Systemen sein.
Microvenv ist ein leichtgewichtiges Python-Modul, das einen minimalistischen Ansatz zur Erstellung virtueller Umgebungen für Ihre Python-Projekte bietet. Es verfügt nicht über traditionelle Aktivierungsskripte wie virtuelle Umgebungen, bietet aber eine gute Alternative zur Erstellung einer isolierten Umgebung, wenn das venv-Modul in Ihrer Python-Distribution nicht verfügbar ist.
Der Befehl Umgebung erstellen installiert auch pip in die Umgebungen, die über microvenv erstellt wurden.
Empfehlungen für Formatter-Erweiterungen
In früheren Versionen haben wir neue Erweiterungen für die Black Formatter und autopep8 angekündigt, die über das Language Server Protocol (LSP) mit der Python-Erweiterung zusammenarbeiten, um Formatierung für Python-Dateien bereitzustellen. In dieser Version zeigen wir eine Benachrichtigung an, wenn Sie noch die integrierten Formatierungsfunktionen der Python-Erweiterung verwenden, und fordern Sie auf, diese neuen Erweiterungen zu installieren.
Python-Ausführungsaktionen sind jetzt in Untermenüs
Um die Python-Befehle zu vereinfachen, die beim Rechtsklick auf den Editor verfügbar sind, sind die Befehle Python-Datei im Terminal ausführen und Auswahl/Zeile im Python-Terminal ausführen nun Untermenüpunkte unter dem Eintrag Python ausführen.

Automatische Konvertierung von f-Strings
Es gibt eine neue Einstellung "python.analysis.autoFormatStrings", die die automatische Konvertierung von f-Strings bei Verwendung von Pylance aktiviert. Sobald diese aktiviert ist, fügt Pylance automatisch ein f am Anfang eines Strings ein, wenn Sie { in Anführungszeichen einfügen.
Der Standardwert für diese Einstellung ist derzeit deaktiviert, wird aber in einer zukünftigen Version nach positivem Feedback aktiviert. Wenn Sie Kommentare oder Vorschläge zu dieser Funktion haben, können Sie diese gerne auf dem Pylance GitHub Repository teilen.
Code-Navigation aktiviert für Strings, die Pfade enthalten
Es gibt eine weitere neue experimentelle Einstellung namens "python.analysis.gotoDefinitionInStringLiteral", die Definition finden aus Modul-ähnlichen String-Literalen aktiviert. Dies kann hilfreich sein, wenn Sie an Webanwendungen wie Django-Apps arbeiten und zu Modulen oder Pfaden navigieren möchten, die in String-Literalen definiert sind.
Diese neue Einstellung ist, wie die bereits erwähnte autoFormatStrings-Einstellung, standardmäßig deaktiviert. Wir planen jedoch, dieses Verhalten in einer zukünftigen Version basierend auf Feedback zu aktivieren. Schließlich planen wir, diese Einstellung vollständig zu entfernen.
Jupyter
Neustart-Befehle
Die Jupyter-Erweiterung enthält nun zwei neue Befehle, die es dem Benutzer ermöglichen, den Kernel neu zu starten und Zellen direkt auszuführen. Die Befehle sind Kernel neu starten und alle Zellen ausführen und Kernel neu starten und bis zur ausgewählten Zelle ausführen und können über die Befehls-IDs jupyter.restartkernelandrunallcells bzw. jupyter.restartkernelandrunuptoselectedcell aufgerufen werden.
Wiederverbindung zu beschäftigten entfernten Jupyter-Kernels
In früheren Versionen wartete die Jupyter-Erweiterung bei der Verbindung zu einer entfernten Jupyter-Kernel-Sitzung, bis der Kernel im Leerlauf war, bevor sie sich verband. Dies konnte lange dauern, wenn der Kernel mit einer langwierigen Berechnung beschäftigt war. In dieser Version verbindet sich die Jupyter-Erweiterung sofort mit dem Kernel, auch wenn er beschäftigt ist. Dies ermöglicht es Ihnen, den Kernel zu unterbrechen, während er beschäftigt ist.
Plattformspezifische Jupyter-Erweiterungen
Die Jupyter-Erweiterung liefert nun plattformspezifische Erweiterungen, wobei jede VSIX für eine bestimmte Plattform (Windows 64 Bit, Windows 32 Bit, Linux x64, Alpine x64, macOS Intel, macOS Apple Silicon usw.) erstellt wird. Die Downloadgröße der Jupyter-Erweiterung für einzelne Plattformen ist kleiner, was zu schnelleren Downloadzeiten und geringerem Speicherplatzverbrauch führt.
GitHub Pull Requests und Issues
Es gab weitere Fortschritte bei der GitHub Pull Requests and Issues-Erweiterung, die es Ihnen ermöglicht, Pull-Anfragen und Probleme zu bearbeiten, zu erstellen und zu verwalten. Zu den Highlights gehören
- Sie können Team-Rezensenten zu einem Pull Request hinzufügen.
- Alle Stellen, an denen Sie den Standard-Branch auschecken können, berücksichtigen nun die Einstellung
git.pullBeforeCheckout. - Dateiebenen-Kommentare von GitHub werden unterstützt.
Überprüfen Sie das Changelog für die Version 0.64.0 der Erweiterung, um mehr über die anderen Highlights zu erfahren.
GitHub Copilot
Hinweis: Diese Funktionen sind in der GitHub Copilot Chat-Erweiterung verfügbar.
Chat-Editoren
Unsere erste Iteration von GitHub Copilot Chat ermöglichte Chat-Sitzungen in der Seitenleiste. Jetzt unterstützen wir das Öffnen derselben Chat-Ansicht als Editor. Dies ermöglicht es Ihnen, die Position Ihrer Chat-Sitzung an beliebiger Stelle in Ihrem Fensterlayout anzupassen.
Sie können einen Chat-Editor öffnen, indem Sie den Befehl Interaktive Sitzung: Editor öffnen ausführen und ihn dann wie jeden anderen Editor zwischen Editor-Gruppen verschieben.

Zusätzliche Codeblock-Befehle
Es gibt zwei neue Befehle in der Codeblock-Symbolleiste: In neue Datei einfügen und Im Terminal ausführen. Diese befinden sich neben den vorhandenen Befehlen Kopieren und Am Cursor einfügen und bieten Ihnen zusätzliche Optionen, um schnell Aktionen auf die von Copilot zurückgegebenen Codevorschläge anzuwenden.

Code-Aktionen und Inline-Chat
Editor-Chat-Sitzungen sind nun mit den Schnellkorrekturen integriert. Wählen Sie die Glühbirne für eine geschlängelte Linie, und es gibt Optionen zur Korrektur oder Erklärung mit Copilot.
Zusätzlich zu den Code-Aktionen ist Inline-Chat nun auch über das Kontextmenü des Editors verfügbar.
Inline-Chat-Modi
Es gibt nun eine Einstellung, um die verschiedenen Modi des Inline-Chats zu ändern: inlineChat.editMode.
Die Optionen sind
live- KI-generierte Änderungen direkt im Editor anwenden (Standard).livePreview- Änderungen anwenden, aber in einem eingebetteten Diff-Editor rendern.preview- Änderungen in einem getrennten, eingebetteten Diff-Editor anzeigen.
Ähnliche Befehle in der Befehlspalette
Mit der Leistung von Copilot kann die Befehlspalette nun ähnliche Befehlsergebnisse anzeigen. Um dies zu aktivieren, müssen Sie ein aktives Copilot-Abonnement haben, sich in der privaten Vorschau des Chat-Bereichs befinden und die Einstellung anwenden.
"workbench.commandPalette.experimental.useSemanticSimilarity": true
Hier sind einige Beispiele
-
"Autosave aktivieren" wird als Auto-Speichern umschalten interpretiert

-
"Funktion hinzufügen" enthält zusätzliche Ergebnisse am Ende mit Beiträgen von Erweiterungen

-
Schließlich können Sie, wenn Ihre Ergebnisse keine Ergebnisse liefern, GitHub Copilot fragen, was den Inhalt Ihres Filterfelds in einem neuen Chat für Copilot bearbeitet.

Wir werden diesen Bereich weiter verbessern, also bleiben Sie dran!
Vorschau-Features
TypeScript 5.1 Unterstützung
Dieses Update enthält Unterstützung für die kommende Version 5.1 von TypeScript. Lesen Sie den TypeScript 5.1 Beta Blog-Beitrag und den TypeScript 5.1 Iterationsplan für weitere Details darüber, woran das TypeScript-Team derzeit arbeitet. Einige Highlights der Editor-Tools:
- Verknüpfte Bearbeitung von JSX-Tags.
- Snippet-Vervollständigungen für
@paramJSDoc-Tags.
Um die TypeScript 5.1 Nightly Builds zu verwenden, installieren Sie die TypeScript Nightly-Erweiterung.
JSX-Tags mit übereinstimmenden Namen mit F2 umbenennen
Wenn Sie die Umbenennung bei einem JSX-Tag auslösen, benennt VS Code nun nur den übereinstimmenden Tag um, anstatt zu versuchen, alle Referenzen auf den Tag zu aktualisieren.
Dies erfordert TypeScript 5.1+ und entspricht der Funktionsweise von Umbenennungen in HTML.
Sie können dieses Verhalten deaktivieren, indem Sie javascript.preferences.renameMatchingJsxTags und typescript.preferences.renameMatchingJsxTags verwenden.
Erweiterungs-Authoring
Workspace-Edits können nun Dateien direkt aus DataTransferFile erstellen
Einer der Hauptanwendungsfälle der Drop-into-Editor-API ist das Schreiben von abgelegten Dateien/Inhalten in den Workspace. In früheren VS Code-Versionen konnte dies jedoch bei großen Dateien ziemlich langsam sein. Das liegt daran, dass die Dateiinhalte zweimal zwischen Prozessen kopiert werden: zuerst vom Renderer zum Extension Host, um den Dateinhalt zu lesen, und dann zurück vom Extension Host zum Renderer, um die Datei zu schreiben.
class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
async provideDocumentDropEdits(
_document: vscode.TextDocument,
_position: vscode.Position,
dataTransfer: vscode.DataTransfer,
_token: vscode.CancellationToken
): Promise<vscode.DocumentDropEdit | undefined> {
const pngFile = dataTransfer.get('image/png')?.asFile();
if (!pngFile) {
return;
}
// Read file
// This results in the entire file contents being copied over to the extension host.
const contents = await pngFile.data();
// Now create a workspace edit that writes the file into the workspace
// This results in the same file contents from above being copied back again.
const additionalEdit = new vscode.WorkspaceEdit();
const path = vscode.Uri.joinPath(
vscode.workspace.workspaceFolders![0].uri,
'image.png'
);
additionalEdit.createFile(path, { contents });
const edit = new vscode.DocumentDropEdit(path.fsPath);
edit.additionalEdit = additionalEdit;
return edit;
}
}
Jetzt können Sie diese zusätzlichen Kopien vermeiden, indem Sie eine DataTransferFile direkt an WorkspaceEdit.createFile übergeben.
additionalEdit.createFile(path, { contents: pngFile });
Dies sollte die Leistung erheblich verbessern, insbesondere bei der Arbeit mit größeren Dateien.
Code-Aktionsbefehle in resolveCodeAction auflösen
Ein CodeActionProvider kann nun den Befehl von CodeAction in resolveCodeAction verzögert auflösen. Zuvor konnten nur die Bearbeitungen für die Code-Aktion verzögert aufgelöst werden.
Wenn die Berechnung des Befehls teuer ist, ermöglicht dies einem CodeActionProvider, diese Arbeit aufzuschieben, bis die Code-Aktion angewendet werden soll.
Kontextmenü editor/lineNumber
Wir haben das Menü editor/lineNumber/context finalisiert. Dies ermöglicht Erweiterungsautoren, Aktionen zu einem Kontextmenü beizutragen, das an der Zeilennummer des Editors und dem Glyphenrand verankert ist. Aktionen, die zu diesem Menü beigetragen werden, erhalten die Zeilennummer als Befehlsargument und können den Kontextschlüssel editorLineNumber in ihren when-Klauseln referenzieren.
Verbesserungen der Authentifizierungs-API
Die Präferenz für Authentifizierungssitzungen ist nun arbeitsbereichsbewusst.
Für Authentifizierungsanbieter, die das Anmelden mit mehreren Konten gleichzeitig unterstützen (wie Microsoft), wird der Benutzer aufgefordert, ein zu verwendendes Konto auszuwählen, wenn vscode.authentication.getSession mit createIfNone: true aufgerufen wird.
Vorheriges Verhalten
Diese Einstellung wird gespeichert, bis vscode.authentication.getSession mit dem Flag ClearSessionPreference aufgerufen wird.
Neues Verhalten
Diese Einstellung wird pro Arbeitsbereich gespeichert, bis vscode.authentication.getSession in diesem Arbeitsbereich mit dem Flag ClearSessionPreference aufgerufen wird.
Dieses Verhalten wurde eingeführt, um Erweiterungen zu ermöglichen, verschiedene Konten für verschiedene Arbeitsbereiche zu verwenden und diese Einstellungen zu speichern.
Hinweis: Die Einstellung ist erweiterungsspezifisch. Wenn also eine Erweiterung
vscode.authentication.getSessionaufruft, hat dies keinen Einfluss auf die Sitzungseinstellung einer anderen Erweiterung, dievscode.authentication.getSessionaufruft.
Unterstützung für Microsoft Sovereign Cloud in Desktop
In dieser Iteration haben wir einen neuen Authentifizierungsanbieter in das Kernprodukt integriert: Microsoft Sovereign Cloud. Dieser Anbieter dient zur Authentifizierung von Benutzern bei der Microsoft Cloud for Sovereignty, wie z. B. Azure US Government, Azure China usw. Intern funktioniert er identisch mit dem Microsoft-Authentifizierungsanbieter, nur mit anderen URLs. Wenn Sie diesen Authentifizierungsanbieter verwenden möchten, können Sie den Benutzer anleiten, den Wert microsoft-sovereign-cloud.endpoint festzulegen, der einige Standardwerte hat, aber auch benutzerdefinierte Sovereign Cloud-URLs unterstützt.
Bedenken Sie, dass die meisten Benutzer kein Sovereign Cloud-Konto haben. Unsere Empfehlung ist, dass Sie, wenn Sie Sovereign Clouds unterstützen möchten, es den Benutzern ermöglichen sollten, sich über Sovereign Clouds anzumelden, aber dies nicht in den Hauptworkflow aufnehmen sollten, um die Benutzer nicht zu verwirren.
Vorgeschlagene APIs
Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich, und Erweiterungsautoren können sie ausprobieren. Wie immer freuen wir uns über Ihr Feedback. Hier sind die Schritte, um eine vorgeschlagene API auszuprobieren:
- Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu
package.json#enabledApiProposalshinzu. - Verwenden Sie das neueste vscode-dts und führen Sie
vscode-dts devaus. Es lädt die entsprechendend.ts-Dateien in Ihren Arbeitsbereich herunter. - Sie können nun gegen den Vorschlag programmieren.
Sie können keine Erweiterung veröffentlichen, die eine vorgeschlagene API verwendet. Es kann zu Breaking Changes in der nächsten Version kommen und wir möchten niemals bestehende Erweiterungen beeinträchtigen.
Mehrere Bereiche formatieren
Die API DocumentRangeFormattingEditProvider verfügt über eine optionale vorgeschlagene Funktion zur gleichzeitigen Formatierung mehrerer Bereiche. Durch die Übernahme dieser API verbessern Anbieter den Fluss der Formatierung modifizierter Bereiche, da nur eine einzige Anfrage an einen Sprachdienst erforderlich ist.
Metadaten für Dokumenten-Drop
Dieser neue Vorschlag erweitert die vorhandene API zum Ablegen in den Editor, um den neuen Drop-Selektor zu unterstützen. Anbieter können ihn verwenden, um eine bessere Erfahrung beim Ablegen in den Editor zu bieten.
Der erste Teil dieses Vorschlags fügt der DocumentDropEdit eine Eigenschaft label hinzu. Dieses lesbare Label beschreibt die Bearbeitung und wird in der Drop-Selektor-Benutzeroberfläche angezeigt.

Der zweite Teil fügt ein zusätzliches Argument metadata zu registerDocumentDropEditProvider hinzu. Dieses Metadatenargument identifiziert den Anbieter und teilt VS Code mit, für welche Inhaltstypen es gilt.
vscode.languages.registerDocumentDropEditProvider(
'markdown',
new InsertBase64ImageProvider(),
{
// Unique id that identities this provider
id: 'insertBase64Image',
// Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
// You can also use wildcards, such as `image/*` which matches any image content that is dropped.
dropMimeTypes: ['image/*']
}
);
Das Array dropMimeTypes kann die Leistung verbessern, da Ihr Anbieter nur für relevante abgelegte Inhalte aufgerufen wird.
Technik
Update auf Electron 22
In diesem Meilenstein haben wir unser Experiment mit der Verwendung eines benutzerdefinierten Allocators für den Erweiterungs-Host abgeschlossen und sind bereit, Electron 22 in VS Code Desktop zu integrieren. Wir möchten uns bei allen bedanken, die sich an den Self-Hosting-Tests auf Insiders-Builds beteiligt und frühes Feedback gegeben haben. Dieses Update bringt Chromium 108.0.5359.215 und Node.js 16.17.1 mit sich.
VS Code Day
Sie können sich alle Höhepunkte vom VS Code Day in der YouTube-Playlist VS Code Day 2023 ansehen. Dort finden Sie Sitzungen zu Themen wie GitHub Copilot, Data Science und TypeScript sowie die Keynote von Erich Gamma und Kai Maetzel, in der sie erklären, wie das Team VS Code entwickelt und ausliefert.
Vielen Dank
Last but not least, ein großes Danke an die Mitwirkenden von VS Code.
Fehlerverfolgung
Beiträge zu unserer Fehlerverfolgung
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @tamuratak (Takashi Tamura)
- @Kathund (Kath)
- @ArturoDent (ArturoDent)
Pull-Anfragen
Beiträge zu vscode
- @a-stewart (Anthony Stewart): Unterstützen Sie das Kopieren von Nicht-PNGs und warten Sie auf den Fokus, um Race Conditions zu vermeiden PR #180322
- @andrewbranch (Andrew Branch): [typescript-language-features] Unterstützung für den Ersatz von "Gehe zu Definition" durch "Gehe zur Quell-Definition" nach Präferenz PR #178840
- @c-claeys (Cristopher Claeys): Unterstützung für Multi-Range-Formatierung hinzufügen PR #163190
- @donaldnevermore (Donald33 Wang): Unterstützung für benutzerdefinierte Switch-Case-Einrückung PR #179670
- @FlorentRevest (Florent Revest): Debug-Sitzung: Verwenden Sie eine Warteschlange, um sicherzustellen, dass der Status des Debuggee in der richtigen Reihenfolge verarbeitet wird PR #180410
- @gjsjohnmurray (John Murray): Legen Sie eine maximale Höhe für Kommentare fest und fügen Sie vertikales Scrollen hinzu (#_174629) PR #180044
- @hermannloose (Hermann Loose): Ermöglichen Sie, einzelne Kommentare als Entwurf zu markieren PR #173305
- @iliazeus (Ilia Pozdnyakov): Unterstützung für F20-F24-Tasten in Tastenkombinationen hinzufügen PR #179591
- @jeanp413 (Jean Pierre): Behebt, dass die konfigurierte Standard-Shell beim Verbinden mit Remote nicht verwendet wird PR #175844
- @jjaeggli (Jacob Jaeggli): Hilfedialog für Barrierefreiheit verwendet semantisches Markup für assistierende Technologien PR #179726
- @KapitanOczywisty: PHP-Grammatik aus Fork aktualisieren PR #180100
- @LakshyAAAgrawal (Lakshya A Agrawal): Tippfehler in vscode.d.ts beheben PR #177377
- @mahmoudsalah1993 (Mahmoud Salah): Schlüssel korrekt zurückgeben, wenn eine einzelne userDataProfileContentH vorhanden ist… PR #178517
- @Mai-Lapyst: Behebt das versehentliche Starten aller onTaskType-Erweiterungen beim Ausführen einer beliebigen Aufgabe; behebt #175821 PR #178679
- @maxmmyron (Max): Behebt: Pfeilklick im Diff-Editor aktiviert Haltepunkt PR #179130
- @mblout (Michael Blout): Debug-API für Änderungen der Aufrufstapelauswahl hinzufügen (63943) PR #179132
- @MonadChains (MonadChains): Issue 151220/current timezone offset variable hinzufügen PR #170518
- @simon04 (Simon Legner): terminalActions: "Letzte URL öffnen" PR #173217
- @SimonSiefke (Simon Siefke): behebt: Drucken der Erweiterungs-ID in mainThreadExtensionService PR #179553
- @spahnke (Sebastian Pahnke): [Monaco]
monaco.editor.registerEditorOpenerMethode hinzufügen, um Editor-Öffnungsoperationen abzufangen PR #177064 - @sumneko (最萌小汐): Lua-Grammatik aktualisieren PR #177798
- @tisilent (xie jialong 努力鸭): Behebt #159471 PR #177961
- @tomheaton (Tom Heaton): Behebt den Befehl
collapseAll, wenn kein Ordner geöffnet ist PR #180330 - @weartist (Han)
- Unterstützung für das Öffnen von integrierten und externen Terminals mit… PR #168879
- Unterstützung für das Breakpoint-Widget hinzugefügt, das sich automatisch an die Breite anpasst, wenn… PR #179551
- Bestätigung vor dem Entfernen einer Zelle für #173481 hinzufügen PR #179776
- @Wundero (Sam Riddle): Definierte Variable anstelle einer internen Eigenschaft verwenden PR #178701
- @yiliang114 (易良)
- behebt: schließt #176763, ändert die Bedingungen für das Laden von vscode-web-playground PR #176771
- chore: falschen Servicenamen umbenennen PR #177954
- behebt: Tippfehler PR #179581
- @YinDongFang (dongfang): Behebt, dass die 'Window'-Taste in Firefox als 'unbekannt' behandelt wird (#_175739) PR #175740
Beiträge zu vscode-js-debug
Beiträge zu vscode-json-languageservice
Beiträge zu vscode-pull-request-github
- @Balastrong (Leonardo Montini)
- @eastwood (Clinton Ryan): Fehler bei beschädigten oder fehlerhaften SSH-Konfigurationsdateien ordnungsgemäß behandeln PR #4644
- @kabel (Kevin Abel)
- @ypresto (Yuya Tanaka): Behebt falsche Repo-URL für verschachtelte Repos im Arbeitsbereich (Kopieren-Permalink beheben) PR #4711
Beiträge zu monaco-editor
- @dneto0 (David Neto): WebGPU Shading Language Tokenizer mit Tests hinzufügen PR #3884
- @kisstkondoros (Tamas Kiss): Referenzfehler in der Konvertierungsmethode von OutlineAdapter beheben PR #3924
- @tamayika: moduleResolution auf node16 ändern und TS 5.0 übernehmen PR #3860
Beiträge zu devcontainers/cli
- @aaronlehmann (Aaron Lehmann): Unterstützung für Docker-Anmeldeinformationshelfer hinzufügen PR #460