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

Oktober 2018 (Version 1.29)

Update 1.29.1: Das Update behebt diese Probleme.

Downloads: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball


Willkommen zur Oktober 2018 Veröffentlichung von Visual Studio Code. Es gibt eine Reihe bedeutender Updates in dieser Version, die Ihnen hoffentlich gefallen werden. 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 Highlights-Video zur 1.29-Veröffentlichung vom Cloud Developer Advocate Brian Clark ansehen.

Die Release Notes sind in die folgenden Abschnitte unterteilt, die sich auf die Fokusbereiche von VS Code beziehen. Hier sind einige weitere Updates:

  • Workbench - Plattformspezifische Zeilenumbruchzeichen, Hervorhebung geänderter Dateireiter.
  • Integriertes Terminal - Optionen für das Arbeitsverzeichnis des geteilten Terminals, Cmd+Backspace zum Löschen bis zum Zeilenanfang.
  • Sprachen - Anzeige der CSS-Spezifität beim Hovern, Verarbeitung unbekannter CSS-Eigenschaften.
  • Debugging - Mehrere Debugging-Konsolen, Start mit "Stop on Entry", Formatierung von console.log-Meldungen.
  • Erweiterungsentwicklung - API für das aktive Terminal, mehr Kontrolle über benutzerdefinierte Ansichten.

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!

VS Code unterstützt jetzt mehrzeilige Suche! Genau wie im Editor wird eine Regex-Suche nur dann im mehrzeiligen Modus ausgeführt, wenn sie ein \n Literal enthält. Die Suchansicht zeigt neben jedem mehrzeiligen Treffer einen Hinweis mit der Anzahl zusätzlicher Treffermelder.

Multiline search

Dieses Feature ist dank der Arbeit am Tool ripgrep zur Implementierung der mehrzeiligen Suche möglich.

Es ist nun auch möglich, Rückverweise und Lookahead-Assertions in Regex-Suchen zu verwenden, indem Sie "search.usePCRE2": true setzen. Dies konfiguriert ripgrep zur Verwendung der PCRE2 Regex-Engine. Während PCRE2 viele andere Features unterstützt, unterstützen wir nur Regex-Ausdrücke, die auch in JavaScript gültig sind, da offene Editoren weiterhin mit der JavaScript-basierten Suche des Editors durchsucht werden.

Fancy regex search

Wenn Sie immer noch Lookbehind-Assertions vermissen, keine Sorge! Dieses Feature wird gerade erst von JavaScript unterstützt und sollte in einem späteren Electron-Shell-Update in VS Code enthalten sein.

Wir haben eine Einstellung search.showLineNumbers hinzugefügt, die die Zeilennummer für jeden Treffer in der Suchansicht anzeigt.

Vorschau für Suchen und Ersetzen deaktivieren

Es gibt eine neue Einstellung search.useReplacePreview, mit der Sie die Diff-Vorschau deaktivieren können, die beim Suchen/Ersetzen in der Suchansicht angezeigt wird.

line numbers

Git erlaubt Ihnen, eine globale gitignore-Datei über die Konfigurationseigenschaft core.excludesfile zu konfigurieren. Standardmäßig respektiert die Suche die globale gitignore-Datei nicht. Sie können dies jedoch jetzt ändern, indem Sie die neue Einstellung search.useGlobalIgnoreFiles aktivieren.

Workbench

Unterstützung für macOS Mojave Dark Mode

Der macOS Mojave Dark Mode wird jetzt besser in VS Code unterstützt. Zuvor wurden VS Code-Menüs und Dialogfelder im Standard-Hellmodus angezeigt, auch wenn macOS im Dunkelmodus lief. Jetzt werden alle nativen UI-Elemente im Dunkelmodus angezeigt, wenn dieser aktiviert ist.

macOS Mojave Dark Mode

Unterstützung für macOS Vollbildmodus

Eine neue Einstellung window.nativeFullScreen wurde eingeführt, die, wenn sie auf false gesetzt ist, den Vollbildmodus für VS Code aktiviert, der nicht die native macOS-Vollbildfunktion verwendet. Dies hat den Vorteil, dass der Vollbildmodus keinen macOS-Space auf dem Desktop erstellt. Standardmäßig verwendet VS Code weiterhin den nativen macOS-Vollbildmodus.

Neuer Standardwert für files.eol: auto

Die Einstellung files.eol für Zeilenumbrüche hat nun einen neuen Standardwert auto. Wenn auf auto gesetzt, ist das Zeilenumbruchzeichen für neue Dateien betriebssystemspezifisch. Es ist \r\n unter Windows und \n unter macOS und Linux. Sie können file.eol auch weiterhin explizit auf \n oder \r\n setzen.

Geänderte Reiter hervorheben

Eine neue Einstellung workbench.editor.highlightModifiedTabs zeigt einen dicken Rahmen oben auf den Reitern an, wenn der Editor schmutzig ist (ungespeicherte Änderungen hat). Dies erleichtert das Finden von Dateien, die gespeichert werden müssen. Die Farbe des Rahmens kann angepasst werden (siehe unten).

Highlight modified tabs

Zentrierte Editor-Layout-Autoresize

Die zentrierte Layout-Ansicht wird sich nun automatisch auf die maximale Breite vergrößern, wenn mehr als eine Editor-Gruppe geöffnet ist. Dies sollte die Verwendung des zentrierten Layouts erleichtern und weniger manuelles Umschalten erfordern. Dieses Verhalten wird durch eine neue Einstellung workbench.editor.centeredLayoutAutoResize gesteuert, die standardmäßig aktiviert ist.

Symbolreihenfolge in Breadcrumbs

Es gibt eine neue Einstellung, die steuert, wie Symbole im Breadcrumbs-Auswahlfeld sortiert werden: breadcrumbs.symbolSortOrder.

Zulässige Werte sind

  • position - Position in der Datei (Standard)
  • name - alphabetische Reihenfolge
  • type - Reihenfolge nach Symboltyp

Das folgende Beispiel zeigt die Breadcrumbs-Symbolliste, sortiert nach Namen

Breadcrumb picker ordered by name

Breadcrumbs und Vorschau-Editoren

Beim mittleren Klicken auf Elemente in der Breadcrumbs-Navigation werden diese nun in einem neuen Editor geöffnet und nicht der Vorschau-Editor wiederverwendet. Dieses Verhalten entspricht nun dem mittleren Klicken auf Dateien im Explorer.

Benachrichtigungen werden automatisch ausgeblendet, auch wenn Schaltflächen angezeigt werden

Zuvor wurden Benachrichtigungen in VS Code niemals ausgeblendet, wenn sie Schaltflächen enthielten. Dies führte dazu, dass sich Benachrichtigungen potenziell in der unteren rechten Ecke stapelten und Teile des Editors verdeckten. Mit dieser Veröffentlichung werden Benachrichtigungen nach einem Timeout ausgeblendet, auch wenn sie Schaltflächen anzeigen.

Es gibt zwei Ausnahmen

  • Benachrichtigungen mit dem Schweregrad error werden nicht ausgeblendet, unter der Annahme, dass der Benutzer eine Aktion ausführen muss.
  • Einige spezifische Benachrichtigungen von VS Code bleiben geöffnet. Zum Beispiel die Benachrichtigung, die fragt, ob Sie eine Erweiterung installieren möchten, nachdem Sie den VS Code Marketplace durchsucht haben.

Hinweis: Auch wenn Benachrichtigungen ausgeblendet werden, können Sie jederzeit über das Benachrichtigungs-Center auf alle Benachrichtigungen zugreifen, entweder durch Klicken auf das kleine Glockensymbol in der Statusleiste oder über den Befehl Benachrichtigungen anzeigen (notifications.toggleList).

Schaltfläche zur Position des Panels im Kontextmenü

Um horizontalen Platz zu sparen und Unordnung zu reduzieren, haben wir die Umschalt-Schaltfläche für die Panel-Position (Nach rechts verschieben, Nach unten verschieben) aus dem Bereich der Panel-Titel entfernt. Die Aktion ist nun im Kontextmenü des Panel-Titels und auch im Hauptmenü unter Ansicht > Erscheinungsbild > Panel-Position umschalten verfügbar. Ein weiterer Grund für die Entfernung dieser Schaltfläche war, dass wir glauben, dass Benutzer ihr Layout einmal einstellen und nicht normalerweise hin und her schalten.

Move panel

Aktualisierte Dateisymbole pro Dateityp

In der vorherigen Version haben wir benutzerdefinierte Symbole für gängige VS Code-Dateitypen hinzugefügt. Wir haben diese Symbole jetzt zu kleineren Ansichten hinzugefügt, sodass sie in einer Listenansicht erscheinen.

Updated file icons

Im Einstellungseditor zeigen wir einen Hinweis an, wenn eine Einstellung in einem anderen Geltungsbereich (Benutzer, Arbeitsbereich) konfiguriert ist als der aktuell ausgewählte. Der Hinweis auf den anderen Geltungsbereich ist jetzt ein Link, der Sie zur Einstellung in diesem anderen Geltungsbereich führt.

modified in link

Performance des Baum-Widgets

Das VS Code Baum-Widget-Steuerelement wird an vielen Stellen in der VS Code-Benutzeroberfläche verwendet, stieß jedoch in einigen spezifischen Anwendungsfällen (Probleme-Panel, Gliederungsansicht) an Leistungsgrenzen. Wir haben an schnelleren virtuellen Baum-Widget-Implementierungen gearbeitet, die unterschiedliche Leistungsniveaus gegenüber der API-Bequemlichkeit berücksichtigen können. Sie können hier mehr erfahren.

Das neue ObjectTree-Widget wird nun im Probleme-Panel verwendet und wir haben bereits deutliche Verbesserungen gesehen. Wir konnten die Anzahl der vom Workbench verarbeitbaren Problemobjekte drastisch erhöhen und die Geschwindigkeit bestimmter Operationen (wie z.B. Alle einklappen) und erweiterte Filterungsszenarien verbessern. Diese Verbesserungen machen es nun möglich, mit größeren Datensammlungen zu arbeiten.

Workbench-Navigationsbefehle

Vier Befehle wurden hinzugefügt, um die Workbench-Navigation zu verbessern

  • workbench.action.nextSideBarView: Gehe zur nächsten Ansicht in der Seitenleiste.
  • workbench.action.previousSideBarView: Gehe zur vorherigen Ansicht in der Seitenleiste.
  • workbench.action.nextPanelView: Gehe zum nächsten Panel.
  • workbench.action.previousPanelView: Gehe zum vorherigen Panel.

Standardmäßig haben die Befehle keine Tastenkombinationen.

Zwei Kontextschlüssel, sideBarFocus und panelFocus, wurden ebenfalls hinzugefügt. Dies ermöglicht die Verwendung derselben Tastenkombination für verschiedene Befehle in verschiedenen Workbench-Bereichen.

[
  { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextPanelView",
    "when": "panelFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousPanelView",
    "when": "panelFocus"
  }
]

workbench-navigation

Übergeordnete Gruppe der Ansicht anzeigen

Der Befehl Ansicht öffnen (view in Quick Open) zeigt nun die übergeordnete Gruppe jeder Ansicht an, um die Ansichtshierarchie besser darzustellen. Zum Beispiel wird die Explorer-Gruppe nun als Seitenleiste / Explorer und die Terminal-Gruppe als Panel / Terminal angezeigt.

structured-view

Editor

Dateisymbole und Ordnersymbole in IntelliSense

Das IntelliSense-Widget zeigt nun Dateisymbole und Ordnersymbole für Dateivervollständigungen basierend auf Ihrem Dateisymbol-Design an. Dies sorgt für ein einheitliches Aussehen und hilft Ihnen, verschiedene Dateitypen schnell zu identifizieren.

File Icons in IntelliSense

Auswahl formatieren

Um kleine Formatierungsoperationen zu beschleunigen, formatiert der Befehl Auswahl formatieren ohne eine Editor-Auswahl nun die aktuelle Zeile.

Fehlercodes anzeigen

Der Editor zeigt nun den Fehlercode eines Problems an, wenn ein Fehlercode definiert ist. Der Fehlercode wird am Ende der Zeile in eckigen Klammern angezeigt.

Unten sehen Sie, dass TypeScript den Fehlercode '2339' anzeigt.

error codes

Integriertes Terminal

Geteiltes Terminal kann Arbeitsverzeichnis erben

Eine Einstellung terminal.integrated.splitCwd wurde hinzugefügt, um das aktuelle Arbeitsverzeichnis (cwd) des neuen Terminals zu steuern, wenn ein Terminal geteilt wird.

  • workspaceRoot - Das bisherige Verhalten; ein neues geteiltes Terminal verwendet den Arbeitsbereichs-Root als Arbeitsverzeichnis. In einem Multi-Root-Arbeitsbereich wird eine Auswahl angeboten, welcher Root-Ordner verwendet werden soll.
  • initial - Ein neues geteiltes Terminal verwendet das Arbeitsverzeichnis, mit dem das Eltern-Terminal gestartet wurde.
  • inherited - Unter macOS und Linux verwendet ein neues geteiltes Terminal das Arbeitsverzeichnis des Eltern-Terminals. Unter Windows verhält sich dies genauso wie initial.

Cmd+Backspace zum Löschen bis zum Zeilenanfang

Eine neue Tastenkombination wurde unter macOS für Cmd+Backspace hinzugefügt, die \u0015 (Ctrl+U) an das Terminal sendet. In Bash löscht dies vom Cursor bis zum Zeilenanfang, in Zsh löscht es die gesamte Zeile.

Experimentelle Pufferverbesserungen

Eine neue Einstellung terminal.integrated.experimentalBufferImpl ermöglicht die Änderung der Art und Weise, wie das Terminal seinen Puffer speichert, zu einer Implementierung basierend auf TypedArray/ArrayBuffer. Wenn Sie sich dafür entscheiden, können Sie mit allgemeinen Leistungsverbesserungen rechnen, einschließlich reduzierter Speichernutzung und Garbage Collection sowie einer allgemeinen Erhöhung des Durchsatzes des Terminals.

{
  "terminal.integrated.experimentalBufferImpl": "TypedArray"
}

Dies ist erst der Anfang. Wir erwarten weitere Verbesserungen des Durchsatzes und der Speichernutzung in den nächsten paar Versionen, bevor wir dies zur Standardimplementierung machen. Besonderer Dank gilt @jerch vom xterm.js-Team, der die treibende Kraft hinter diesem mehr als einmonatigen Projekt war.

Aufgaben

Terminal vor Ausführung von Tasks löschen

Eine neue Eigenschaft clear wurde zur presentation-Konfiguration von Tasks hinzugefügt. Setzen Sie die Eigenschaft clear auf true, um das Terminal vor der Ausführung des Tasks zu löschen.

Debugging

Einklappbare Stack-Frames

Manchmal enthalten Aufrufstapel im Debugger Stack-Frames, die für den Benutzer nicht interessant sind (externer Code, übersprungene Dateien usw.). Um Unordnung zu reduzieren und vertikalen Platz zu sparen, rendern wir diese uninteressanten Stack-Frames nun als eingeklappt.

stack frames

Verbesserte Ansicht für geladene Skripte

In diesem Meilenstein haben wir die Ansicht Geladene Skripte aktualisiert, um Dateisymbole zu unterstützen, und die Möglichkeit hinzugefügt, zugehörige Ressourcen als untergeordnete Elemente anzuzeigen. Debug-Erweiterungen können diese Funktion nutzen, um die Quelldatei(en) anzuzeigen, die in ein Skript transkompiliert wurden.

Das folgende Bild vom Node.js-Debugger zeigt die TypeScript-Quelle für JavaScript-Dateien (wie in Source Maps verfügbar).

loaded scripts view

Bitte beachten Sie, dass die Funktion für zugehörige Ressourcen eine Zustimmung von Debug-Erweiterungen erfordert. In der Oktober-Version hat nur node-debug experimentelle Unterstützung für diese Funktion für Node.js-Versionen < 8.0 (auch "legacy" genannt).

Mehrere Debugging-Konsolen

Beim Debuggen mehrerer Debugging-Sitzungen zeigen wir nun deren Ausgabe in verschiedenen Debugging-Konsolen an. Dies erleichtert die Unterscheidung, welche Debugging-Sitzung für welche Ausgabe und Auswertung verantwortlich ist.

multiple debug consoles

Debugging starten mit "Stop on Entry"

Für das Node.js-Debugging haben wir einen neuen Befehl Debug: Start Debugging and Stop On Entry (extension.node-debug.startWithStopOnEntry) hinzugefügt. Verwenden Sie diesen Befehl, wenn Sie das Debugging starten und sofort am Einstiegspunkt Ihres Programms stoppen möchten. Die Standard-Tastenkombination ist F11. Beachten Sie, dass dieser Befehl nur verfügbar ist, wenn Ihre ausgewählte Startkonfiguration vom Typ node ist.

Node-Debugging unterstützt console.log-Styling

Beim Debuggen von Node.js (oder Chrome mit der Erweiterung "Debugger for Chrome") können Sie nun Meldungen von console.log mit %c formatieren, ähnlich wie es Chrome DevTools unterstützt. Unterstützte Eigenschaften sind color, background, font-weight: bold und text-decoration: underline.

console styles

Breakpoint-Widget erweitert sich auf mehrere Zeilen

Das Breakpoint-Widget kann sich nun über mehrere Zeilen erstrecken. Verwenden Sie Shift+Enter, um eine zusätzliche Zeile einzufügen, oder fügen Sie einfach eine mehrzeilige Bedingung oder Protokollnachricht ein. Dies sollte beim Bearbeiten komplexerer Bedingungen und Protokollnachrichten helfen.

breakpoint widget

Sprachen

TypeScript 3.1.4

Diese Version enthält TypeScript 3.1.4, ein kleines Update, das einige wichtige Fehler behebt.

Verbesserungen an Markdown-Snippets

Die integrierten Markdown-Snippets, wie z.B. für Links und Codeblöcke, verwenden nun standardmäßig den aktuell ausgewählten Text. Dies ermöglicht Ihnen Tastenkombinationen zu erstellen, die den aktuell ausgewählten Text in einen Link oder eine Überschrift umwandeln.

{
  "key": "cmd+k",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "markdown",
    "name": "Insert link"
  }
}

CSS-Spezifität in Hover-Meldung

Der CSS-Hover zeigt nun die CSS- Spezifität an.

css-specificity

Behandlung unbekannter CSS-Eigenschaften

Mit CSS-Präprozessoren wie PostCSS können Sie ungültige Eigenschaften verwenden, die während der Entwicklungszeit zu gültigen Eigenschaften kompiliert werden. Die Einstellung [css/less/scss].lint.validProperties verhindert, dass VS Code diese ungültigen Eigenschaften als fehlerhaft markiert.

Verbesserte Warnung für CSS-Null-Einheiten

CSS lintet nun Null-Einheiten, die in CSS-Kurzbefehl-Eigenschaftswerten verwendet werden. Zum Beispiel wird 0px nun eine Warnung auslösen.

Fehlerhafte Handhabung von JSON-Schema-Ladefehlern

Wenn VS Code ein JSON-Schema, das für IntelliSense oder die Fehlerprüfung von JSON-Dateien verwendet wird, nicht herunterladen kann, wird in der Statusleiste eine Warnung angezeigt.

json-schema-loading

In der Vergangenheit sahen Sie eine Fehlermeldung im Editor.

Technik

Fortgesetzte Erkundung von Electron 3.0

Während dieses Meilensteins haben wir weiterhin die Integration von Electron 3.0.0 in VS Code erforscht. Dies ist eine wichtige Electron-Version und wird mit Chrome 66 und Node.js 10.x ausgeliefert (ein großer Sprung im Vergleich zu unserer aktuellen Version mit Chrome 61 und Node.js 8.x). Wir planen, das Update in naher Zukunft für unsere Insiders-Benutzer auszurollen, um zusätzliches Feedback zu sammeln. Wenn Sie helfen möchten, stellen Sie sicher, dass Sie VS Code Insiders installieren.

Strikte Nullprüfungen im Kern von VS Code

In diesem Meilenstein haben wir auch mit der Arbeit begonnen, TypeScript's strikte Nullprüfungen im Kern-Quellcode von VS Code zu aktivieren. Strikte Nullprüfungen helfen dabei, viele häufige Programmierfehler zu erkennen und die Absicht des Programmierers expliziter zu machen. Wir haben klare Vorteile bei der Verwendung von strikten Nullprüfungen für die integrierten Erweiterungen von VS Code festgestellt.

Da der Kern-Quellcode von VS Code mehrere Tausend Dateien enthält, führen wir die strikten Nullprüfungen schrittweise ein. Wir haben damit begonnen, Dateien ohne Importe strikt auf Null zu prüfen, und aktivieren nun schrittweise strikte Nullprüfungen in Dateien, die nur andere Dateien mit strikten Nullprüfungen importieren. Dies wird fortgesetzt, bis die gesamte Codebasis konvertiert ist.

Die Aktivierung von strikten Nullprüfungen ist ein großer technischer Aufwand, aber wir denken, dass sich der Gewinn in Bezug auf Quellcode- und Produktqualität lohnen wird. Sie können unseren Fortschritt bei den strikten Nullprüfungen hier verfolgen.

Sonstiges

Menüleiste mit geringem Kontrast

Wenn Sie Ubuntu 18.10 oder ein GTK-Theme verwenden, das helle oder dunkle Kontextmenüs mit der entgegengesetzten Thematisierung für die Anwendungsmenüleiste mischt, können Sie eine Menüleiste mit geringem Kontrast erleben, die schwer zu lesen ist.

Es gibt zwei mögliche Workarounds dafür

  • Probieren Sie den benutzerdefinierten Titelleistenstil von VS Code aus, indem Sie die Einstellung window.titleBarStyle auf custom setzen.
  • Ändern Sie Ihr GTK-Theme. Dies können Sie tun, indem Sie die Gnome Tweaks-Anwendung installieren und das vorherige Standardtheme Adwaita verwenden.

Informationen zu diesem Problem können unter Issue 62593 verfolgt werden.

Electron-Update

In dieser Version haben wir von Electron 2.0.9 auf 2.0.12 aktualisiert.

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.

Referenzen-Ansicht

Es gibt einen neuen Befehl Alle Referenzen finden, der eine dedizierte Seitenleistenansicht mit Referenz-Suchergebnissen anzeigt. Dies ergänzt die bestehende Peek-Ansichtsdarstellung und bietet eine stabilere Liste von Referenzen. Wählen Sie im Kontextmenü Alle Referenzen finden () und Referenzen werden in einer separaten Ansicht angezeigt, genau wie Suchergebnisse.

References View

Ergebnisse sind stabil und einzelne Ergebnisse können gelöscht werden, was großartig ist, wenn Sie die Ansicht als To-Do-Liste verwenden. Sie können F4 und ⇧F4 (Windows, Linux Shift+F4) verwenden, um durch die Ergebnisse zu navigieren, ohne die Hände von der Tastatur zu nehmen.

Lassen Sie uns wissen, was Sie denken, und wir werden die Erfahrung in unserem nächsten Update verfeinern.

Erweiterungsentwicklung

Normalisierte Erweiterungsbeispiele

Die VS Code Erweiterungsbeispiele unter vscode-extension-samples wurden für Konsistenz aktualisiert.

Jedes Erweiterungsbeispiel enthält nun

  • Einheitlicher Codierungsstil und Struktur.
  • Eine README, die die Funktionalität des Beispiels mit einer kurzen Animation erklärt.
  • Eine Auflistung der vscode-API oder der Beitragspunkte, die in jedem Beispiel verwendet werden.

Bündeln von Erweiterungen

Bündelte Erweiterungen laden schneller. Wir haben daher ein Beispiel erstellt, das zeigt, wie Sie eine Erweiterung bündeln.

Entwickeln Sie Erweiterungen ohne Publisher

Um die anfängliche Erweiterungsentwicklung zu vereinfachen, wurde das Feld publisher aus der Yeoman Extension Generator-Vorlage entfernt. Für Erweiterungen ohne publisher-Identifikator lädt VS Code sie nun mit undefined_publisher als Publisher. Das vsce-Veröffentlichungstool warnt Sie jedoch, wenn Sie beim Versuch, Erweiterungen im Marketplace zu veröffentlichen, einen gültigen Publisher vermissen.

APIs für das aktive Terminal

Die vorgeschlagenen APIs, die Zugriff auf das aktive Terminal ermöglichen, window.activeTerminal und window.onDidChangeActiveTerminal, sind nun stabil.

Benachrichtigungen mit Schaltflächen werden nach einem Timeout ausgeblendet

Wenn Ihre Erweiterung die API showInformationMessage oder showWarningMessage mit der nicht-modalen Option und Schaltflächen verwendet, beachten Sie, dass diese Benachrichtigungen nun nach einem bestimmten Timeout ausgeblendet werden. Nur Benachrichtigungen, die über showErrorMessage ausgelöst werden und Schaltflächen haben, bleiben wie bisher geöffnet. Wenn Sie sofortige Eingaben vom Benutzer benötigen oder eine Meldung prominent anzeigen müssen, können Sie immer noch modal: true als Option verwenden. Dies öffnet ein modales Dialogfeld, das den Benutzer blockiert, bis es geschlossen wird. Wir raten jedoch von übermäßigem Gebrauch dieser Option ab, da sie den Benutzer unterbricht.

Benutzerdefinierte Ansichten: Aufgedeckte Elemente erweitern

Sie können nun ein Element erweitern, um es aufzudecken, indem Sie die Option expand in der reveal-API verwenden. Sie unterstützt auch das rekursive Erweitern von Kindelementen durch Angabe der Anzahl der Ebenen.

HINWEIS: Sie können nur bis zu einem Maximum von 3 Ebenen erweitern.

/**
 * Reveals the given element in the tree view.
 * If the tree view is not visible then the tree view is shown and element is revealed.
 *
 * By default revealed element is selected.
 * In order to not to select, set the option `select` to `false`.
 * In order to focus, set the option `focus` to `true`.
 * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
 * **NOTE:** You can expand only to 3 levels maximum.
 *
 * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
 */
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;

Neue Theme-Farben

Es gibt neue Theme-Farben

  • tab.activeModifiedBorder: Rahmen oben an aktiven geänderten (schmutzigen) Reitern in einer aktiven Gruppe.
  • tab.inactiveModifiedBorder: Rahmen oben an inaktiven geänderten (schmutzigen) Reitern in einer aktiven Gruppe.
  • tab.unfocusedActiveModifiedBorder: Rahmen oben an aktiven geänderten (schmutzigen) Reitern in einer nicht fokussierten Gruppe.
  • tab.unfocusedInactiveModifiedBorder: Rahmen oben an inaktiven geänderten (schmutzigen) Reitern in einer nicht fokussierten Gruppe.
  • editor.stackFrameHighlightBackground: Hintergrundfarbe der Hervorhebung des obersten Debug-Stack-Frames im Editor. Standardmäßig ist diese Farbe gelb.
  • editor.focusedStackFrameHighlightBackground: Hintergrundfarbe der Hervorhebung des fokussierten Debug-Stack-Frames im Editor. Standardmäßig ist diese Farbe grün.

Git-Erweiterungs-API-Ergänzungen

Die Git-Erweiterungs-API wurde aktualisiert, um Details zu den tatsächlichen Änderungen, die jedes Repository aufweist, preiszugeben.

Zusätzlich wurden die folgenden Methoden freigegeben

Azure Pipelines für Erweiterungs-CI nutzen

Wir haben unsere Dokumentation aktualisiert, wie Sie eine kontinuierliche Integrationslösung für Ihre Erweiterung einrichten können, indem Sie Azure Pipelines verwenden. Der neue Leitfaden bietet eine Konfiguration, mit der Sie Ihre Erweiterungstests gleichzeitig unter Windows, macOS und Linux ausführen können.

Azure Pipelines CI results

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.

Zwischenablage-API

Wir haben eine vorgeschlagene API für den Zugriff auf die Zwischenablage. Sie folgt der anstehenden Browser- Clipboard-API und ermöglicht derzeit das Lesen und Schreiben von Text.

export interface Clipboard {
  readText(): Thenable<string>;
  writeText(value: string): Thenable<void>;
}
export namespace env {
  const clipboard: Clipboard;
}

Einfügeregeln für Vervollständigungstext

Es gibt eine neue vorgeschlagene API zur Änderung des Einfügeverhaltens von Vervollständigungselementen. Standardmäßig werden mehrzeilige Vervollständigungen 'neu formatiert', um die Einrückung der aktuellen Zeile zu übernehmen. Manchmal ist diese Einrückung unerwünscht, und die neue vorgeschlagene API ermöglicht es einer Vervollständigung, sie zu deaktivieren. CompletionItemInsertTextRule ist eine Bitmaske mit einer KeepWhitespace-Regel, die eine Vervollständigung festlegen kann.

Benutzerdefinierte Ansichten

Aktion "Alle einklappen"

Sie können die Aktion Alle einklappen zu Ihrer Ansicht hinzufügen, indem Sie einfach die Option showCollapseAll auf true setzen, wenn Sie TreeView erstellen.

/**
 * Options for creating a [TreeView](#_TreeView]
 */
export interface TreeViewOptions<T> {
  /**
   * A data provider that provides tree data.
   */
  treeDataProvider: TreeDataProvider<T>;

  /**
   * Whether to show collapse all action or not.
   */
  showCollapseAll?: boolean;
}

namespace window {
  export function createTreeView<T>(
    viewId: string,
    options: TreeViewOptions<T>
  ): TreeView<T>;
}

VS Code bietet die Funktionalität Alle einklappen und zeigt sie mit demselben Symbol und an derselben Stelle für alle aktivierten Ansichten an.

Collapse All

Hervorhebungen des TreeItem-Labels

Sie können das TreeItem-Label hervorheben, indem Sie Bereiche mit der Option highlights bereitstellen. Da es sich um eine vorgeschlagene API handelt, müssen Sie TreeItem2 verwenden, um Highlights zu aktualisieren.

/**
 * Label describing the [Tree item](#_TreeItem)
 */
export interface TreeItemLabel {
  /**
   * A human-readable string describing the [Tree item](#_TreeItem).
   */
  label: string;

  /**
   * Ranges in the label to highlight. A range is defined as a tuple of two number where the
   * first is the inclusive start index and the second the exclusive end index
   */
  highlights?: [number, number][];
}

export class TreeItem2 extends TreeItem {
  /**
   * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
   */
  label?: string | TreeItemLabel | /* for compilation */ any;

  /**
   * @param label Label describing this item
   * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
   */
  constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

Label highlights

Eingabefeld der Quellcodeverwaltung ausblenden

Es gibt eine neue vorgeschlagene API-Eigenschaft für SourceControlInputBox-Instanzen, die es Ihnen ermöglicht, das Eingabefeld oben in der Ansicht der Quellcodeverwaltungsanbieter auszublenden.

export interface SourceControlInputBox {
  /**
   * Controls whether the input box is visible (default is  true`).
   */
  visible: boolean;
}

SignatureHelpContext

Der vorgeschlagene SignatureHelpContext gibt SignatureHelpProviders zusätzliche Informationen darüber, warum Signature Help angefordert wurde.

export interface SignatureHelpProvider {
  provideSignatureHelp(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
    context: SignatureHelpContext
  ): ProviderResult<SignatureHelp>;
}

Der SignatureHelpContext beinhaltet

  • Welche Aktion die Signature Help ausgelöst hat
  • Das Trigger-Zeichen (falls vorhanden)
  • Wurde dies erneut ausgelöst? (Signature Help wurde bereits angezeigt)
/**
 * Contains additional information about the context in which a
 * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
 */
export interface SignatureHelpContext {
  /**
   * Action that caused signature help to be requested.
   */
  readonly triggerReason: SignatureHelpTriggerReason;

  /**
   * Character that caused signature help to be requested.
   *
   * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
   * or when moving the cursor.
   */
  readonly triggerCharacter?: string;

  /**
   * Whether or not signature help was previously showing when triggered.
   *
   * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
   * or by a cursor move.
   */
  readonly isRetrigger: boolean;
}

/**
 * How a [Signature provider](#_SignatureHelpProvider) was triggered
 */
export enum SignatureHelpTriggerReason {
  /**
   * Signature help was invoked manually by the user or by a command.
   */
  Invoke = 1,

  /**
   * Signature help was triggered by a trigger character.
   */
  TriggerCharacter = 2,

  /**
   * Signature help was triggered by the cursor moving or by the document content changing.
   */
  ContentChange = 3
}

Zusätzlich erlaubt der Vorschlag, SignatureHelpProvider mit einer Menge von triggerCharacters und einer separaten Menge von retriggerCharacters zu registrieren.

export interface SignatureHelpProviderMetadata {
  readonly triggerCharacters: ReadonlyArray<string>;
  readonly retriggerCharacters: ReadonlyArray<string>;
}

namespace languages {
  export function registerSignatureHelpProvider(
    selector: DocumentSelector,
    provider: SignatureHelpProvider,
    metadata: SignatureHelpProviderMetadata
  ): Disposable;
}

retriggerCharacters löst nur dann einen SignatureHelpProvider aus, wenn bereits eine Signature Help angezeigt wird.

Beiträge zu Erweiterungen

Unser Team pflegt oder trägt zu einer Reihe von VS Code-Erweiterungen bei. Am bemerkenswertesten in diesem Monat:

Go

Nachfolgend einige der wichtigsten Funktionen, die die Go-Erweiterung jetzt mit den neuen Go-Modulen in Go 1.11 unterstützt:

  • Code-Navigation (Gehe zu Definition, Signature Help, Symbolinfo beim Hovern)
  • Code-Vervollständigung
  • Code-Abdeckung
  • Code-Diagnostik
  • Paketbezogene Befehle wie Go: Import hinzufügen und Go: Pakete durchsuchen

Weitere Details finden Sie im Wiki zur Unterstützung von Go-Modulen in Visual Studio Code.

Weitere bemerkenswerte Funktionen in der Go-Erweiterung sind:

  • Der Language Server von Sourcegraph wird jetzt auch unter Windows unterstützt.
  • Das Auto-Vervollständigungs-Widget zeigt nun Dokumentation für die vorgeschlagenen Symbole an. Drücken Sie ⌃Space (Windows, Linux Ctrl+Space), um den Detailbereich des Auto-Vervollständigungs-Widgets zu erweitern/zuklappen.
  • Auto-Vervollständigung wird nun beim Cross-Kompilieren unterstützt. Dies ist besonders hilfreich, wenn Sie die neuen WebAssembly-Unterstützung in Go 1.11 ausprobieren.
  • Kontextmenü mit Optionen Wert kopieren, Als Ausdruck kopieren und Zu "Überwachen" hinzufügen sind nun im Variablenbereich der Debug-Ansicht verfügbar.
  • Option zum Linting nur der aktuellen Datei beim Speichern.

TypeScript TSLint-Plugin

Das neue TypeScript TSLint-Plugin aktiviert TSLint als TypeScript Language Service Plugin. Diese Plugins funktionieren in jedem Editor, der den TypeScript Language Service nutzt, einschließlich VS Code, Visual Studio, Atom und Sublime Text.

Wir haben auch eine Erweiterung veröffentlicht, die das TypeScript TSLint-Plugin bündelt, sodass Sie das Plugin nicht in Ihrem Arbeitsbereich konfigurieren müssen.

GitHub Pull Requests

In diesem Meilenstein haben wir an Verbesserungen der GitHub Pull Requests-Erweiterung gearbeitet. Die Erweiterung unterstützt nun das Bearbeiten und Löschen von Kommentaren, sowohl innerhalb des Editors als auch auf der Beschreibungsseite, und verfügt über ein besseres Caching für noch nicht übermittelte Kommentare. Sie können die vollständigen Versionshinweise für die Erweiterung hier lesen.

Neue Dokumentation

Bereitstellung von Python-Tutorials

Es gibt zwei neue Python-Tutorials, die zeigen, wie Python-Webanwendungen mit VS Code bereitgestellt werden.

Debugging-Rezepte

Es gibt neue VS Code-Debugging- Rezepte für PHP, Python und Ruby on Rails.

Bemerkenswerte Fehlerbehebungen

  • 54214: Die Methode startDebugging in vscode gibt immer noch true zurück, auch wenn der Build fehlschlägt.
  • 57289: Die Einstellungs-UI sollte ihre Suche beim Neuladen beibehalten.
  • 57321: Zeigen Sie die Schaltflächen "Suche löschen" und "Filter löschen" an, wenn die Suche nach Einstellungen keine Ergebnisse liefert.
  • 59305: Zeigen Sie eine Schaltfläche "Arbeitsbereich öffnen" in .code-workspace-Dateien an.
  • 59430: Kann nicht mehr in Node-internen Dateien stoppen.
  • 61711: Alle Breakpoints sind nicht verifiziert.
  • 62085: PauseRequest wird nicht vom Debug-Adapter empfangen.
  • 62346: Debug-Sitzung kann während der Initialisierung nicht abgebrochen werden
  • 62354: Probleme beim Remote-Debugging nach Node 10.12

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-eslint

Beiträge zu vscode-languageserver-node

Beiträge zu language-server-protocol

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-css-languageservice

Beiträge zu vscode-json-languageservice

Beiträge zu debug-adapter-protocol

Beiträge zu vscode-debugadapter-node

Beiträge zu vscode-chrome-debug-core

  • @digeff
    • Wir passen uns an die neueste Version von Node.js an, die file:/// verwendet, und senden sourceRef nicht für Dateien, die existieren PR #373
    • Fehler beim Treffen von Breakpoints in der ersten Zeile von NTVS-Unit-Tests beheben PR #369
    • Fehler beim Treffen von Breakpoints in Netzwerpfaden mit Node beheben PR #368
  • @rdegelo
    • Verbesserung des Debug Console-Stylings. Unterstreichung und Hintergrundunterstützung hinzugefügt PR #374
    • Unterstützung für grundlegende Farb-Escape-Sequenzen in der Debug-Konsole hinzugefügt PR #367

Beiträge zu vscode-generator-code

Beiträge zu vscode-vsce

Beiträge zu vscode-extension-samples

Beiträge zu vscode-recipes

Beiträge zu inno-updater

Beiträge zu localization

Es gibt fast 1400 Mitglieder im Transifex VS Code-Projekt-Team mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, das Abstimmen über Übersetzungen oder das Vorschlagen von Prozessverbesserungen.

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.

  • Bosnisch: Dario Fuzinato.
  • Bulgarisch: Любомир Василев.
  • Katalanisch: joanmiro pisa.
  • Tschechisch: Vít Staniček, Kryštof Černý, Michal Franc.
  • Niederländisch: Gerald Versluis, Vincent Verbist.
  • Englisch (Vereinigtes Königreich): Matthew John Cheetham, Alexander Ogilvie.
  • Finnisch: Petri Niinimäki, Feetu Nyrhinen.
  • Französisch: Antoine Griffard, Adrien Clerbois.
  • Deutsch: J.M. Rütter, Volkmar Rigo.
  • Griechisch: Dimitris Siakavelis, Christos Koutsiaris.
  • Hindi: Ashwini Gupta, Bimal ., Brahma Dev, Rahul Bhammarker.
  • Ungarisch: Tar Dániel.
  • Chinesisch (vereinfacht): Joel Yang, pluwen, Zijian Zhou, Simon Chan.
  • Chinesisch (traditionell): Duran Hsieh, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin.
  • Indonesisch: Rizki A. Wibowo, Laurensius Dede Suhardiman, Fahmi Irsyad khairi, Wildan Mubarok, G-RiNe Project, Pratikto Ariestyadi, Joshua Siagian, William Tantiono, Herman Prawiro, Febrian Setianto (Feber), Angger Rafi Akbar, Joseph Aditya P G, Oka bRionZ, rodin.
  • Italienisch: Alessandro Alpi, Riccardo Cappello, Marco Dal Pino, Roberto Albano, Andrea Dottor, Luigi Bruno.
  • Japanisch: Shunya Tajima, Yuichi Nukiyama, Satoshi Kajiura, Yoshihisa Ozaki.
  • Kannada: Sanjay !.
  • Koreanisch: Kyunghee Ko, Junseong Jang.
  • Litauisch: Martynas Jusys.
  • Malayalam: Ajith S Punalur, Anand Chalakkal Jose Mohan, Kiren Paul.
  • Norwegisch Bokmål: Espen Klein Nilsen.
  • Polnisch: Artur, Andrzej Supermocny, Jan Bońkowski, Mateusz Wyczawski, Warchlak.
  • Portugiesisch (Brasilien): Rodrigo Crespi, Roberto Fonseca, Danilo Dantas, Thiago Aragão, Thiago Moreira de Souza Arrais, Atílio Dadalto, Marcelo Fernandes, Douglas Heydt, Robson Cassiano, Lucas Miranda, Thiago Custodio.
  • Portugiesisch (Portugal): Diogo Barros, António Santos, Antonio Lourenco.
  • Russisch: Ivan Kuzmenko, Roman Slauta, Michael Crane.
  • Spanisch: José M. Aguilar, Matias Menich, Alberto Poblacion, Daniel J. Pérez Nieto, Andrés Reyes Galgani.
  • Tamil: Nadar Solomon Sunder, Sarath Jasrin, Sakthi Raj, rajakvk, Avinash, ஜெகன் லங்கா சாமி துரை, Anand AV, Jeyanthinath Muthuram, Narayanan Singaram.
  • Telugu: Rama Chandu, Hari Jujjavarapu, Sai Pavan Koundinya Upadhyayula.
  • Ukrainisch: Svitlana Galianova, Borys Lebeda, Dmytro Kyrychuk, Victor Kubrak, Volodymyr Holovka.
  • Urdu: Haseeb Anwer, Saqib Ameen, Ahmad Awais.
  • Vietnamesisch: Thanh Phu, Daniel Nguyen, Nguyễn Nhật Tân, Hung Nguyen, Vuong.
© . This site is unofficial and not affiliated with Microsoft.