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

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:

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.

Grid Editor Layout

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.

Grid Empty

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

Grid Editor Layout Menu

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.

Grid Editor Drag and Drop

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.

Grid Open Editors View

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.

Grid Alt Click

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.

Outline view

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.

empty drop

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 (_).

editor sub-word navigation

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.

suggestion selection

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/}"
}

snippet placeholder transformation

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.

debug toolbar

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.

The Outline view for a Markdown document

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

CSS Pseudo Selectors and Elements

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.

CSS justify-items

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.unknownAtRules gesteuert werden können.

CSS Unknown At-Rules

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.

Default Extensions View

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.

Customize Extensions View

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.

Dismiss Recommendations

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.

New Settings Editor

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.

Custom title bar and menu bar

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.

Grid Editor Numbering

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.

Grid Editor Group Background

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

Editor Pane Background

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.

Language Pack recommendation

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.

LSP Inspector

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.json Ihrer 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

Multi-step input sample

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>;
}

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:

Grid Editor Layout Applied

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

Beiträge zu vscode-vsce

Beiträge zu language-server-protocol

Beiträge zu vscode-node-debug

Beiträge zu vscode-chrome-debug-core

Beiträge zu vscode-chrome-debug

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.
© . This site is unofficial and not affiliated with Microsoft.