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

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:

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.

Dark Modern and Light Modern color themes

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.

Create Profile dropdown with profile templates

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.

Profiles view showing the contents of the Data Science profile template

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.

bookmarks displayed next to breakpoint and stack frame pointer decorations

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.

Standalone color picker control adjusted to blue color

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

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

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

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

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

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

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

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

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.

Extension recommendations notification with a single recommendation Extension recommendations notification with multiple recommendations

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.

Notification about deprecated extension

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.

Using the drop selector in a notebook Markdown cell

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

An image file added as an attachment

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.

Strict nulls in a script block

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.

Continuous run button highlighted on an individual test

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.

Run Python option on context menu with "Run file in terminal" and "Run selection/line" options in the submenu

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.

A chat view as an editor

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.

The codeblock toolbar showing the two new codeblock commands

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

    query "turn on autosave" is correctly resolved to Toggle Auto Save

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

    query "add function" including Azure Functions Create Function command

  • 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.

    Ask GitHub Copilot "no results" option in the Command Palette

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 @param JSDoc-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.getSession aufruft, hat dies keinen Einfluss auf die Sitzungseinstellung einer anderen Erweiterung, die vscode.authentication.getSession aufruft.

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:

  1. Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu package.json#enabledApiProposals hinzu.
  2. Verwenden Sie das neueste vscode-dts und führen Sie vscode-dts dev aus. Es lädt die entsprechenden d.ts-Dateien in Ihren Arbeitsbereich herunter.
  3. 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.

Labels shown in the drop selector

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

Pull-Anfragen

Beiträge zu vscode

Beiträge zu vscode-js-debug

Beiträge zu vscode-json-languageservice

  • @zardoy (Vitaly)
    • [completions] Details wie Default value immer anzeigen PR #183
    • [completion] Keine Duplikate vorschlagen, wenn uniqueItems: true PR #184

Beiträge zu vscode-pull-request-github

Beiträge zu monaco-editor

Beiträge zu devcontainers/cli

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