Juni 2018 (Version 1.25)
Update 1.25.1: Das Update behebt diese Probleme.
Downloads: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball
Willkommen zur Juni 2018-Version von Visual Studio Code. Wir freuen uns sehr, mehrere Features, die letzten Monat als Vorschau angekündigt wurden, nun in der stabilen Version anbieten zu können. Einige der wichtigsten Highlights sind:
- Grid-Editor-Layout - Benutzerdefinierte horizontale und vertikale Editoranordnung.
- Gliederungsansicht - Symbolstruktur für Übersicht und Navigation in Ihren Dokumenten.
- Portabler Modus - VS Code-Konfiguration von einem USB-Stick oder einer Dateifreigabe ausführen oder kopieren.
- Hover-Anzeigoptionen - Steuern Sie die Darstellung von Hover-Informationen.
- Sub-Word-Navigation - Schnelles Navigieren in camelCase-Wörtern.
- Schwebende Debug-Symbolleiste - Halten Sie die Debug-Symbolleiste immer sichtbar, ohne Editor-Tabs zu verdecken.
- Verbesserungen der Erweiterungsansicht - Sehen Sie einfach aktivierte, deaktivierte und empfohlene Erweiterungen.
- Vorschau: Einstellungen-Editor - Jetzt mit einem "Inhaltsverzeichnis" zur Organisation von Einstellungen.
- Language Server Protocol Inspector - Erweiterungsautoren können LSP-Protokollverkehr visualisieren.
- Neues Python Flask Tutorial - Erstellen und debuggen Sie Python Flask-Webanwendungen mit VS Code.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Sie können sich auch dieses Highlight-Video zur 1.25-Version ansehen, erstellt vom Cloud Developer Advocate Brian Clark.
Die Release Notes sind in die folgenden Abschnitte unterteilt, die sich auf die Fokusbereiche von VS Code beziehen. Hier sind einige weitere Updates:
- Workbench - Ziehen Sie Dateien und Ordner in den leeren Explorer, einheitliche Historiennavigation.
- Editor - Intelligente Vorschlagsauswahl, Snippet-Platzhalter-Transformationen.
- Sprachen - Aktualisieren Sie JS/TS-Imports bei Umbenennung von Ordnern, CSS-Pseudoselektoren und -elemente.
- Vorschau-Features - Benutzerinstallation unter Windows, benutzerdefiniertes Werkzeug und Menüleiste für Windows und Linux.
- Erweiterungsentwicklung - Beitragen von Grid-Editor-Layouts, Vorauswahl von Vervollständigungselementen.
- Neue Befehle - Neue Befehle für Grid-Editor-Layouts und Tastenkombinationen.
Insiders: Möchten Sie neue Funktionen so schnell wie möglich sehen? Sie können die nächtliche Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind. Und für die neuesten Nachrichten, Updates und Inhalte zu Visual Studio Code folgen Sie uns auf Twitter @code!
Workbench
Grid-Editor-Layout
Sie können Editoren jetzt sowohl vertikal als auch horizontal anordnen und mehr als 3 Editoren nebeneinander haben.

Um flexible Layouts zu unterstützen, können Sie leere Editorgruppen erstellen. Standardmäßig schließt das Schließen des letzten Editors einer Editorgruppe auch die Gruppe selbst, aber Sie können dieses Verhalten mit der neuen Einstellung workbench.editor.closeEmptyGroups: false ändern.

Es gibt eine vordefinierte Auswahl an Editor-Layouts im neuen Menü Ansicht > Editor-Layout.

Editoren, die sich von der Seite öffnen (z. B. durch Klicken auf die Aktion Editor teilen in der Symbolleiste des Editors), öffnen sich standardmäßig rechts neben dem aktiven Editor. Wenn Sie bevorzugen, Editoren unter dem aktiven zu öffnen, konfigurieren Sie die neue Einstellung workbench.editor.openSideBySideDirection: down.
Es gibt viele neue Befehle zum Anpassen des Editor-Layouts nur mit der Tastatur, aber wenn Sie lieber die Maus verwenden, ist Drag & Drop eine schnelle Möglichkeit, den Editor in jede Richtung zu teilen.

Da Editorgruppen jetzt unbegrenzt sind und auf vielfältige Weise angeordnet werden können, kennzeichnet die Ansicht OFFENE EDITOREN Editorgruppen nicht mehr als Links, Mitte oder Rechts. Stattdessen werden Editorgruppen jetzt mit Zahlen entsprechend ihrer Erstellungszeit gekennzeichnet. Die zuletzt erstellte Editorgruppe befindet sich immer am Ende der Liste OFFENE EDITOREN. Wir haben festgestellt, dass dies ein gutes Modell ist, das Änderungen an der Liste minimiert, wenn Editorgruppen im Layout verschoben werden.

Informationen zu den Auswirkungen auf Erweiterungen und Themes finden Sie im Abschnitt Erweiterungsentwicklung und eine Liste der neuen Befehle für das Grid-Editor-Layout finden Sie unter Neue Befehle.
Profi-Tipp: Wenn Sie die
Alt-Taste gedrückt halten, während Sie mit der Maus über die Symbolleistenaktion zum Teilen eines Editors fahren, wird angeboten, in die andere Ausrichtung zu teilen. Dies ist eine schnelle Möglichkeit, entweder nach rechts oder nach unten zu teilen.

Aufgrund der Arbeit am Grid-Layout haben wir das Verhalten des zentrierten Editor-Layouts geändert.
- Es ist jetzt möglich, jedes Editor-Layout innerhalb des zentrierten Editor-Layouts zu öffnen. Dies bietet dem Benutzer mehr Flexibilität.
- Das zentrierte Editor-Layout wird nicht mehr automatisch basierend auf dem Layout aktiviert und deaktiviert. Da dies manchmal verwirrend war und zu unerwartetem Verhalten führte.
Gliederungsansicht
Die Gliederungsansicht ist aus der Vorschau heraus und jetzt standardmäßig aktiviert. Sie ist ein separater Bereich am unteren Rand des Datei-Explorers. Wenn sie erweitert wird, zeigt sie die Symbolstruktur des aktuell aktiven Editors an.
Die Gliederungsansicht verfügt über verschiedene Sortieren nach-Modi, optionale Cursorverfolgung und unterstützt die üblichen Öffnungsgesten. Sie enthält auch ein Eingabefeld, das Symbole beim Tippen findet oder filtert. Fehler und Warnungen werden ebenfalls in der Gliederungsansicht angezeigt, sodass Sie den Speicherort eines Problems auf einen Blick erkennen können.

Es gibt mehrere Einstellungen für die Gliederungsansicht, mit denen Sie Symbole ein-/ausblenden und die Anzeige von Fehlern und Warnungen steuern können (alle standardmäßig aktiviert).
outline.icons- Rendert Symbole für Gliederungselemente.outline.problems.enabled- Zeigt Fehler und Warnungen für Gliederungselemente an.outline.problems.badges- Verwendet Abzeichen für Fehler und Warnungen.outline.problems.colors- Verwendet Farben für Fehler und Warnungen.
Es gibt auch eine neue API für Erweiterungsautoren.
Portabler Modus
VS Code unterstützt jetzt den Portablen Modus, bei dem alle von VS Code erstellten und verwalteten Daten in der Nähe der Installation gespeichert werden. Dies ermöglicht es Ihnen, eine VS Code-Konfiguration einfach zwischen Umgebungen zu verschieben, z. B. über einen USB-Stick oder eine Dateifreigabe. Der Portable Modus wird für den ZIP-Download unter Windows und Linux sowie für den regulären Anwendungsdownload für macOS unterstützt. Klicken Sie hier, um mehr zu erfahren.
Dateien und Ordner in einen leeren Datei-Explorer ziehen
Es ist jetzt möglich, Dateien, Ordner und VS Code-Arbeitsbereichsdateien in einen leeren Explorer zu ziehen, um sie zu öffnen.

Historiennavigation
Die Navigation durch die Eingabehistorie ist jetzt natürlicher und konsistenter in VS Code. Sie können die Tasten Pfeil nach oben (history.showPrevious) und Pfeil nach unten (history.showNext) verwenden, um die Eingabefelder in den Ansichten "Suchen" und "Probleme" sowie die Suchwerkzeuge im Editor, Terminal und in Webansichten zu durchlaufen.
Der Einfachheit und Konsistenz halber haben wir die Standard-Tastenkombinationen für die Navigation zwischen Eingabefeldern von Pfeil nach oben und Pfeil nach unten in Strg + Pfeil nach oben (oder Cmd + Pfeil nach oben unter macOS) und Strg + Pfeil nach unten (oder Cmd + Pfeil nach unten unter macOS) geändert. Sie können zum vorherigen Verhalten zurückkehren, indem Sie die Tastenkombinationen ⌘↑ (Windows, Linux Ctrl+Up), ⌘↓ (Windows, Linux Ctrl+Down) und ⌘↑ (Windows, Linux Ctrl+Up) aktualisieren.
Hinweis: Wir haben auch alle vorhandenen 18 Befehle zur Historiennavigation entfernt und sie in zwei Befehle history.showPrevious und history.showNext zusammengeführt.
Editor
Hover-Anzeigoptionen
Einige Benutzer bevorzugen es, wenn keine Hover-Vorschläge Text im Editor überdecken, und der Editor-Hover kann jetzt mit drei zusätzlichen Einstellungen angepasst werden. Verwenden Sie editor.hover.enabled, um den Editor-Hover umzuschalten, editor.hover.delay, um die Zeit bis zum Anzeigen des Hoves anzupassen, und editor.hover.sticky, um zu ändern, ob der Hover beim Bewegen der Maus darüber sichtbar bleibt.
Unterwort-Unterstützung
Wir haben neue Befehle für die Unterwort-Navigation und das Unterwort-Löschen. Diese Befehle stoppen an Camel-Case-Positionen und an Unterstrichen (_).

Hier ist ein Beispiel, wie Sie sie binden können.
{ "key": "ctrl+alt+right", "command": "cursorWordPartRight",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+right", "command": "cursorWordPartRightSelect",
"when": "textInputFocus" },
{ "key": "ctrl+alt+left", "command": "cursorWordPartStartLeft",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+left", "command": "cursorWordPartStartLeftSelect",
"when": "textInputFocus" },
{ "key": "ctrl+alt+backspace", "command": "deleteWordPartLeft",
"when": "textInputFocus && !editorReadonly" },
{ "key": "ctrl+shift+alt+backspace", "command": "deleteWordPartRight",
"when": "textInputFocus && !editorReadonly" },
Vorschlagsauswahlen
Sprach-IntelliSense-Anbieter wissen oft, welche Vorschläge am besten sind, und mit dieser Version von VS Code können sie jetzt Vorschläge vorauswählen. Es gibt eine neue API für vorausgewählte Vorschläge, und wenn verfügbar, wählt der Editor diesen Vorschlag anstelle des ersten in der Liste aus.

Snippet-Platzhalter-Transformationen
Snippets unterstützen endlich Platzhalter-Transformationen. Platzhalter-Transformationen sind wie Variablentransformationen, aber dynamischer. Eine Transformation wird angewendet, wenn von einem Platzhalter zum nächsten gewechselt wird, und dies ist die Grammatikregel dafür: ${int/regex/format_string/opts}.
Unten ist ein Beispiel, das "Hello World" durch sein deutsches Gegenstück ersetzt.
"HelloWorld": {
"prefix": "say_hello",
"body": "${1} ${2} -> ${1/Hello/Hallo/} ${2/World/Welt/}"
}

Weitere Details und wie Sie das volle Potenzial von Transformationen nutzen können, finden Sie in der Snippet-Grammatik.
Integriertes Terminal
Leistungsverbesserungen
Der Parser des integrierten Terminals wurde von Grund auf neu geschrieben, um eine verbesserte ANSI-Konformität zu gewährleisten und die Geschwindigkeit, mit der eingehende Daten verarbeitet werden, um etwa 30 % zu erhöhen. Dies war ein Community-Beitrag von upstream zu xterm.js.
Einstellung für Fettdruck-Helligkeit
Das Terminal konvertiert derzeit alle Fettdrucke in die helle Farbvariante. Dies ist bei Terminal-Emulatoren etwas inkonsistent und existiert hauptsächlich aus historischen Gründen. Sie können diese automatische Konvertierung jetzt deaktivieren, um die Verwendung von nicht-hellen Farben für Fettdruck zu ermöglichen.
{
"terminal.integrated.drawBoldTextInBrightColors": false
}
Dies war ein Community-Beitrag von upstream zu xterm.js.
Debugging
Schwebende Debug-Symbolleiste
Im vorherigen Meilenstein haben wir eine neue Einstellung eingeführt, um die Debug-Symbolleiste in der Debug-Ansicht zu verankern ("debug.toolBarLocation": "docked"). In diesem Meilenstein haben wir Benutzerfeedback ausgewertet und versucht, das Verhalten der schwebenden Symbolleiste zu verbessern ("debug.toolBarLocation": "floating").
Der Konsens aus dem Feedback war, dass die Symbolleiste immer sichtbar sein sollte (unabhängig davon, welche Ansicht aktiv ist) und nichts verdecken sollte (z. B. die Editor-Tabs). Daher haben wir die schwebende Symbolleiste "entfesselt", indem wir sie in den Editorbereich ziehen lassen. Dies sollte Benutzern helfen, die stark mit Editor-Tabs arbeiten, aber auch die Debug-Symbolleiste jederzeit sehen möchten.

Da die vorhandene Einstellung debug.hideActionBar durch den Wert hidden in der Einstellung debug.toolBarLocation gehandhabt wird, entfernen wir nun debug.hideActionBar.
Sprachen
TypeScript 2.9.2
VS Code wird jetzt mit TypeScript 2.9.2 ausgeliefert. Diese kleinere Version behebt eine Reihe von Fehlern und verbessert die Stabilität. Sie können über die vollständige Liste der Änderungen hier lesen.
Importpfade bei Umbenennung von Ordnern aktualisieren
Die letzte Version brachte die automatische Aktualisierung von Importpfaden beim Verschieben oder Umbenennen einer JavaScript- oder TypeScript-Datei. Diese Funktion funktioniert jetzt auch beim Verschieben oder Umbenennen eines Verzeichnisses. Standardmäßig wird VS Code Sie erneut fragen, ob wir die Pfade aktualisieren können. Sie können das Verhalten der Abfrage über die Einstellungen javascript.updateImportsOnFileMove.enabled und typescript.updateImportsOnFileMove.enabled steuern.
Gültige Werte sind:
"prompt"- Standard. Fragt, ob Pfade aktualisiert werden sollen."always"- Pfade immer automatisch aktualisieren."never"- Pfade nicht automatisch aktualisieren und nicht nachfragen.
Hierarchische Markdown-Dokumentsymbole
Die integrierte Markdown-Unterstützung verwendet die neue DocumentSymbol-API, um sicherzustellen, dass Markdown-Header in der Gliederungsansicht korrekt verschachtelt sind.

Neue CSS-Pseudoselektoren und Pseudoelemente von MDN
In der April-Version begannen wir, Daten von Mozilla Developer Network zu beziehen, um aktuelle CSS/SCSS/Less-Unterstützung zu gewährleisten. In dieser Version haben wir die folgenden Pseudoselektoren / -elemente hinzugefügt:
:defined | :dir | :focus-visible | :focus-within | :placeholder-shown::-moz-range-progress | ::-moz-range-thumb | ::-moz-range-track | ::-webkit-progress-inner-value | ::grammar-error | ::placeholder

Verbesserte Genauigkeit der Browser-Kompatibilitätsdaten
Dank mdn/browser-compat-data haben wir diesen Abschnitt von MDN in unsere CSS/SCSS/Less-Vervollständigungen übernommen.

Die Eigenschaft justify-items wurde, zusammen mit vielen anderen CSS-Eigenschaften für CSS Grid Layout, seit Version 16 in Edge unterstützt. Durch die Verwendung von Daten aus MDN hält VS Code die Browser-Kompatibilitätsdaten für CSS-Funktionen auf dem neuesten Stand.
Graceful Handling von unbekannten At-Rules
Benutzer von CSS-Präprozessoren verwenden möglicherweise benutzerdefinierte At-Rules, die zur Build-Zeit zu gültigem CSS kompiliert werden. Zuvor konnte VS Code solche At-Rules nicht parsen oder verarbeiten. In dieser Version haben wir eine bessere Unterstützung für At-Rules, sodass sie:
- eine korrekte Syntaxhervorhebung erhalten, da sie weiterhin der CSS-Syntax folgen.
- keine Fehler mehr an falschen Stellen generieren.
- korrekte Fehler generieren, die durch
css.lint.unknownAtRulesgesteuert werden können.

Erweiterungen
Neue Standardansicht für die Erweiterungsansicht
Bisher enthielt die Standardansicht der Erweiterungsansicht einen Abschnitt für Installierte Erweiterungen und einen für Empfohlene Erweiterungen. Die Anwesenheit von installierten, aber deaktivierten Erweiterungen unter den aktivierten erschwerte die Interaktion mit letzteren. Wir bieten jetzt eine neue Standardansicht, bei der die Aktivierten Erweiterungen zuerst angezeigt werden, gefolgt von einem Abschnitt für Empfohlene Erweiterungen und unten einem zusammengeklappten Abschnitt für Deaktivierte Erweiterungen.

Sie können Abschnitte jederzeit über das Kontextmenü in der Erweiterungsansicht neu anordnen, ein- oder ausklappen oder ausblenden. Sie können auch den Befehl Ansicht öffnen... im Menü Ansicht verwenden, um diese Abschnitte ein- oder auszublenden.

Erweiterungsempfehlungen ablehnen
Wir empfehlen Ihnen Erweiterungen basierend auf den geöffneten Dateien und Ihrer Arbeitsumgebung. Wir verstehen, dass nicht jede Empfehlung für Ihr Projekt geeignet ist, daher können Sie jetzt bestimmte Empfehlungen ablehnen.
Um eine Empfehlung abzulehnen, klicken Sie auf das Erweiterungselement, um den Detailbereich zu öffnen, und drücken Sie dann die Schaltfläche Empfehlung ignorieren. Ignorierte Empfehlungen werden Ihnen nicht mehr empfohlen.

Arbeitsbereichsempfehlungen verwalten
Sie konnten bereits eine Reihe von Erweiterungen konfigurieren, die Benutzern Ihres Arbeitsbereichs empfohlen werden sollen, indem Sie Arbeitsbereichsempfehlungen in einer extensions.json-Datei verwenden. Die Verwaltung dieser Empfehlungen ist jetzt viel einfacher. Klicken Sie auf eine beliebige Erweiterung in der Erweiterungsansicht, um den Detailbereich zu öffnen. Sie können dann die folgenden neuen Befehle verwenden, um Empfehlungen hinzuzufügen oder bestimmte Erweiterungen abzulehnen, die für Benutzer Ihres Arbeitsbereichs nicht empfohlen werden sollen.
- Erweiterungen: Zu empfohlenen Erweiterungen hinzufügen (Arbeitsbereich)
- Erweiterungen: Zu empfohlenen Erweiterungen hinzufügen (Arbeitsbereichsordner)
- Erweiterungen: Empfohlene Erweiterung ignorieren (Arbeitsbereich)
- Erweiterungen: Empfohlene Erweiterung ignorieren (Arbeitsbereichsordner)
Sprachpakete
VS Code wird jetzt nur noch mit Englisch als Anzeigesprache ausgeliefert, und andere Sprachen sind auf Sprachpakete angewiesen, die aus dem VS Code Marketplace installiert werden können. Sie sollten diese Änderung nicht bemerken, wenn Sie ein Sprachpaket installiert haben, als Sie dazu in den Versionen 1.23 oder 1.24 von VS Code aufgefordert wurden. Wenn Sie von einer älteren Version von VS Code aktualisieren oder eine Neuinstallation haben, werden Sie aufgefordert, das Sprachpaket der UI-Sprache Ihres Betriebssystems zu installieren. Zusätzliche Sprachpakete können über den Marketplace über die Erweiterungsansicht (⇧⌘X (Windows, Linux Ctrl+Shift+X)) installiert werden.
Zusammenfassend
- Wenn Sie von VS Code Version 1.22 oder älter auf 1.25 aktualisieren, ist die Anzeigesprache Englisch und VS Code fordert Sie auf, das Sprachpaket für die UI-Sprache des Betriebssystems zu installieren, falls ein solches Sprachpaket im Marketplace verfügbar ist.
- Wenn Sie von 1.23 oder 1.24 auf 1.25 aktualisiert haben, sollten Sie bereits aufgefordert worden sein, das Sprachpaket für die UI-Sprache zu installieren. Wenn Sie dies getan haben, startet 1.25 wie gewohnt und die Anzeigesprache wird als gewählte UI-Sprache angezeigt. Wenn Sie kein Sprachpaket installiert haben, werden Sie dazu aufgefordert.
- Neuinstallationen von VS Code, Version 1.25 oder höher, fordern Sie auf, ein Sprachpaket zu installieren, wenn ein passendes im Marketplace verfügbar ist.
Vorschau-Features
Vorschau-Features sind noch nicht zur Veröffentlichung bereit, aber funktionsfähig genug, um sie zu nutzen. Wir freuen uns über Ihr frühes Feedback, während sie sich in der Entwicklung befinden.
Neuer Einstellungen-Editor
In diesem Meilenstein haben wir die Arbeit an einer GUI zum Bearbeiten von Einstellungen fortgesetzt. Sie ist immer noch eine Vorschau, aber wenn Sie sie ausprobieren möchten, können Sie sie mit dem Befehl Einstellungen: Einstellungen (Vorschau) öffnen öffnen. Wir würden uns über Ihr Feedback freuen - Sie können es in diesem GitHub-Issue hinterlassen.

Einige der neuen Änderungen im Vergleich zum letzten Monat sind:
- Ein "Inhaltsverzeichnis" (TOC), das Einstellungen in neue Kategorien organisiert.
- Ein bereinigtes und aufgefrischtes Layout für die Einstellungszeilen.
- Die Schaltfläche "Zurücksetzen" wurde entfernt. Das Bearbeiten einer Einstellung auf ihren Standardwert entfernt sie aus
settings.json.
Probieren Sie auch die Einstellung "workbench.settings.settingsSearchTocBehavior" aus, um drei verschiedene Optionen (show, hide, filter) für das "Inhaltsverzeichnis" beim Suchen von Einstellungen zu sehen, und teilen Sie uns mit, welche Option Sie bevorzugen.
Benutzerinstallation für Windows
Windows-Benutzer haben jetzt ein neues Vorschau-Setup-Paket zur Verfügung, das keine Administratorrechte zur Installation benötigt. Dieses Setup-Paket bietet auch eine reibungslosere Hintergrundaktualisierung. Diese Funktion ist vorerst nur für Insiders verfügbar, da wir im Juli weiteres Feedback wünschen, um den besten Service für unsere Stable-Benutzerbasis zu bieten.
Hier sind die Download-Links für die Insiders-Benutzer-Setup-Pakete:
Benutzerdefinierte Titelleiste und Menüs für Windows/Linux
Windows- und Linux-Benutzer können jetzt den Wert custom für die Einstellung window.titleBarStyle verwenden, und wir haben eine neue Menüleiste implementiert, die dazu passt. Die Einstellung ist noch nicht standardmäßig aktiviert, kann aber mit der Einstellung window.titleBarStyle eingeschaltet werden.
Mit aktivierter Einstellung für Windows und Linux wird die alte Menüleiste durch eine neue ersetzt, die zu Ihrem hellen oder dunklen Thema passt. Die neue Menüleiste bietet auch einige Verbesserungen wie die Top-Level-Tastatur-Navigation mit den Pfeiltasten. Schließlich werden auch die Menüs im gesamten Produkt der neuen Menüleiste entsprechen.

Wir werden die neuen Menüs und die Titelleiste weiter verbessern und Probleme beheben, die mit den Labels workbench-title oder workbench-menu gekennzeichnet sind.
Terminal: Dynamisches Textur-Atlas
Eine experimentelle Einstellung wurde hinzugefügt, um den neuen "dynamischen Textur-Atlas" für die Terminal-Leinwand zu aktivieren. Dies ändert die von der Konsole verwendete Caching-Strategie zum Speichern von Zeichen-Glyphen. Anstatt eines festen Satzes von Glyphen auf dem Standardhintergrund werden Glyphen jetzt zum Textur-Atlas hinzugefügt, wenn sie benötigt werden, und unabhängig vom verwendeten Hintergrund. Dies sollte die erste Startzeit des Terminals reduzieren, die Renderzeit von Zeichen verbessern, die nicht den Standardhintergrund verwenden, und die Gesamt-Rendering-Leistung verbessern.
Dies wird schließlich zum Standard werden. Vorerst können Sie sich mit der folgenden Einstellung dafür entscheiden:
{
"terminal.integrated.experimentalTextureCachingStrategy": "dynamic"
}
Dies war ein Community-Beitrag von upstream zu xterm.js.
Erweiterungsentwicklung
Grid-Editor-Layout: ViewColumn
Es gibt nur wenige API-Anpassungen zur Unterstützung des neuen Grid-Editor-Layout-Features. Am bemerkenswertesten ist die neue Aktion ViewColumn.Beside, mit der ein Editor neben dem aktiven geöffnet werden kann. Mit dem Grid-Editor-Layout gibt es keine Begrenzung mehr für die Anzahl der geöffneten Editoren, sodass die Verwendung dieser Option immer einen neuen Editor neben dem aktiven erstellt, es sei denn, es ist bereits Platz daneben. Abhängig von der Benutzereinstellung workbench.editor.openSideBySideDirection kann dies entweder rechts oder unter dem Editor sein.
Der ViewColumn-Wert für Texteditoren und WebViews richtet sich weiterhin nach der Reihenfolge des Erscheinens im Editorbereich von links nach rechts, wie unten gezeigt.

Auch wenn die ViewColumn-Aufzählung bis ViewColumn.Nine erweitert wurde, erhält ein TextEditor immer eine Zahl als Spaltennummer, solange er im Grid enthalten ist.
Wenn eine Editorgruppe verschoben oder geschlossen wird, wird das Ereignis onDidChangeTextEditorViewColumn wie zuvor ausgelöst.
Grid-Editor-Layout: Neue Befehle
Obwohl die Änderung an der API zur Unterstützung des neuen Grid-Editor-Layouts minimal ist, können Erweiterungen das Grid-Editor-Layout immer noch nutzen, indem sie neue Befehle verwenden, die hinzugefügt wurden (siehe Abschnitt Neue Befehle für eine vollständige Übersicht).
Das neue vscode.setEditorLayout verdient eine Erklärung, da es Ihnen ermöglicht, das gesamte Editor-Layout mit einem einzigen Befehl und Argumenten zu ändern. Das Layout wird als Objekt mit einer anfänglichen (optionalen) Ausrichtung (0 = horizontal, 1 = vertikal) und einem Array von Editor-groups beschrieben. Jede Editorgruppe kann eine size und ein weiteres Array von Editor-groups haben, die orthogonal zur Ausrichtung angeordnet werden. Wenn Editorgruppengrößen angegeben sind, muss ihre Summe 1 sein, um pro Zeile oder Spalte angewendet zu werden.
Beispiel für ein 2x2-Raster
{
"orientation": 0,
"groups": [
{ "groups": [{}, {}], "size": 0.5 },
{ "groups": [{}, {}], "size": 0.5 }
]
}
Editoren werden standardmäßig in der aktiven ViewColumn geöffnet
Wenn beim Öffnen eines Texteditors oder Webviews keine ViewColumn angegeben wird, öffnet VS Code diese standardmäßig in der aktuell aktiven Editorgruppe, anstatt in ViewColumn.One. Wenn Sie das vorherige Verhalten beibehalten möchten, geben Sie beim Öffnen einfach ViewColumn.One an.
Vorausgewählte Vervollständigungselemente
Erweiterungen, die Vervollständigungselemente bereitstellen, können diese jetzt als "vorausgewählt" markieren. Dies ist nützlich, wenn viele Vervollständigungen vorhanden sind, einige aber wahrscheinlicher ausgewählt werden. Ein Beispiel hierfür ist die Zuweisung bekannter Variablentypen. Diese Funktion ermöglicht es Erweiterungen auch, häufiger verwendete Vervollständigungen auszuwählen, z. B. console.log gegenüber console.dirxml.
Die API-Ergänzung ist 'CompletionItem#preselect: boolean', und wenn viele vorausgewählte Elemente vorhanden sind, wird das Element mit der höchsten Rangfolge ausgewählt.
Dokumentsymbole
Um das Beste aus dem neuen Outline-View-Tree herauszuholen, sollten Erweiterungen ihre DocumentSymbolProviders modifizieren, um DocumentSymbols zurückzugeben. Dies ist ein neuer Typ, der speziell für die Bedürfnisse des Outline-Trees entwickelt wurde. Er unterstützt die Darstellung einer Hierarchie von Dokumentsymbolen und ermöglicht die Unterscheidung zwischen dem Bereich, der ein Symbol definiert, und dem Auswahlbereich, der ein Symbol identifiziert.
+--/**
| * Some Comment
<range>--| */
| export function fooFunction() {
| +----------+
+--} |
|
<selection range>
Schreibgeschützter Dateisystemanbieter
Ein Dateisystemanbieter kann jetzt als readonly registriert werden. VS Code respektiert dieses Flag, indem es alle mutierenden Befehle für die Ressourcen dieses Dateisystemanbieters deaktiviert. Editoren werden für diese schreibgeschützten Ressourcen ebenfalls im schreibgeschützten Modus geöffnet.
Benutzerdefinierte Ansichten
Sichtbarkeit der Baumansicht
Sie können jetzt überprüfen, ob die Baumansicht sichtbar ist oder nicht, indem Sie die folgenden neu hinzugefügten Eigenschaften und Ereignisse für TreeView verwenden.
/**
* `true` if the [tree view](#_TreeView) is visible otherwise `false`.
*/
readonly visible: boolean;
/**
* Event that is fired when [visibility](TreeView.visible) has changed
*/
readonly onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>;
/**
* The event that is fired when there is a change in [tree view's visibility](#_TreeView.visible)
*/
export interface TreeViewVisibilityChangeEvent {
/**
* `true` if the [tree view](#_TreeView) is visible otherwise `false`.
*/
readonly visible: boolean;
}
Auswahl-Listener
Ein neues Ereignis für Auswahländerungen wurde der Baumansicht hinzugefügt, um auf Auswahländerungen zu lauschen.
/**
* Event that is fired when the [selection](#_TreeView.selection) has changed
*/
readonly onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>;
/**
* The event that is fired when there is a change in [tree view's selection](#_TreeView.selection)
*/
export interface TreeViewSelectionChangeEvent<T> {
/**
* Selected elements.
*/
readonly selection: T[];
}
Anzeigen und Fokussieren
Sie können jetzt ein Element in der Baumansicht anzeigen und fokussieren, indem Sie die Option focus auf true setzen, während Sie die reveal-API aufrufen.
reveal(element: T, options?: { select?: boolean, focus?: boolean }): Thenable<void>;
Neue Theme-Farben
Es gibt zwei neue Theme-Farben für die Hintergrundfarbe von leeren Editorgruppen, eine Funktion, die aus der Arbeit zur Unterstützung des Grid-Editor-Layouts hervorgegangen ist.
editorGroup.emptyBackground: Hintergrundfarbe einer leeren Editorgruppe.editorGroup.focusedEmptyBorder: Randfarbe einer leeren Editorgruppe, die fokussiert ist.

editorPane.background: Hintergrundfarbe des Editorbereichs, der auf der linken und rechten Seite des zentrierten Editor-Layouts sichtbar ist.

Veraltete Theme-Farben
Die Theme-Farbe editorGroup.background wird mit der Einführung des Grid-Editor-Layout-Features nicht mehr unterstützt.
Befehl "Umbenennen"
Der Befehl "Umbenennen" (editor.action.rename) kann jetzt mit einer Uri und einer Position aufgerufen werden, und der Editor initiiert entsprechend eine Umbenennungsoperation. Zum Beispiel:
vscode.commands.executeCommand('editor.action.rename', [
vscode.Uri.file('/my/file.abc'),
new vscode.Position(14, 7)
]);
DiagnosticTag
Diagnostic-Tags ermöglichen es Erweiterungen, zusätzliche Metadaten zu einem Diagnose zu hinterlegen. VS Code verwendet diese Metadaten, um die Darstellung dieser Diagnosen anzupassen.
const diag = new vscode.Diagnostic(new Range(0, 0, 0, 10), 'Unused');
diag.tags = [vscode.Diagnostic.Unnecessary];
DiagnosticTag.Unnecessary zeigt an, dass eine Diagnose für nicht referenzierten oder nicht erreichbaren Quellcode gilt. Jeglicher Quellcode, der mit DiagnosticTag.Unnecessary markiert ist, wird ausgeblendet dargestellt. Der Grad der Ausblendung wird durch die Theme-Farbe "editorUnnecessaryCode.opacity" gesteuert. Zum Beispiel rendert "editorUnnecessaryCode.opacity": "#000000c0" den Code mit 75% Deckkraft. Für Themes mit hohem Kontrast verwenden Sie die Theme-Farbe "editorUnnecessaryCode.border", um unnötigen Code zu unterstreichen, anstatt ihn auszublenden.
WebviewPanel.active und WebviewPanel.visible
Webview-Panels haben zwei neue schreibgeschützte Eigenschaften:
active- Verfolgt, wann das Panel fokussiert ist.visible- Verfolgt, wann das Panel auf dem Bildschirm ist.
Webview-Persistenz
Die Webview-API wurde um Unterstützung für das Speichern und Wiederherstellen des Zustands eines Webviews erweitert.
Die APIs getState und setState im Webview-Kontext ermöglichen es einem Webview, seinen Zustand zu speichern und ein Zustandsobjekt zu erhalten, das auch dann erhalten bleibt, wenn der Webview selbst in einen Hintergrund-Tab verschwindet.
// Inside a webview's JavaScript
const vscode = acquireVsCodeApi();
// Look up old state (will be undefined if no state is set)
const oldState = vscode.getState();
// Update the persisted state.
// You can save off any json serializable object.
if (oldState) {
vscode.setState({ count: oldState.count + 1 });
} else {
vscode.setState({ count: 1 });
}
Darüber hinaus können Erweiterungen einen WebviewPanelSerializer registrieren, der es Webviews eines bestimmten Typs ermöglicht, über Neustarts von VS Code hinaus erhalten zu bleiben. Um dies zu aktivieren, muss die Erweiterung vscode.window.registerWebviewPanelSerializer in ihrer Aktivierungsmethode aufrufen.
export function activate(context: vscode.ExtensionContext) {
...
vscode.window.registerWebviewPanelSerializer('myWebviewType', {
async deserializeWebviewPanel(webviewPanel: vscode.WebviewPanel, state: any) {
// `state` is the state persisted using `setState` inside the webview
console.log(`Got state: ${state}`);
new MyWebview(webviewPanel);
}
});
}
Die Erweiterung muss außerdem ein onWebviewPanel-Aktivierungsereignis hinzufügen.
"activationEvents": [
...,
"onWebviewPanel:catCoding"
]
Die neuen APIs für die Webview-Persistenz sind auf der Erweiterungsentwicklungsseite für Webviews dokumentiert. Die Beispiel-Webview-Erweiterung demonstriert auch, wie diese neuen APIs verwendet werden.
Sprachpakete: Minimale Übersetzungen
VS Code fordert Benutzer nun auf, ein verfügbares Sprachpaket in der Sprache des Sprachpakets zu installieren. Unten ist ein Beispiel, das ein vereinfachtes Chinesisch-Sprachpaket in vereinfachtem Chinesisch und Englisch empfiehlt.

Diese Anzeige erfordert, dass Sprachpaketautoren die folgenden minimalen Übersetzungszeichenfolgen in ihrem Sprachpaket übersetzen:
{
showLanguagePackExtensions: localize('showLanguagePackExtensions', "Search language packs in the Marketplace to change the display language to {0}."),
searchMarketplace: localize('searchMarketplace', "Search Marketplace"),
installAndRestartMessage: localize('installAndRestartMessage', "Install language pack to change the display language to {0}."),
installAndRestart: localize('installAndRestart', "Install and Restart")
}
Language Server Protocol Inspector
Sprachserver, die vscode-languagesclient verwenden, können eine Einstellung [langId].trace.server festlegen, um Protokollierungsunterstützung zu erhalten. Obwohl das generierte Protokoll für das Verständnis der LSP-Kommunikation zwischen VS Code und Sprachservern wertvoll ist, kann das Protokoll lang sein und es ist schwierig, nützliche Informationen daraus zu extrahieren.
Mit dem neuen LSP Inspector haben Sie jetzt ein Werkzeug, das Ihnen hilft, LSP-Protokolle zu verstehen: https://msdocs.de/language-server-protocol/inspector/
Im Inspector können Sie
- Die Anfragen, Antworten und Benachrichtigungen zwischen Language Client und Server durchsuchen.
- Protokolle mit Suche oder vordefinierten Filtern durchsuchen, um nützliche Informationen zu finden.

Der Inspector kann für die Fehlersuche bei Sprach-Erweiterungen nützlich sein. Sie können Benutzer bitten, LSP-Protokolle zu ihren Fehlerberichten hinzuzufügen und den Inspector zur Analyse der Protokolle zu verwenden.
Der Leitfaden für Sprachserver wurde aktualisiert, um Abschnitte zur Protokollierungsunterstützung und zu den Funktionen des LSP Inspectors aufzunehmen.
Sprachserver: End-to-End-Tests
Ein Abschnitt über End-to-End-Tests wurde zum Leitfaden für Sprachserver hinzugefügt.
Im Vergleich zu Unit-Tests von Komponenten von Sprachservern öffnen End-to-End-Tests einen Arbeitsbereich in VS Code, starten die Sprach-Erweiterung im Extension Host und überprüfen das tatsächliche Verhalten der Sprach-Erweiterung. Dies erleichtert das Mocking von Arbeitsbereichs- und VS-Code-Zuständen und prüft das tatsächliche VS-Code-Verhalten.
Sprachserver: Überarbeiteter Leitfaden
Der Leitfaden für Sprachserver wurde überarbeitet. Zu den wichtigsten Verbesserungen gehören
- Die oben genannten Abschnitte zu Protokollierung und Tests.
- Erklärung des Language Server Protocol, des Language Servers und ihrer Beziehung zueinander.
- Aktualisierte Illustrationen von LSP und Sprachserver.
- Aktualisierter Beispielcode lsp-sample.
- Weitere Verweise auf die LSP-Website.
Vorgeschlagene Erweiterungs-APIs
Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich, die Erweiterungsautoren ausprobieren können. Wie immer sind wir an Ihrem Feedback interessiert. So gehen Sie vor, um eine vorgeschlagene API auszuprobieren
- Sie müssen Insiders verwenden, da sich vorgeschlagene APIs häufig ändern.
- Sie müssen diese Zeile in der Datei
package.jsonIhrer Erweiterung haben:"enableProposedApi": true. - Kopieren Sie die neueste Version der Datei vscode.proposed.d.ts in Ihr Projekt.
Beachten Sie, dass Sie keine Erweiterung veröffentlichen können, die eine vorgeschlagene API verwendet. Wir werden wahrscheinlich wichtige Änderungen in der nächsten Version vornehmen und wollen niemals bestehende Erweiterungen brechen.
WorkspaceEdit kann Dateien erstellen/umbenennen/löschen
Wir haben eine vorgeschlagene API hinzugefügt, die WorkspaceEdit erweitert, sodass sie zum Erstellen, Umbenennen und Löschen von Dateien oder Ordnern verwendet werden kann. Dies ist nützlich für komplexe Refactorings, z. B. das Umbenennen einer Datei bei Umbenennung eines Typs, sollte aber auch andere Szenarien ermöglichen.
Lokale Umbenennungsereignisse
Wir schlagen zwei Ereignisse vor, die vor und nach einer Umbenennung ausgelöst werden. Sie heißen onWillRenameFile und onDidRenameFile und ermöglichen es einer Erweiterung, auf eine Umbenennung zu reagieren oder daran teilzunehmen.
QuickInput-API
Die neuen APIs QuickPick und InputBox ermöglichen eine flexiblere Erfassung von Benutzereingaben als die vorhandenen APIs showQuickPick und showInputBox. Mit den neuen APIs erstellen Sie eine neue Instanz eines Eingabeobjekts, auf dem Sie dann Ereignishandler registrieren und Eigenschaften entsprechend Ihrem Anwendungsfall festlegen.
export namespace window {
export function createQuickPick<T extends QuickPickItem>(): QuickPick<T>;
export function createInputBox(): InputBox;
}
Es gibt Beispiele für die Verwendung der QuickInput-API in einer Beispielerweiterung.
Das Multi-Step-Input-Beispiel

Wenn die vorhandenen APIs showQuickPick und showInputBox nicht flexibel genug sind, verwenden Sie die neuen APIs QuickPick und InputBox. Andernfalls bleiben Sie bei den vorhandenen, da diese die Aufgabe schneller erledigen.
Verwenden Sie Issue #53327 für Feedback und Diskussion.
Terminal-Renderer
Das Konzept eines Terminal-"Renderers" wird vorgeschlagen. Ein Terminal-Renderer ist im Grunde eine Terminalinstanz innerhalb des Terminal-Panels, hat aber keinen zugrunde liegenden Prozess, sondern die **Erweiterung** fungiert als Prozess. Dies ist nützlich für die Implementierung eines Terminal-Multiplexers in VS Code, bei dem die Erweiterung Zugriff auf die Ein-/Ausgabe-Pipes eines Prozesses hat, die dann mit dem Terminal-Renderer verbunden werden. Die Live Share-Erweiterung plant, diese neue API zu nutzen, um die Stabilität und Wartbarkeit ihrer gemeinsamen Terminalunterstützung zu verbessern.
export namespace window {
export function createTerminalRenderer(name: string): TerminalRenderer;
}
export interface TerminalRenderer {
name: string;
dimensions: TerminalDimensions | undefined;
readonly maximumDimensions: TerminalDimensions | undefined;
readonly terminal: Terminal;
readonly onDidAcceptInput: Event<string>;
readonly onDidChangeMaximumDimensions: Event<TerminalDimensions>;
write(text: string): void;
}
export interface TerminalDimensions {
readonly columns: number;
readonly rows: number;
}
Ein weiteres Anwendungsbeispiel ist eine Erweiterung, die ihre eigene REPL erstellt. Dies funktioniert, indem die Erweiterung jeden Tastendruck abhört und reagiert, wenn die **Enter**-Taste gedrückt wird.
const shell = vscode.window.createTerminalRenderer('My Extension REPL');
shell.write('Type and press enter to echo the text\r\n\r\n');
shell.terminal.show();
let line = '';
shell.onDidAcceptInput(data => {
if (data === '\r') {
shell.write(`\r\necho: "${line}"\r\n\n`);
line = '';
} else {
line += data;
shell.write(data);
}
});
Verfolgung des aktiven Terminals
Wir schlagen neue Erweiterungs-APIs für das integrierte Terminal vor, die es ermöglichen, das aktive Terminal zu verfolgen, ähnlich wie window.activeTextEditor und window.onDidChangeActiveTextEditor.
export namespace
export const activeTerminal: Terminal | undefined;
export const onDidChangeActiveTerminal: Event<Terminal | undefined>;
}
Terminal.onData umbenannt
Terminal.onData wurde in onDidWriteData umbenannt, um unseren Namensrichtlinien zu entsprechen.
export interface Terminal {
onDidWriteData: Event<string>;
}
DefinitionLink
Definition-Links ermöglichen es Definition-Anbietern, zusätzliche Metadaten mit Definitionen zurückzugeben.
export interface DefinitionLink {
/**
* Span of the symbol being defined in the source file.
*
* Used as the underlined span for mouse definition hover. Defaults to the word range at
* the definition position.
*/
origin?: Range;
/**
* The resource identifier of the definition.
*/
uri: Uri;
/**
* The full range of the definition.
*
* For a class definition for example, this would be the entire body of the class definition.
*/
range: Range;
/**
* The span of the symbol definition.
*
* For a class definition, this would be the class name itself in the class definition.
*/
selectionRange?: Range;
}
Diese zusätzlichen Informationen werden von VS Code verwendet, um die Benutzererfahrung für Aktionen wie **Gehe zu Definition** zu verbessern.
Um DefinitionLink zu verwenden, muss ein DefinitionProvider derzeit eine Methode provideDefinition2 implementieren. Sobald die DefinitionLink-API stabilisiert ist, planen wir, provideDefinition2 zu entfernen und die normale Methode DefinitionProvider.provideDefinition so zu aktualisieren, dass sie ebenfalls die Rückgabe von DefinitionLink ermöglicht.
Neue Befehle
| Taste | Befehl | Befehls-ID |
|---|---|---|
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | Teilt den Editor in die orthogonale Richtung, die über openSideBySideDirection konfiguriert ist. |
workbench.action.splitEditorOrthogonal |
| Zeigt die geöffneten Editoren der aktiven Editorgruppe an. | workbench.action.showEditorsInActiveGroup |
|
| ⌃⌘9 (Windows, Linux Shift+Alt+9) | Verschiebt den aktiven Editor in die letzte Editorgruppe. | workbench.action.moveEditorToLastGroup |
| ⌘K ↑ (Windows, Linux Ctrl+K Up) | Verschiebt die aktive Editorgruppe nach oben. | workbench.action.moveActiveEditorGroupUp |
| ⌘K ↓ (Windows, Linux Ctrl+K Down) | Verschiebt die aktive Editorgruppe nach unten. | workbench.action.moveActiveEditorGroupDown |
| Fokussiert die letzte Editorgruppe. | workbench.action.focusLastEditorGroup |
|
| Fokussiert die erste Editorgruppe. | workbench.action.firstEditorInGroup |
|
| ⌘W (Windows Ctrl+F4, Linux Ctrl+W) | Schließt die aktive Editorgruppe (merged die geöffneten Editoren in die benachbarte Gruppe). | workbench.action.closeGroup |
| Schließt alle Editorgruppen. | workbench.action.closeAllEditorGroups |
|
| Schließt die aktive Editorgruppe und ihre Editoren. | workbench.action.closeEditorsAndGroup |
|
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | Teilt den aktiven Editor nach oben. | workbench.action.splitEditorUp |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | Teilt den aktiven Editor nach unten. | workbench.action.splitEditorDown |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | Teilt den aktiven Editor nach links. | workbench.action.splitEditorLeft |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | Teilt den aktiven Editor nach rechts. | workbench.action.splitEditorRight |
| Führt die Editoren aller Editorgruppen in die aktive zusammen. | workbench.action.joinAllGroups |
|
| ⌘4 (Windows, Linux Ctrl+4) | Fokussiert die vierte Editorgruppe (erstellt bei Bedarf eine neue Editorgruppe). | workbench.action.focusFourthEditorGroup |
| ⌘5 (Windows, Linux Ctrl+5) | Fokussiert die fünfte Editorgruppe (erstellt bei Bedarf eine neue Editorgruppe). | workbench.action.focusFifthEditorGroup |
| ⌘6 (Windows, Linux Ctrl+6) | Fokussiert die sechste Editorgruppe (erstellt bei Bedarf eine neue Editorgruppe). | workbench.action.focusSixthEditorGroup |
| ⌘7 (Windows, Linux Ctrl+7) | Fokussiert die siebte Editorgruppe (erstellt bei Bedarf eine neue Editorgruppe). | workbench.action.focusSeventhEditorGroup |
| ⌘8 (Windows, Linux Ctrl+8) | Fokussiert die achte Editorgruppe (erstellt bei Bedarf eine neue Editorgruppe). | workbench.action.focusEighthEditorGroup |
| Verschiebt den aktiven Editor in die linke Editorgruppe. | workbench.action.moveEditorToLeftGroup |
|
| Verschiebt den aktiven Editor in die rechte Editorgruppe. | workbench.action.moveEditorToRightGroup |
|
| Verschiebt den aktiven Editor in die obere Editorgruppe. | workbench.action.moveEditorToAboveGroup |
|
| Verschiebt den aktiven Editor in die untere Editorgruppe. | workbench.action.moveEditorToBelowGroup |
|
| ⌘K ⌘← (Windows, Linux Ctrl+K Ctrl+Left) | Fokussiert die Editorgruppe links. | workbench.action.focusLeftGroup |
| ⌘K ⌘→ (Windows, Linux Ctrl+K Ctrl+Right) | Fokussiert die Editorgruppe rechts. | workbench.action.focusRightGroup |
| ⌘K ⌘↑ (Windows, Linux Ctrl+K Ctrl+Up) | Fokussiert die Editorgruppe oben. | workbench.action.focusAboveGroup |
| ⌘K ⌘↓ (Windows, Linux Ctrl+K Ctrl+Down) | Fokussiert die Editorgruppe unten. | workbench.action.focusBelowGroup |
| Erstellt eine neue Editorgruppe links. | workbench.action.newEditorGroupLeft |
|
| Erstellt eine neue Editorgruppe rechts. | workbench.action.newEditorGroupRight |
|
| Erstellt eine neue Editorgruppe oben. | workbench.action.newEditorGroupAbove |
|
| Erstellt eine neue Editorgruppe unten. | workbench.action.newEditorGroupBelow |
|
| Wechselt zum Editorlayout: Einzeln. | workbench.action.editorLayoutSingle |
|
| Wechselt zum Editorlayout: Zwei Spalten. | workbench.action.editorLayoutTwoColumns |
|
| Wechselt zum Editorlayout: Drei Spalten. | workbench.action.editorLayoutThreeColumns |
|
| Wechselt zum Editorlayout: Zwei Zeilen. | workbench.action.editorLayoutTwoRows |
|
| Wechselt zum Editorlayout: Drei Zeilen. | workbench.action.editorLayoutThreeRows |
|
| Wechselt zum Editorlayout: 2x2-Raster. | workbench.action.editorLayoutTwoByTwoGrid |
|
| Wechselt zum Editorlayout: Zwei Spalten (unten). | workbench.action.editorLayoutTwoColumnsBottom |
|
| Wechselt zum Editorlayout: Zwei Spalten (rechts). | workbench.action.editorLayoutTwoColumnsRight |
|
| Wechselt zum Editorlayout: Zentriert. | workbench.action.editorLayoutCentered |
Neuer Befehl layoutEditorGroups
Der Befehl layoutEditorGroups ermöglicht es Ihnen, ein Editorgruppenlayout zu erstellen und ihm eine Tastenkombination zuzuweisen. Das Layout wird als Objekt mit einer optionalen anfänglichen Ausrichtung (0 = horizontal, 1 = vertikal) und einem Array von darin enthaltenen Editor-groups beschrieben. Jede Editorgruppe kann eine size und ein weiteres Array von Editor-groups haben, die orthogonal zur Ausrichtung angeordnet werden. Wenn Editorgruppengrößen angegeben sind, muss ihre Summe 1 ergeben, um pro Zeile oder Spalte angewendet zu werden. Beispiel:
{
"key": "Ctrl+0",
"command": "layoutEditorGroups",
"args": {
"orientation": 1,
"groups": [{ "size": 0.2 }, { "size": 0.6 }, { "size": 0.2, "groups": [{}, {}] }]
}
}
Dies erzeugt das folgende Layout:

Entfernte Befehle
| Befehls-ID | Ersatz |
|---|---|
workbench.action.showEditorsInFirstGroup |
Verwenden Sie stattdessen showEditorsInActiveGroup. |
workbench.action.showEditorsInSecondGroup |
Verwenden Sie stattdessen showEditorsInActiveGroup. |
workbench.action.showEditorsInThirdGroup |
Verwenden Sie stattdessen showEditorsInActiveGroup. |
workbench.action.moveEditorToSecondGroup |
Verwenden Sie stattdessen einen Befehl workbench.action.moveEditor*. |
workbench.action.moveEditorToThirdGroup |
Verwenden Sie stattdessen einen Befehl workbench.action.moveEditor*. |
workbench.action.openLastEditorInGroup |
Verwenden Sie stattdessen lastEditorInGroup. |
workbench.action.openFolderAsWorkspaceInNewWindow |
Verwenden Sie stattdessen duplicateWorkspaceInNewWindow. |
editor.debug.action.toggleColumnBreakpoint |
Verwenden Sie stattdessen toggleInlineBreakpoint. |
Befehle zur Verlaufnavigation
| Befehls-ID | Ersatz |
|---|---|
search.history.showPrevious |
Verwenden Sie stattdessen history.showPrevious. |
search.history.showNext |
Verwenden Sie stattdessen history.showNext. |
search.replaceHistory.showPrevious |
Verwenden Sie stattdessen history.showPrevious. |
search.replaceHistory.showNext |
Verwenden Sie stattdessen history.showNext. |
search.history.showPreviousIncludePattern |
Verwenden Sie stattdessen history.showPrevious. |
search.history.showNextIncludePattern |
Verwenden Sie stattdessen history.showNext. |
search.history.showPreviousExcludePattern |
Verwenden Sie stattdessen history.showPrevious. |
search.history.showNextExcludePattern |
Verwenden Sie stattdessen history.showNext. |
find.history.showPrevious |
Verwenden Sie stattdessen history.showPrevious. |
find.history.showNext |
Verwenden Sie stattdessen history.showNext. |
workbench.action.terminal.findWidget.history.showPrevious |
Verwenden Sie stattdessen history.showPrevious. |
workbench.action.terminal.findWidget.history.showNext |
Verwenden Sie stattdessen history.showNext. |
editor.action.extensioneditor.showPreviousFindTerm |
Verwenden Sie stattdessen history.showPrevious. |
editor.action.extensioneditor.showNextFindTerm |
Verwenden Sie stattdessen history.showNext. |
editor.action.webvieweditor.showPreviousFindTerm |
Verwenden Sie stattdessen history.showPrevious. |
editor.action.webvieweditor.showNextFindTerm |
Verwenden Sie stattdessen history.showNext. |
repl.action.historyPrevious |
Verwenden Sie stattdessen history.showPrevious. |
repl.action.historyNext |
Verwenden Sie stattdessen history.showNext. |
Neue Dokumentation
Neues Python Flask Tutorial
Es gibt ein neues Tutorial Verwenden von Flask in Visual Studio Code, das zeigt, wie Sie schnell eine Python Flask-Webanwendung in VS Code erstellen, bearbeiten und debuggen können.
Aktualisiertes Tutorial zur Website-Bereitstellung
Wir haben das Tutorial Statische Website in Azure bereitstellen für die Erstellung und Bereitstellung einer statischen Website mit Azure Storage aktualisiert. Die Website-Bereitstellung wird durch die neuen Funktionen der Azure Storage-Erweiterung vereinfacht.
Bemerkenswerte Änderungen
- 35361: Eingeschränkte Funktionalität nativer Fenstertabs in macOS High Sierra.
- 40158: Korrektur der UI für den Breakpoint-Vergleich im Multi-Session-Fall.
- 42726: Datei öffnen: Kann eine Datei mit Leerzeichen im Namen nicht öffnen, wenn ein absoluter Pfad angegeben ist.
- 49591: "Alle schließen"-Schaltfläche als Editor-Aktion in der Symbolleiste.
- 51200: Prozessmonitor unter Linux zeigt falsche Prozesslast an.
- 51440: Benachrichtigungen können mit der mittleren Maustaste geschlossen werden.
Vielen Dank
Nicht zuletzt ein großes Dankeschön! an die folgenden Personen, die dazu beigetragen haben, VS Code noch besser zu machen
Beiträge zu vscode
- bitshiftza (@bitshiftza): Korrektur für Issue #39458 PR #52506
- @brentwang23: Implementiert Wortteilbewegung und -löschung für Issue #46203 PR #48023
- Howard Chen (@chenhowa): Await git.pullFrom und git.pushTo, um sicherzustellen, dass alle Fehler angezeigt werden... PR #49167
- Cherry Wang (@chryw): Markdown und allgemeine Symbolleisten-Icons konsistent überarbeitet PR #50484
- @CoenraadS: Einstellung für Hervorhebung der aktiven Einzugsanleitung hinzugefügt #49148 PR #49298
- Daniel Frankcom (@danielfrankcom): ANSI-Farbcodes für Hintergrund hinzugefügt PR #49764
- Darius Keeley (@Dari-K): Korrigiert #51533 PR #52075
- David (@ddruker): [GIT-ERWEITERUNG] Benutzerdefinierte Vordergrundfarbe für zur Index hinzugefügte Dateien PR #46066
- EbXpJ6bp (@EbXpJ6bp): Verbesserte Benutzeroberfläche für Abhängigkeiten und Beiträge im Erweiterungseditor PR #52126
- Schuyler Cebulskie (@Gawdl3y): V8-Version zum Info-Dialog hinzugefügt und diesen aufbereitet PR #51511
- Gelöschter Benutzer (@ghost): [Korrektur] Fehlende Rückgabe von _hue2rgb hinzugefügt PR #51285
- Jing Zhou (@gnijuohz): Warnung angezeigt, wenn die Git-Commit-Eingabebox nur Leerzeichen enthält PR #45254
- Christoph Seitz (@go2sh): Transformationen für Platzhalter hinzugefügt PR #51621
- Jan Pilzer (@Hirse): Hinzufügen der gitignore-Sprache PR #51026
- Ian Sanders (@iansan5653): Hervorhebung beim Ziehen über geöffnete Editoren begrenzt, indem geprüft wird, ob das gezogene Element abgelegt werden kann PR #52623
- James (@jwhitmarsh): Emmet-Aktionen in Skript-Tags mit text/ng-template als Typ erlaubt PR #51849
- Catalin Pirvu (@katakonst): Fokus auf Nachrichtenfeld wiederherstellen, wenn Git mehrere Projekte enthält. PR #46068
- Krzysztof Cieślak (@Krzysztof-Cieslak): Unterstützung für das Format
1.txtin incrementFileName hinzugefügt PR #50869 - Leonardo Braga (@LeonardoBraga)
- Jon Malmaud (@malmaud): Tippfehler in der Erweiterungsdokumentation korrigiert. PR #51509
- Momoto, Seiji (@momoto): Tippfehler in main.contribution.ts korrigiert PR #52104
- Nahom Abi (@NahomAgidew): Korrektur von #43625: Spin-Sync-Symbol beim Push anzeigen PR #52146
- Ori Ashual (@oriash93): Option hinzugefügt, ob die Warnung zur Wiederverwendung des Terminals angezeigt werden soll PR #44461
- Eugen Cazacu (@oygen87): Kommentar gelöscht PR #50971
- Dániel Tar (@qcz)
- Ronald Rey (@reyronald): "Empfehlen"-Aktion zur Erweiterungsansicht hinzugefügt PR #50419
- @rianadon: [WIP] Farbige Titelleiste für Windows PR #39972
- ryenus (@ryenus): Anpassung der Ansichten in der Standard-Erweiterungsansicht erlaubt PR #47766
- Shizeng Zhou (@shizengzhou): Rand entfernt. Korrigiert #48765 PR #48825
- Benjamin Smith (@SirHoneyBiscuit): Option zum Ausblenden/Anzeigen von Release Notes bei Aktualisierungen hinzugefügt #44020 PR #44271
- Alfonso Perez (@alfonsoperez): Zeilen werden weiterhin gelöscht, wenn deleteAllLeft an Spalte 1 ausgelöst wird PR #28392
- Spencer (@spalger): Korrigiert DeleteAllLeft, wenn es von Spalte 1 ausgeführt wird PR #40876
- Benjamin Crawford (@subylan): max_old_space_size-Flag außerhalb des Bereichs für 32-Bit-Builds. PR #52792
- Tomáš Hübelbauer (@TomasHubelbauer)
- @vemoo: Korrektur für "Kann keine Tastenkombination zum Neustart einer bestimmten Aufgabe erstellen" PR #36474
- Winner Crespo (@wistcc): Warnung hinzufügen, wenn die Tokenisierung übersprungen wird PR #51265
- @zhuowei: Korrigiert #35361: Korrigiert native Tabs unter macOS 10.13 PR #52775
Beiträge zu vscode-vsce
- Jimi (Dimitris) Charalampidis (@JimiC): Möglichkeit zum Veröffentlichen mit "npm version" hinzugefügt PR #263
- Kevin Cunnane (@kevcunnane): Unterstützung für die Verwendung von Yarn im Paketbefehl PR #260
- Ritwick Dey (@ritwickdey): useYarn-Parameter beim Veröffentlichen von Erweiterungen PR #268
Beiträge zu language-server-protocol
- Colin Rofls (@cmyr): Tippfehler in specification.md korrigiert PR #499
- Samarth Wahal (@LordZamy): Tippfehler in der Spezifikation korrigiert PR #508
Beiträge zu vscode-node-debug
- jramsay (@jramsay): Geladene Skripte für VS Live Share aktiviert PR #180
Beiträge zu vscode-chrome-debug-core
- @digeff: Mögliche Race-Bedingung für neue und geänderte Skripte behoben PR #336
- Johannes Ewald (@jhnns): Unsicheren Array-Zugriff in internalSourceBreakpoint korrigiert PR #335
Beiträge zu vscode-chrome-debug
- Chance An (@changsi-an)
- Michael Crane (@mrcrane)
- Chrome-PID in allen Startfällen gesetzt PR #687
Beiträge zu localization
Es gibt über 800 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, Abstimmungen über Übersetzungen oder Vorschläge zur Prozessverbesserung.
Hier ist eine Momentaufnahme der Mitwirkenden für diese Version. Details zum Projekt, einschließlich der Liste der Mitwirkendennamen, finden Sie auf der Projektseite unter https://aka.ms/vscodeloc.
- Französisch: Antoine Griffard, Quentin BRETON.
- Italienisch: Andrea Dottor, Emilie Rollandin, Aldo Donetti, Luigi Bruno, Piero Azi, Marco Dal Pino, Alessandro Alpi, Emanuele Ricci, Lorthirk, Riccardo Cappello.
- Deutsch: Ettore Atalan.
- Spanisch: Alejandro Medina, Alberto Poblacion, José M. Aguilar.
- Japanisch: Shunya Tajima, Satoshi Kajiura, Seiji Momoto, yoshioms, Hiroyuki Mori, Yuki Ueda, Yano Naoki, Yuichi Nukiyama.
- Chinesisch (vereinfacht): Joel Yang, pluwen, Yurui Zhang, Simon Chan, YF, Vicey Wang.
- Chinesisch (traditionell): Duran Hsieh, Winnie Lin, Alan Liu, Alan Tsai, Will 保哥, Han Lin.
- Koreanisch: Kyunghee Ko.
- Russisch: Ivan Kuzmenko.
- Bulgarisch: Любомир Василев.
- Ungarisch: Tar Dániel, Dóczi Dominik.
- Portugiesisch (Brasilien): Danilo Dantas, Otacilio Saraiva Maia Neto, Roger Figueiredo, Lucas Miranda, Rafael Oliveira, Yehoshua Oliveira, Bruno Sonnino, Roberto Fonseca.
- Türkisch: Adem Coşkuner, Burak Karahan, Koray Sarıtaş.
- Niederländisch: RubenJacobse, Gerald Versluis, Maurits Kammer.
- Finnisch: Feetu Nyrhinen, Jussi Palo, Petri Niinimäki.
- Griechisch: Nickolaos Platides, Theodore Tsirpanis, George M, Christos Koutsiaris.
- Indonesisch: Wildan Mubarok, Laurensius Dede Suhardiman, Joseph Aditya P G, G-RiNe Project, Adiyat Mubarak.
- Lettisch: kozete.
- Polnisch: Patryk Brejdak, Iwona Kubowicz, Sebastian Baran, Lukasz Woznicki, Mateusz Przybyłowicz.
- Schwedisch: Eugen Cazacu.
- Ukrainisch: Fedir Gordiienko, SergZ, Bogdan Surai.
- Vietnamesisch: Vuong, Hung Nguyen, Thanh Phu, Brian Nguyen.
- Kroatisch: Nikša Mihaica, Bruno Vego.
- Englisch (Vereinigtes Königreich): Matthew John Cheetham.