August 2023 (Version 1.82)
Update 1.82.1: Das Update behebt dieses Sicherheitsproblem Problem.
Update 1.82.2: Das Update behebt diese Probleme.
Update 1.82.3: Das Update behebt dieses Sicherheitsproblem Problem.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Willkommen zur August 2023-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Sie hoffentlich begeistern werden. Hier sind einige der wichtigsten Highlights:
- Barrierefreiheitsverbesserungen - Unterstützung für die Barrierefreiheitsansicht für Inline-Vervollständigungen, aktualisierte Tastenkombinationen.
- Integrierte Portweiterleitung - Leiten Sie lokale Serverports von VS Code aus weiter.
- Sticky Scroll-Updates - Scrollt horizontal mit dem Editor, zeigt die letzte Zeile im Gültigkeitsbereich an, Falt-UI.
- Neue Diff-Editor-Funktionen - Verschieben von Code erkennen, dynamisches Umschalten zwischen Inline- und Side-by-Side-Ansicht.
- Befehlszentrale jetzt standardmäßig angezeigt - Schnelles Öffnen von Dateien oder Ausführen von Befehlen in der Titelleiste.
- Notebook-Ausgaben kopieren - Einfaches Kopieren von Zellenausgaben sowie generierten Bildern.
- WebAssembly-Debugging - Dekompilieren Sie WASM-Code, um durch ihn zu steppen und Breakpoints zu setzen.
- Neue TypeScript-Refactorings - Refactorings zum Verschieben in Dateien und Inline-Variablen.
- Neues Thema zur Python-Formatierung - Erfahren Sie, wie Sie Formatierer wie autopep8 und Black integrieren.
- Vorschau: GitHub Copilot - Der Befehl CreateWorkspace zeigt die Dateistruktur des vorgeschlagenen Codes in der Vorschau 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
Fokussierte Ansicht in der Fenster-Titelleiste
Die Einstellung window.title verfügt jetzt über eine Variable ${focusedView}, die den Namen der Ansicht in der Titelleiste anzeigt, wenn eine Ansicht gerade fokussiert ist.
Barrierefreiheitsansicht für Inline-Vervollständigungen
Inline-Vervollständigungen, wie sie beispielsweise von der GitHub Copilot-Erweiterung stammen, können jetzt in der Barrierefreiheitsansicht inspiziert werden.
Verbesserte Navigationskonsistenz im gesamten Workbench
In der letzten Iteration haben wir die Erfahrung beim Navigieren zwischen einem Eingabefeld (z. B. Suche oder Filter) und seinen Ergebnissen über Komponenten wie die Erweiterungsansicht, den Tastenkombinationseditor und mehr mit ⌘↓ (Windows, Linux Ctrl+Down) und ⌘↑ (Windows, Linux Ctrl+Up) konsistent gemacht. Dies wurde auf den Einstellungen-Editor und das Kommentarsteuerelement von GitHub Pull Requests ausgeweitet.
Dies funktioniert auch für die Navigation zwischen dem Terminal und dem zugänglichen Terminalpuffer.
Aktualisierte Tastenkombinationen für zugängliche Terminalpuffer
Zuvor wurde der zugängliche Terminalpuffer über Shift+Tab geöffnet. Dies kollidierte mit einer vorhandenen Tastenkombination in einigen Shells. Daher haben wir diese Tastenkombination zugunsten von ⌘↓ (Windows, Linux Ctrl+Down) und ⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2) entfernt, um mit den anderen Barrierefreiheitsansichten übereinzustimmen.
Aktionen in der Barrierefreiheitsansicht
Aktionen in der Barrierefreiheitsansicht ermöglichen es Screenreader-Benutzern, zu nächstem/vorherigem zu navigieren, die Barrierefreiheits-Ausführlichkeit zu deaktivieren und mehr für ein bestimmtes Feature. Diese Aktionen befinden sich in einer praktischen Symbolleiste in der Ansicht, sodass der aktuelle Kontext beibehalten wird.
Zu Symbol springen in der Barrierefreiheitsansicht
Dialogfelder mit Barrierefreiheitshilfe und einige Barrierefreiheitsansichten verfügen jetzt über die Aktion Zu Symbol springen (⇧⌘O (Windows, Linux Ctrl+Shift+O)), um eine schnellere Navigation durch Inhalte zu ermöglichen.
Terminal-Puffer fokussieren nach Ausführung
Das Terminal verfügt jetzt über die Einstellung terminal.integrated.focusAfterRun, sodass Benutzer festlegen können, ob der zugängliche Terminalpuffer (accessible-buffer), das Terminal selbst (terminal) oder nichts (none) fokussiert werden soll, wenn Terminal: Ausgewählten Text im aktiven Terminal ausführen aufgerufen wird.
Workbench
Integrierte Portweiterleitung
VS Code verfügt jetzt über ein integriertes Portweiterleitungssystem. Mit dieser Funktion können Sie lokal laufende Dienste über das Internet für andere Personen und Geräte freigeben. Um sie zu verwenden, wählen Sie die Schaltfläche Port weiterleiten in der Ansicht Ports im Panel-Bereich (Ports: Auf Ports-Ansicht fokussieren).

Theme: Codesong (Vorschau auf vscode.dev)
Lesen Sie mehr über Portweiterleitung im Benutzerhandbuch Portweiterleitung.
Befehlszentrale jetzt standardmäßig aktiviert
Die Befehlszentrale wurde vor einigen Monaten als schnelle Möglichkeit eingeführt, VS Code zu entdecken und damit zu interagieren. Sie können sie als Ausgangspunkt für die Suche nach einem Befehl in der Befehlspalette, das Ausführen einer Aufgabe und andere schnelle Interaktionen nutzen. Wir haben ein Experiment durchgeführt, bei dem die Befehlszentrale in der Titelleiste angezeigt wurde, und positives Feedback erhalten, sodass wir der Meinung waren, dass es an der Zeit ist, sie standardmäßig zu aktivieren.
Hier ist ein Video, das die Befehlszentrale und auch die Vorwärts- und Rückwärts-Schaltflächen verwendet.
Wir sehen ein immenses Potenzial für die Befehlszentrale, der Mittelpunkt für die Suche nach allem in VS Code zu sein. Freuen Sie sich also auf weitere Verbesserungen in der Zukunft!
Hinweis: Wenn Sie die Befehlszentrale nicht anzeigen möchten, können Sie mit der rechten Maustaste auf die Titelleiste klicken und den Eintrag Befehlszentrale im Dropdown-Menü deaktivieren, um sie auszublenden.
Steuerung, wie angeheftete Editoren geschlossen werden, per Tastatur oder Maus
Es gibt eine neue Einstellung workbench.editor.preventPinnedEditorClose für mehr Kontrolle darüber, wie angeheftete Tabs auf Tastenkombinationen oder Mausklicks in der Mitte reagieren, um einen Editor zu schließen. Standardmäßig wird ein angehefteter Tab nicht durch Tastatur- oder Mausinteraktionen geschlossen (Standardwert keyboardAndMouse). Sie können diese Einstellung entsprechend ändern
keyboardAndMouse- Ein angehefteter Tab wird nicht durch eine Tastenkombination oder einen Mausklick in der Mitte geschlossen (Standard seit1.82.x).keyboard- Ein angehefteter Tab wird nicht über eine Tastenkombination geschlossen (Standard bis1.81.x).mouse- Ein angehefteter Tab wird nicht durch einen Mausklick in der Mitte geschlossen.never- Ein angehefteter Tab wird immer durch eine Tastenkombination oder einen Mausklick in der Mitte geschlossen.
Neue und aktualisierte themenbezogene Farben für die Statusleiste
Die Statusleiste bietet bereits viele themenbezogene Farben für ihre Elemente. Jetzt gibt es mehr Farben, um die Hover-Vordergrund- und -Hintergrundfarben themenbezogen zu gestalten
statusBarItem.errorHoverBackgroundstatusBarItem.errorHoverForegroundstatusBarItem.warningHoverBackgroundstatusBarItem.warningHoverForegroundstatusBarItem.remoteHoverBackgroundstatusBarItem.remoteHoverForegroundstatusBarItem.offlineHoverBackgroundstatusBarItem.offlineHoverForeground
Die folgenden beiden Farbnamen wurden aktualisiert, da die Farbe nicht mehr für die gesamte Statusleiste gilt, sondern nur für den Remote-Indikator
statusBar.offlineBackgroundumbenannt instatusBarItem.offlineBackgroundstatusBar.offlineForegroundumbenannt instatusBarItem.offlineForeground
Editor
Sticky Scroll
In dieser Iteration gab es mehrere Verbesserungen an der Sticky Scroll-Benutzeroberfläche, die am oberen Rand des Editors verfügbar ist (Ansicht: Sticky Scroll umschalten).
- Jetzt scrollt Sticky Scroll standardmäßig seitwärts, wenn die horizontale Scrollleiste des Editors gescrollt wird. Diese Funktion kann deaktiviert werden, indem
editor.stickyScroll.scrollWithEditordeaktiviert wird. - Es ist möglich, die letzte Zeile eines Gültigkeitsbereichs anzuzeigen, indem Sie die
Shift-Taste gedrückt halten und über eine Sticky Scroll-Zeile fahren. Ein Klick auf eine Zeile bei gedrückterShift-Taste verschiebt den Editor-Cursor zur letzten Zeile des Gültigkeitsbereichs. - Falt-Icons wurden zur Sticky Scroll-Spalte hinzugefügt. Das Rendering dieser Icons folgt der Einstellung
editor.showFoldingControls, die das Rendering der Falt-Icons in der Editor-Spalte steuert.
JSON beim Speichern sortieren
Es ist jetzt möglich, JSON- oder JSONC-Dateien (JSON mit Kommentaren) beim Speichern zu sortieren. Verwenden Sie die Einstellung json.sortOnSave.enable, um diese Funktion zu aktivieren.
Code-Aktionen und Schnelle-Fehlerbehebung-Navigation per Tastatur
Sie können jetzt schnell durch die Menüs Schnelle Fehlerbehebung, Code-Aktionen oder Quellcodeverwaltung (sie verwenden die "Aktion"-Steuerung) navigieren, indem Sie ein beliebiges Stichwort oder einen Buchstaben eingeben, der mit den verfügbaren Menüoptionen übereinstimmt. Der Filter verwendet unscharfe Übereinstimmung und die Suche beschränkt sich nicht nur auf den ersten Buchstaben oder das Präfix, sondern umfasst auch den gesamten Label-Text.

Diff-Editor
In dieser Version haben wir den neuen Diff-Editor standardmäßig aktiviert. Wir haben auch einige der neuen Diff-Editor-Funktionen verbessert und viele Fehler behoben.
Verschobener Code-Erkennung
In dieser Iteration haben wir die Funktion zur Erkennung verschobener Codes verfeinert. Sie kann mit "diffEditor.experimental.showMoves": true oder im Kontextmenü des Diff-Editors aktiviert werden. Wenn aktiviert, werden Codeblöcke, die von einer Stelle an eine andere Stelle in derselben Datei verschoben wurden, erkannt und Pfeile gezeichnet, um anzuzeigen, wohin die Codeblöcke verschoben wurden.
Code-Verschiebungen werden auch dann erkannt, wenn sie leicht modifiziert wurden. Die Schaltfläche Vergleichen kann verwendet werden, um den Block vor und nach der Verschiebung zu vergleichen.

Unveränderte Code-Header einklappen
Verwenden Sie "diffEditor.hideUnchangedRegions.enabled": true oder wählen Sie das Karten-Symbol im Editor-Kontextmenü, um das Einklappen unveränderter Codeblöcke zu aktivieren.
Mit dieser Version gibt es jetzt Breadcrumbs für eingeklappte Codeblöcke, um anzuzeigen, welche Symbole eingeklappt sind. Das Klicken auf ein Breadcrumb-Element zeigt das ausgewählte Element an.

Dynamisches Layout
Wenn die Breite des Diff-Editors zu gering ist, schaltet der Editor automatisch in die Inline-Ansicht um. Wenn der Editor wieder ausreichend breit ist, wird das vorherige Layout wiederhergestellt. Stellen Sie "diffEditor.useInlineViewWhenSpaceIsLimited": false ein, um dieses Verhalten zu deaktivieren.
Schaltflächen-Umschaltzustände
Wir haben den Umschaltstil von Schaltflächen im Diff-Editor aktualisiert, um sie besser sichtbar zu machen.
Alter Umschaltstil (nicht umgeschaltet und umgeschaltet) mit gedimmten nicht umgeschalteten Schaltflächen
, 
Neuer Umschaltstil (nicht umgeschaltet und umgeschaltet) mit schattiertem umgeschalteten Hintergrund
, 
Terminal
Steuerung, wie Terminals beim Start wiederhergestellt werden
Die neue Einstellung terminal.integrated.hideOnStartup steuert, ob ein Terminal beim Start der Anwendung automatisch erstellt wird. Folgende Optionen sind verfügbar:
never(Standard): Das Terminalfenster wird beim Start nie ausgeblendet.whenEmpty: Das Terminal wird nur ausgeblendet, wenn keine persistenten Sitzungen wiederhergestellt werden.always: Das Terminal wird immer ausgeblendet, auch wenn persistente Sitzungen wiederhergestellt werden.
Bracketed Paste Mode deaktivieren
Bracketed Paste Mode ist eine Funktion im Terminal, die eingefügten Text in spezielle Sequenzen einpackt, damit die Shell diese Informationen nutzen kann. Shells, die diese Funktion aktivieren, sollen sie ordnungsgemäß unterstützen, aber es kann Gründe geben, warum sie fehlschlägt, woraufhin Sie möglicherweise Text wie [201~ unerwartet beim Einfügen sehen. Diese Funktion kann jetzt explizit deaktiviert werden, wodurch die Funktion deaktiviert wird, auch wenn Shells sie anfordern.
Terminal-Fokus nach Ausführung-Einstellung
Das Terminal verfügt jetzt über die Einstellung terminal.integrated.focusAfterRun, sodass Benutzer festlegen können, ob das Terminal fokussiert werden soll, wenn Terminal: Ausgewählten Text im aktiven Terminal ausführen aufgerufen wird. Die anderen Optionen sind, den zugänglichen Terminalpuffer (accessible-buffer) zu fokussieren oder nichts zu fokussieren (none).
Größenveränderbare Suche
Das Suchfeld des Terminals kann jetzt mit dem Schieberegler auf der linken Seite vergrößert oder verkleinert werden, ähnlich wie beim Editor.

Der Schieberegler wird beim Überfahren oder Ziehen hervorgehoben, um die Größe des Suchfeldes zu ändern.
Schnellere Darstellung, wenn GPU-Beschleunigung deaktiviert ist
Die Leistung des "DOM-Renderers", der bei deaktivierter GPU-Beschleunigung verwendet wird, wurde dank einer Überarbeitung der Komponente erheblich verbessert. Die Überarbeitung konzentrierte sich auf die Reduzierung der Anzahl der verwendeten DOM-Elemente, und die Einsparungen skalieren deutlich besser, je größer das Terminal ist.
Beim Testen eines typischen Render-Aufrufs auf einem Terminal mit 117 Spalten und 36 Zeilen dauerte es zuvor etwa 10 ms und danach etwa 2 ms. Die Vergrößerung des Terminals auf 300x100 auf dem Testrechner ergab eine Renderzeit von etwa 25-35 ms davor und etwa 4-5 ms danach.
Bessere Auswahl-Darstellung
Wenn die GPU-Beschleunigung ausgeschaltet ist, ist die Auswahl-Darstellung jetzt dieselbe wie beim WebGL-Renderer, und alle Hintergründe werden in die Auswahl-Hintergrundfarbe des Themas geändert, um einen guten Kontrast und Konsistenz zu gewährleisten.

Beachtung des halben Mindestkontrastverhältnisses für gedimmten Text
Die Funktion für das Mindestkontrastverhältnis ermöglicht es dem Terminal, mehr Kontrolle über die Vordergrundfarben im Terminal zu übernehmen, um sicherzustellen, dass sie ein bestimmtes Kontrastverhältnis aufweisen. Ein Problem mit dieser Funktion war in der Vergangenheit, dass gedimmter Text (CSI 2 m) ebenfalls das Kontrastverhältnis berücksichtigte, was bedeutete, dass er genauso auffällig erscheinen konnte wie regulärer Text. Die automatische Vervollständigung von PowerShell ist ein Beispiel, bei dem dies nicht gut funktionierte.
Gedimmter Text hat nun nur die **halben** Kontrastanforderungen. Obwohl dies bedeutet, dass der Text möglicherweise nicht mehr das Mindestkontrastverhältnis erreicht, unterscheidet er sich nun offensichtlich von regulärem Text, was wichtiger ist.

Konfigurieren des Cursor-Aussehens bei Deaktivierung
Das Aussehen des Cursors im Terminal, wenn er nicht fokussiert ist, kann jetzt mit terminal.integrated.cursorStyleInactive konfiguriert werden. Dies unterstützt alle Stile des vorhandenen terminal.integrated.cursorStyle sowie outline (Standard) und none.

Verbesserte Verhalten von "Erkannten Link öffnen" im Terminal
Der Befehl Erkannten Link öffnen (⇧⌘O (Windows, Linux Ctrl+Shift+O)) wurde so geändert, dass eine hohe Leistung beibehalten wird, während gleichzeitig die Suche nach Links im gesamten Terminalpuffer erheblich erleichtert wird. Zuvor wurden nur Links für den sichtbaren Bereich und etwas darüber hinaus mit einer umständlichen Schaltfläche Weitere Links anzeigen am Ende zur Suche im Rest des Puffers bereitgestellt.

Jetzt werden Links im sichtbaren Bereich sofort angezeigt, sodass die schnelle Auswahl so schnell wie möglich angezeigt werden kann.

Sobald die schnelle Auswahl angezeigt wird, werden im Hintergrund Links für den Rest des Terminalpuffers erkannt. Beim Tippen zur Filterung wartet VS Code, bis alle Ergebnisse vorliegen, und schließt sie in die gefilterten Ergebnisse ein.

Beachten Sie, dass CodeQL.yml erst aufgenommen wurde, als ein Filter eingegeben wurde, da es sich außerhalb des sichtbaren Bereichs befand.
Neue Linkformate
Die folgenden Linkformate im GNU-Stil werden jetzt in Terminals erkannt:
sourcefile:lineno.columnsourcefile:line1-column1.column2sourcefile:line1.column1-line2.column2
Debuggen
JavaScript Debugger
WebAssembly-Debugging
Der JavaScript-Debugger dekompiliert WebAssembly-Module nun automatisch in das WebAssembly Textformat und ermöglicht Ihnen das Durchsteppen und Setzen von Breakpoints in den dekompilierten Modulen.

Theme: Codesong (Vorschau auf vscode.dev)
Verbesserungen beim Laden von Source Maps
Wir haben in dieser Version viele Verbesserungen an der Art und Weise vorgenommen, wie Source Maps geladen werden.
- Source Maps werden in einigen gängigen Fällen, z. B. bei Anwendungen, die mit dem
tsc-Befehlszeilenprogramm kompiliert wurden, 3-5 Mal schneller geladen. - Hot Module Reloading vom Vite-Entwicklungsserver wird nun unterstützt.
- Source Maps können nun automatisch von authentifizierten Endpunkten geladen werden.
Testen
Verbesserter Statusbereich
Der "Statusbereich" unter dem Filterfeld in der Testansicht ist nun prägnanter und bietet außerdem eine klickbare Aktion, um die zuletzt ausgeführten Tests erneut auszuführen. Wenn Sie die Alt-Taste gedrückt halten, während Sie auf die Schaltfläche zum erneuten Ausführen klicken, werden stattdessen diese Tests debuggt.

Unterstützung für Linkerkennung in Testausgaben
Die Linkerkennung läuft jetzt im Terminal, wo die Testausgabe angezeigt wird. Dateinamen, Pfade und URIs sind nun anklickbar.
Verbesserte Erfahrung für testkorrelierte Ausgaben
Test-Erweiterungen können Konsolenausgaben mit bestimmten Tests oder Standorten korrelieren. Zuvor erschien jede auf diese Weise erstellte Ausgabe als eigenes Element in der Testergebnisansicht und wurde beim Auswählen in einem Texteditor geöffnet.
Jetzt werden sie in einem ordnungsgemäßen Terminal angezeigt, und die Navigation zu einer Ausgabenachricht öffnet ein Terminal mit der Ausgabe dieses Tests und der ausgewählten Nachricht.
Notebooks
Zellenausgabe kopieren
Das Menü der Zellenausgabe enthält jetzt eine Option zum Kopieren der Ausgabe in die System-Zwischenablage. Das Kontextmenü kann auch für Bildausgaben verwendet werden, indem Sie mit der rechten Maustaste auf das Bild klicken und den Befehl Ausgabe kopieren auswählen.
Theme: Bearded Theme feat. Gold D Raynh (Vorschau auf vscode.dev)
Sprachen
TypeScript 5.2
VS Code wird nun mit TypeScript 5.2.2 ausgeliefert. Dieses wichtige Update bringt neue TypeScript-Sprachfunktionen, bessere Leistung und viele wichtige Verbesserungen und Fehlerbehebungen. Sie können über TypeScript 5.2 im TypeScript Blog lesen.
Refactoring "In Datei verschieben"
Das Refactoring In Datei verschieben für JavaScript und TypeScript ermöglicht es Ihnen, eine Klasse, Funktion oder Konstante in eine vorhandene Datei zu verschieben. Dies aktualisiert auch automatisch alle Verweise auf das Symbol und aktualisiert bei Bedarf die Importe.
Wenn Sie In Datei verschieben auswählen, zeigt VS Code Ihnen eine Liste aller Dateien im aktuellen TypeScript- oder JavaScript-Projekt an. Sie können mit der Eingabe beginnen, um die gewünschte Datei schnell zu finden.
Alternativ können Sie Vorhandene Datei auswählen... verwenden, um eine Datei mit dem normalen Dateiauswahldialog auszuwählen, oder Neuen Dateipfad eingeben..., um einen neuen zu erstellenden Dateipfad anzugeben.
Refactoring "Variable inline setzen"
Das Refactoring Variable inline setzen für JavaScript und TypeScript ersetzt alle Vorkommen einer Variablen durch ihren konstanten Wert.
Dieses Refactoring ist oft am nützlichsten beim Umschreiben von vorhandenem Code. Zum Beispiel, wenn eine Variable deklariert und dann sofort zurückgegeben wird, können Sie die Variable inline verwenden, um die zusätzliche Deklaration zu entfernen und den Wert direkt zurückzugeben.
function add(a, b) {
const result = a + b;
return result;
}
Nachdem `inline variable` auf `result` ausgeführt wurde
function add(a, b) {
return a + b;
}
Klickbare Parameterhinweise
Sie können nun auf Parameterhinweise klicken, um schnell zur Parameterdeklaration zu springen. Nachdem Sie Inline-Hinweise aktiviert haben, können Sie
"editor.inlayHints.enabled": "on",
"typescript.inlayHints.parameterNames.enabled": "all",
"javascript.inlayHints.parameterNames.enabled": "all"
Strg/Cmd gedrückt halten und auf den Parameternamen klicken, um zur Deklaration dieses Parameters zu springen.
Wir planen, Zur Definition springen für andere JavaScript- und TypeScript-Inline-Hinweise in zukünftigen Versionen zu aktivieren.
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
- Bessere Zuverlässigkeit von Remote-Tunnel-Verbindungen.
- Neuer Befehl Docker in WSL installieren.
- Anleitungsleitfaden für Prebuild Dev Containers.
Sie können sich über neue Erweiterungsfunktionen und Fehlerbehebungen in den Release Notes für Remote Development informieren.
Beiträge zu Erweiterungen
GitHub Copilot
Workspaces aus der Chat-Ansicht erstellen
Sie können jetzt /createWorkspace verwenden, um Workspaces aus einer natürlichsprachlichen Beschreibung in der stabilen Version der GitHub Copilot Chat-Erweiterung zu erstellen.
Wir haben auch folgende Verbesserungen vorgenommen:
- Vorgeschlagene Workspaces werden nun als Dateibäume in der Chat-Antwort gerendert.
- Sie können in Dateien klicken, um eine schreibgeschützte Vorschau im Editor zu öffnen.
- Wenn Copilots anfänglicher Vorschlag nicht ganz richtig war, können Sie Nachfragen stellen, um Copilot bei der Iteration und Verbesserung zu helfen.
Mit Inline-Chat in nicht benannten Editoren mit dem Programmieren beginnen
Es gibt nun einen Hinweis, wie man eine Inline-Chat-Sitzung über ⌘I (Windows, Linux Ctrl+I) startet, wenn Sie einen nicht benannten Texteditor öffnen. Screenreader-Benutzer können diesen Hinweis hören und ihn mit der Einstellung accessibility.verbosity.untitledHint deaktivieren.
Verbesserungen an Quick Chat
Wir haben Quick Chat vor ein paar Monaten eingeführt und schnell iteriert, um eine Erfahrung zu bieten, die wie für VS Code gemacht wirkt.
Highlights dieser Iteration
- Kompaktere Benutzeroberfläche.
- Quick Chat bleibt nun geöffnet, wenn der Fokus verloren geht.
- Schieberegler und "Scroll-to-grow"-Verhalten zur Größenänderung des Fensters.
- Quick Chat öffnen jetzt in der Befehlszentrale.

Insgesamt ist die Benutzeroberfläche kompakter, um sie an andere "Schnellöffnen"-Erfahrungen wie die Befehlspalette anzupassen (weniger Abstand überall, Benutzer- und Copilot-Icons sind kleiner, Schaltflächen sind Inline statt in einer Titelleiste).
Standardmäßig passt sich Quick Chat beim Stellen einer Frage an, um sich auf diese Frage und Antwort zu konzentrieren und die Bildschirmfläche zu minimieren. Wir glauben auch, dass dies hilft, sich auf diese schnellen Fragen zu konzentrieren, die Sie möglicherweise Copilot stellen möchten. Die Historie Ihrer Konversation ist weiterhin verfügbar und Sie können nach oben scrollen, um in der Zeit zurückzugehen.
Aufgrund dieser dynamischen Höhe wollten wir auch eine Möglichkeit zur Größenänderung des Fensters bereitstellen, falls Sie mehr oder weniger Platz benötigen. Es gibt zwei Optionen zur Anpassung der Fenstergröße. Die erste ist das, was wir "Scroll-to-grow" nennen. Wenn Ihr Quick Chat-Fenster aufgrund einer kleinen Antwort klein ist, Sie aber eine frühere lange Antwort sehen möchten, wächst Quick Chat beim Scrollen nach oben auf eine maximale Höhe.
Die Höhe von Quick Chat kann zurückgesetzt werden, um nur die letzte Frage und Antwort anzuzeigen, indem Sie eines der folgenden tun:
- Quick Chat schließen und 30 Sekunden warten.
- Eine weitere Frage stellen oder
/clearausführen (beachten Sie, dass/clearIhre Chat-Historie dauerhaft löscht). - Doppelklick auf den unteren Schieberegler.
Apropos Schieberegler... wir haben auch einen Schieberegler am unteren Rand von Quick Chat, der zur manuellen Anpassung der Höhe von Quick Chat verwendet werden kann. Wenn Sie den Schieberegler verwenden, verzichten Sie auf das Standard-Dynamikverhalten und erklären sich damit einverstanden, "Ich möchte diese Höhe hier belassen, bis sie zurückgesetzt wird".
Hinweis: Wenn Sie zum dynamischen Verhalten zurückkehren möchten, doppelklicken Sie auf den Schieberegler oder geben Sie
/clearin den Chat ein (/clearlöscht Ihre Chat-Historie).
Und zu guter Letzt können Sie Quick Chat über die Befehlszentrale mit der Option Quick Chat öffnen starten.

Terminalauswahl erklären
Copilot kann nun die aktuelle Terminalauswahl erklären, indem Sie Copilot: Dies erklären im Kontextmenü des Terminals auswählen (Rechtsklick oder Shift + Rechtsklick je nach Plattform).

Der Befehl Copilot: Dies erklären öffnet die Chat-Ansicht, in der Copilot eine detaillierte Erklärung liefert.

Natürlichsprachliche Suche für Einstellungen
Der Einstellungen-Editor ermöglicht nun die natürlichsprachliche Suche mit GitHub Copilot Chat.
Die natürlichsprachlichen Suchergebnisse werden derzeit unter den Schlüsselwort-übereinstimmenden Ergebnissen platziert und nach absteigendem Ähnlichkeitswert sortiert. Wir planen jedoch, die Sortierung im nächsten Monat zu korrigieren, damit die Suchergebnisse weiterhin nach ihrer Inhaltsverzeichnergruppe geordnet sind.
Die natürlichsprachliche Suche ist derzeit von Copilot-Embeddings abhängig. Folglich werden die natürlichsprachlichen Suchergebnisse nicht im Einstellungen-Editor angezeigt, wenn die Suche vor dem Vorhandensein der Embeddings erfolgt, d. h. einige Sekunden nach der Aktivierung der GitHub Copilot Chat-Erweiterung.

Thema: Light Pink (Vorschau auf vscode.dev)
Python
Neuer Artikel zur Python-Formatierung
Es gibt ein neues, eigenes Thema zur Python-Formatierung, in dem Sie lernen, wie Sie einen Standardformatierer wie autopep8 oder Black einrichten und ihn über verschiedene Einstellungen anpassen.
Terminalaktivierung über Umgebungsvariablen
Die Python-Erweiterung verfügt nun über einen neuen Aktivierungsmechanismus, der die ausgewählte Umgebung im Terminal aktiviert, ohne explizite Aktivierungsbefehle auszuführen. Diesen Monat beginnen wir mit der Einführung als Experiment, was ihn zur Standarderfahrung macht. Mit dem neuen Ansatz verwenden wir Umgebungsvariablen zur Aktivierung von Terminals, was implizit beim Terminalstart geschieht und daher schneller sein kann, insbesondere für Conda-Umgebungen. Sie können die folgende Benutzer-Einstellung hinzufügen: "python.experiments.optInto": ["pythonTerminalEnvVarActivation"], um sie auszuprobieren.
Wenn Sie Kommentare oder Vorschläge zu diesem Experiment haben, können Sie diese gerne im vscode-python Issue #11039 teilen.
Erneut erstellen oder vorhandene .venv-Umgebung verwenden
Wenn Sie in einem Workspace arbeiten, der bereits einen .venv-Ordner enthält, wurde der Befehl Python: Umgebung erstellen mit Optionen aktualisiert, um die vorhandene Umgebung entweder neu zu erstellen oder zu verwenden. Wenn Sie die Umgebung neu erstellen, wird Ihre aktuelle .venv gelöscht, sodass Sie eine neue Umgebung namens .venv neu erstellen können. Sie können diese neue Umgebung dann anpassen, indem Sie dem Ablauf Python: Umgebung erstellen folgen, um Ihren bevorzugten Interpreter auszuwählen und alle Abhängigkeitsdateien für die Installation anzugeben. Falls die Umgebung nicht gelöscht werden kann, z. B. weil sie aktiv ist, werden Sie aufgefordert, die Umgebung manuell zu löschen.
Alternativ, wenn Sie die vorhandene Umgebung verwenden, wird die Umgebung für Ihren Workspace ausgewählt.
Vorschau-Features
Schnellzugriff-Textsuche
Wir experimentieren damit, Workspace-Suchergebnisse in einem Schnellzugriffsmenü anzuzeigen. Um dies auszuprobieren, führen Sie Suche: Schnelle Textsuche (Experimentell) aus. Dieser Befehl richtet die Schnellauswahl so ein, dass Suchanfragen akzeptiert werden. Geben Sie Text ein, um Übereinstimmungen aus verschiedenen Workspace-Dateien anzuzeigen.
Fokussierte Editoren und Terminals ausblenden
Es gibt eine neue experimentelle Funktion, um nicht fokussierte Editoren und Terminals auszublenden. Ziel dieser Funktion ist es, deutlich zu machen, wohin Text im Vergleich zum üblichen blinkenden Cursor geht.

Das obige Bild zeigt die aktivierte Funktion zum Ausblenden nicht fokussierter Elemente mit einer Deckkraft von 0,5, sodass deutlicher wird, dass der Editor für terminalService.ts den Fokus hat.
Dies kann mit accessibility.dimUnfocused.enabled aktiviert werden und der Grad des Ausblendens wird mit accessibility.dimUnfocused.opacity gesteuert.
Die Funktion deckt derzeit nur Editoren und Terminals ab, aber es ist geplant, sie auf Benutzer zu erweitern, die konfigurieren können, welche Ansichten sie ausblenden möchten.
Erweiterungs-Authoring
Unterstützung für Batch-Bereichsformatierung
Die API DocumentRangeFormattingEditProvider unterstützt jetzt die Stapelverarbeitung. Das bedeutet, dass eine Erweiterung den Editor optional signalisieren kann, dass sie mit mehreren Bereichen gleichzeitig aufgerufen werden kann. Dies reduziert die Anzahl der Aufrufe des Formatierungsanbieters und verbessert somit die Leistung.
Um an der Stapelverarbeitung teilzunehmen, müssen Anbieter eine neue optionale Funktion implementieren: provideDocumentRangesFormattingEdits.
EnvironmentVariableCollection, die auf einen Workspace-Ordner beschränkt sind
Die API EnvironmentVariableCollection unterstützt jetzt die Erstellung einer neuen Sammlung, die auf einen bestimmten Workspace-Ordner beschränkt ist und zusätzlich zur "globalen" Sammlung angewendet wird.
// Get a scoped collection for the first workspace folder
const scoped = context.environmentVariableCollection.getScoped({
workspaceFolder: workspace.workspaceFolders[0]
});
scoped.replace('SCOPED', '1');
// Only terminals created in the first workspace folder will have SCOPED=1 set
Die Python-Erweiterung verwendet diesen Mechanismus, um verschiedene virtuelle Umgebungen einzurichten, je nachdem, zu welchem Ordner ein Terminal in einem Multi-Root-Workspace gehört.
Konfigurieren, wann ein EnvironmentVariableMutator angewendet wird
Die API EnvironmentVariableCollection bietet nun die Möglichkeit, Änderungen innerhalb des Shell-Integrationsskripts anzuwenden, das nach den Shell-Initialisierungsskripten ausgeführt wird. Dies funktioniert nur, wenn die Shell-Integration aktiviert ist, sodass die Änderung sowohl bei der Shell-Erstellung als auch innerhalb der Shell-Integration angewendet werden kann, wenn sie kritisch ist.
context.environmentVariableCollection.prepend('PATH', '/my/custom/path', {
applyAtProcessCreation: true,
applyAtShellIntegration: true
});
Diese Funktion ist nützlich, wenn die betreffende Variable durch ein Shell-Initialisierungsskript mutiert werden könnte.
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 die neueste Version von @vscode/dts und führen Sie
npx @vscode/dts devaus. Dies lädt die entsprechendend.ts-Dateien in Ihren Workspace 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.
Ein contextValue auf TestMessage und Beitragspunkte
Sie können ein contextValue auf TestMessages angeben, das angezeigt wird, wenn Benutzer Aktionen auf diesen Nachrichten ausführen. Darüber hinaus sind zwei neue Menübeitragspunkte verfügbar: testing/message/context und testing/message/content. Ersteres wird in der Test-Ergebnis-Baumansicht auf der Nachricht angezeigt, letzteres über der Nachricht im Editor.
Lesen Sie mehr über contextValue in Issue #190277.
Terminal-Kontextmenü-Beiträge
Zwei neue Menüs werden vorgeschlagen, die es Erweiterungen ermöglichen, eigene Kontextmenüaktionen in das Terminal zu integrieren.
terminal/context- Das Kontextmenü des Terminalsterminal/title/context- Das Kontextmenü der Terminal-Tabs
Terminal-Befehlsausführung abhören
Ein früher Vorschlag für die lang erwartete Möglichkeit, dass Erweiterungen die Terminal-Befehlsausführungs-API abhören können, steht zum Testen bereit. Diese API wird mithilfe von Shell-Integration implementiert und wird nur für Terminals ausgelöst, bei denen sie aktiviert und funktionsfähig ist.
export interface TerminalExecutedCommand {
/**
* The {@link Terminal} the command was executed in.
*/
terminal: Terminal;
/**
* The full command line that was executed, including both the command and the arguments.
*/
commandLine: string | undefined;
/**
* The current working directory that was reported by the shell. This will be a {@link Uri}
* if the string reported by the shell can reliably be mapped to the connected machine.
*/
cwd: Uri | string | undefined;
/**
* The exit code reported by the shell.
*/
exitCode: number | undefined;
/**
* The output of the command when it has finished executing. This is the plain text shown in
* the terminal buffer and does not include raw escape sequences. Depending on the shell
* setup, this may include the command line as part of the output.
*/
output: string | undefined;
}
export namespace window {
/**
* An event that is emitted when a terminal with shell integration activated has completed
* executing a command.
*
* Note that this event will not fire if the executed command exits the shell, listen to
* {@link onDidCloseTerminal} to handle that case.
*/
export const onDidExecuteTerminalCommand: Event<TerminalExecutedCommand>;
}
Die Struktur dieser API ist nicht endgültig, aber die Grundidee wird beibehalten.
Hier ist ein Beispiel für die Verwendung, das auf jeden erfolgreichen git push-Befehl wartet und eine Aktualisierung in der Erweiterung auslöst.
const disposables = [];
disposables.push(
window.onDidExecuteTerminalCommand(command => {
if (command.commandLine.startsWith('git push') && command.exitCode === 0) {
refreshState();
}
})
);
function refreshState() {
/* ... */
}
Zugriff auf Terminal-Auswahl
Eine einfache vorgeschlagene API zum Zugriff auf die Terminal-Auswahl.
export interface Terminal {
/**
* The selected text of the terminal or undefined if there is no selection.
*/
readonly selection: string | undefined;
}
Diese API wird wahrscheinlich ein entsprechendes Änderungsereignis enthalten, bevor sie finalisiert wird, und der API-Name kann sich ändern, um deutlicher zu machen, dass es sich um einen einfachen String und nicht um einen Range-basierten Zugriff wie bei TextEditor.selection handelt.
Fortschritt bei Terminal Quick Fix
Der Terminal Quick Fix-Vorschlag kann jetzt einen regulären VS Code-Befehl auslösen, im Gegensatz zu einem Terminal-Befehl. Diese Änderung erforderte auch eine Änderung des Namens der Terminal-Befehlschnittstelle.
export interface TerminalQuickFixProvider {
/**
* Provides terminal quick fixes
* @param commandMatchResult The command match result for which to provide quick fixes
* @param token A cancellation token indicating the result is no longer needed
* @return Terminal quick fix(es) if any
*/
provideTerminalQuickFixes(
commandMatchResult: TerminalCommandMatchResult,
token: CancellationToken
): ProviderResult<
SingleOrMany<TerminalQuickFixExecuteTerminalCommand | TerminalQuickFixOpener | Command>
>;
}
export class TerminalQuickFixExecuteTerminalCommand {
/**
* The terminal command to run
*/
terminalCommand: string;
constructor(terminalCommand: string);
}
Technik
Electron 25 Update
In diesem Meilenstein stellen wir das Electron 25-Update für unsere stabilen Benutzer bereit. Dieses Update enthält Chromium 114.0.5735.289 und Node.js 18.15.0. Wir möchten uns bei allen bedanken, die auf Insiders-Builds selbst gehostet und frühzeitig Feedback gegeben haben.
Update-Highlights für Node.js
Node.js, das in unserer Desktop-Anwendung und dem eigenständigen ausführbaren Programm gebündelt ist, das mit unseren Servern gebündelt ist, wird von v16 auf v18 aktualisiert. Da es sich um einen Major-Versionssprung handelt, gibt es einige Verhaltens- und Kompatibilitätsänderungen.
-
DNS-Ergebnisreihenfolgen von der Betriebssystem-API werden nicht mehr sortiert. Wir haben
--dns-result-order=ipv4firstfür unseren Erweiterungshost in lokalen und Server-Szenarien hinzugefügt, um Erweiterungen, die diese Änderung möglicherweise noch nicht übernommen haben, nicht zu beeinträchtigen. Zukünftig empfehlen wir, dass Erweiterungen die autoSelectFamily-Option in dersocket.connectAPI verwenden, um die Änderungen der Ergebnisreihenfolge zu berücksichtigen. -
Vorkompilierte Binärdateien aus dem offiziellen Node.js-Repository für Linux sind jetzt mit Linux-Distributionen kompatibel, die auf glibc 2.28 oder neuer basieren. Dies würde die Unterstützung für Ubuntu 18, CentOS 7, RHEL 7 usw. von unseren Servern einstellen. Wir liefern jetzt einen benutzerdefinierten Build von Node.js für unsere Linux-Server, um die Kompatibilität mit glibc 2.17 oder neuer zu gewährleisten. Diese Unterstützung wird sich in zukünftigen Updates ändern, wenn wir keine neueren Node.js-Versionen mehr auf CentOS 7-Images erstellen können. Wir raten unseren Serverbenutzern daher, ihre Betriebssystemversionen zu aktualisieren, wenn sie von dieser Änderung betroffen sind.
Update-Highlights für Chromium
- Nach Updates der Mesa-Version kann die Chromium-Shader-Kompilierung fehlschlagen, was zu Artefakten in der Anwendungs-UI führt. Das Problem ist in Issue #190437 dokumentiert, das auch den Link zum Chromium-Fehlerbericht enthält. Sie können dieses Problem identifizieren, indem Sie mit
--verboseausführen und in den Protokollen nach der folgenden Zeile suchen:ERROR:shared_context_state.cc(81)] Skia shader compilation error. Wenn Sie von diesem Problem betroffen sind, besteht die aktuelle Problemumgehung darin, den GPU-Cache unter~/.config/Code/GPUCachezu löschen. - Wenn Chromium das SwiftShader-Backend für WebGL verwendet, scheint die Leistung sowohl unter Windows als auch unter Linux für unser integriertes Terminal beeinträchtigt zu sein. Als Problemumgehung erkennen wir betroffene Benutzer anhand des
GL_RENDERER-Strings und wechseln zum DOM-Backend für das Terminal. Weitere Details finden Sie in Issue #190195, die auch einen Link zum Chromium-Fehlerbericht enthält.
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)
- @ArturoDent (ArturoDent)
- @rperez030 (Roberto Perez)
Pull-Anfragen
Beiträge zu vscode
- @0o001 (Mustafa Ateş Uzun): Korrektur: Lokalisierungsfehler in Zeichenkette PR #191046
- @alphacoma18 (Alpha Romer Coma): Korrektur von unterstützten Markdown-Lint-Verstößen in Markdown-Dateien PR #190750
- @andyleejordan (Andy Jordan): Guard
$IsWindowsPR #190192 - @bandantonio (Antonio): Korrektur: Fehlender Preisparameter zum Manifestschema hinzugefügt PR #190293
- @ChaseKnowlden (Chase Knowlden): Fügt die fokussierte Ansicht zum Fenstertitel hinzu PR #190216
- @davedash (Dave Dash): Fish-Integration: `--` in der Zeichenkette verwenden, um den Beginn positioneller Argumente zu kennzeichnen… PR #189994
- @demccormack (Daniel McCormack): Korrektur von zsh und bash Shell-Integration bei Verwendung von set -u PR #185425
- @floge07: Korrektur: Unterstrich als gültiges Zeichen in Tunnel-Remote-Adressen zulassen PR #190904
- @gjsjohnmurray (John Murray): Korrektur der kürzlich fehlerhaften Bereinigung veralteter (abgelöster) Erweiterungsordner PR #189335
- @greenie (Joe Green): Korrektur der Farbkonsistenz des Buttons "Scroll to Top" PR #191034
- @hrkw00 (Ryosuke Hirakawa): Korrektur eines Tippfehlers im Kommentar in standaloneLanguages.ts PR #189449
- @hsfzxjy (hsfzxjy)
- Kontextschlüssel notebookEditorCursorAtLineBoundary hinzufügen PR #187679
- Immer nicht leere Auswahl in getMultiSelectedEditorContexts berücksichtigen PR #187704
- Gleichzeitigkeits-Sicherheit von TestResultsViewContent.reveal sicherstellen PR #189756
- Kommentar-Thread mit Ctrl+Pfeil navigierbar machen PR #189913
- Überlauf der Einstellungliste beheben PR #190721
- Stil von verschachtelten Listen in der Markdown-Vorschau korrigieren PR #190936
- @jeanp413 (Jean Pierre)
- Korrektur: Fortsetzung für konfigurierte Standard-Shell wird bei Wiederverbindung zu Codespaces nicht verwendet PR #181832
- Korrektur: Quick Fix für freien Port funktioniert unter Windows nicht PR #190900
- @kfrederix (Karel Frederix): Handler für ResizeObserver in requestAnimationFrame() einpacken PR #183325
- @kon72 (Kon): Befehle zum Ein-/Ausblenden aller unveränderten Regionen hinzufügen PR #190451
- @lucasMarioza: Sicherstellen, dass das Style-Element bei colorizeElement zu ShadowDOM-Komponenten hinzugefügt wird PR #190505
- @neeleshb (Neelesh Bodas)
- Leeren Alt-Text zu dekorativen Bildern für Erweiterungen hinzufügen PR #190607
- Falsche Rolle aus der Titelleiste entfernen. PR #190608
- @rehmsen (Ole): Tastenkombinationskonsistenz von Web mit Electron erhöhen. PR #191061
- @SevenOutman (Doma): "Aufrufhierarchie anzeigen" und "Typhierarchie anzeigen" Aktionen zur Befehlspalette hinzufügen PR #189607
- @songlinn: Korrektur: Verhindern, dass die Historie bei Kompositionsereignissen vorherige/nächste Elemente anzeigt PR #184014
- @timar07 (Timothy): Korrektur: xterm Quick Fix erscheint an falscher Stelle #169162 PR #188693
- @Timmmm (Tim Hutt)
- Dev-Container-Node-Version aktualisieren PR #190346
- Unterstützung von `.` als Zeilen:Spalten-Trennzeichen im Terminal-Link-Detektor PR #190351
- @tisilent (YAYA 刘玉婷)
- Korrektur: Terminal-Suchleiste-Anpassung PR #179398
- Bei Auswahl mit "reveal TerminalFind" suchen PR #190466
- @troy351: listWidget: Redundante Logik entfernen PR #191054
- @weartist (Hans)
- Korrektur #185343 PR #185421
- Einstellung hinzufügen, um das Schließen von angehefteten Tabs bei mittlerem Mausklick zu verhindern (Korrektur #115734) PR #188592
- Korrektur: #188760 PR #189259
- Korrektur: #188751 PR #189616
- Unterstützung für Klick auf "versteckte Zeilen" zum Aufklappen #186406 PR #189657
- Sofortige Suche nach dem Drücken von Enter in "Dateien zum Einbeziehen/Ausschließen"... PR #190473
- Benutzerdefinierten Hover für Schaltflächen der Schnellauswahl-Titelleiste hinzufügen PR #191416
- @zardoy (Vitaly): TypeScript: Bessere Pfad-Übereinstimmung für "In vorhandene Datei verschieben" Quickpick PR #181231
Beiträge zu vscode-css-languageservice
- @bentorkington: Verweis auf veraltete Methode korrigieren PR #359
Beiträge zu vscode-hexeditor
Beiträge zu vscode-js-debug
- @sunilsurana (Sunil Surana): Beschleunigen Sie Sourcemap-Lookups, indem Sie die Existenz von .map-Dateien prüfen PR #1780
Beiträge zu vscode-pull-request-github
- @tobbbe (Tobbe): Schrägstriche aus dem Titel bereinigen PR #5149
Beiträge zu vscode-vsce