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

Januar 2019 (Version 1.31)

Update 1.31.1: Das Update behebt diese Probleme.

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


Willkommen zur Januar 2019-Version von Visual Studio Code. Es gibt eine Reihe wichtiger Aktualisierungen 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 Highlight-Video zur Version 1.31 von 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 - Zen-Modus blendet Zeilennummern aus, neuer Screencast-Modus zeigt Tastenanschläge.
  • Editor - Verbesserungen bei der intelligenten Auswahl, Anpassung der Position von Referenz-CodeLenses.
  • Integriertes Terminal - ConPTY-Unterstützung unter Windows, Verbesserungen bei der Suche.
  • Erstellung von Erweiterungen - Ereignis zur Änderung von Erweiterungen, Aktion zum Öffnen von Ressourcen im Browser.

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!

Erweiterungen

Kein Neustart bei der Installation

Die Möglichkeit, Erweiterungen zu installieren, ohne VS Code neu starten zu müssen, ist eine der am häufigsten nachgefragten Funktionen, und wir bringen sie in dieser Version zu Ihnen. Sie müssen VS Code nicht mehr neu starten, wenn Sie eine Erweiterung installieren oder aktivieren.

Im folgenden Beispiel folgt der Benutzer der Empfehlung, die Erweiterung Vetur zu installieren, nachdem eine .vue-Datei geöffnet wurde. Beachten Sie, dass die von der Vetur-Erweiterung bereitgestellten Sprachfeatures (wie Syntax-Hervorhebung, Diagnosefehler) unmittelbar nach der Installation der empfohlenen Erweiterung verfügbar sind.

Extensions no reload

Ein Neustart ist auch nicht erforderlich, wenn Sie eine Erweiterung deinstallieren oder deaktivieren, sofern sie nicht aktiviert ist.

Hinweis: Es gibt bestimmte Erweiterungen, die einen Neustart erfordern, da sie externe Beiträge leisten (zu den Erweiterungspunkten anderer Erweiterungen beitragen). Dies erfordert die Zustimmung der Eigentümer der externen Beitragspunkte, indem sie das Ereignis extensions.onDidChange abonnieren.

Workbench

Neues Baum-Widget

Wir haben unser Widget-Spiel auf die nächste Stufe gehoben: Ein neues Baum-Widget wurde erstellt, um Leistungsprobleme zu beheben und uns zu ermöglichen, mehr Funktionen in verschiedenen Bereichen der Workbench bereitzustellen. Das neue Baum-Widget wurde durch Komposition über unser Hochleistungs-Listen-Widget erstellt. Wir beabsichtigen, einen separaten Blogbeitrag über diese technische Arbeit und die Leistungsverbesserungen zu schreiben. Vorerst konzentrieren wir uns stattdessen auf die Funktionen.

Hinweis: Der neue Baum wurde im Dateiexplorer, allen Debug-Bäumen, der Suche und dem Peek-Referenzen-Fenster übernommen. Die unten beschriebenen Funktionen gelten für die meisten dieser Benutzeroberflächenbereiche, sofern sie nicht ausdrücklich von uns deaktiviert wurden.

Verbesserte Tastaturnavigation

Es gibt jetzt drei verschiedene Arten der Tastaturnavigation in Bäumen: einfach, hervorgehoben und gefiltert. Sowohl in den Modi hervorgehoben als auch gefiltert wird beim Tippen in einem Baum oben im Baum ein Widget (Steuerelement) angezeigt, das anzeigt, dass Sie gerade den Baum durchlaufen.

Keyboard navigation type filter

Dieses Widget kann auch verwendet werden, um zwischen den Modi hervorgehoben und gefiltert zu wechseln. Sie können eine Tastenkombination konfigurieren, um den Befehl list.toggleFilterOnType auszuführen, wenn Sie eine Tastenkombination für den Wechsel zwischen den Modi wünschen. Die Einstellung Workbench > List: Keyboard Navigation (workbench.list.keyboardNavigation) legt den Standardmodus fest, einschließlich des einfachen Modus, in dem das Tippen der ersten paar Zeichen eines Baum-Elements dieses Element einfach fokussiert.

Benutzer, die Einzeltastenkürzel für Listen-/Baumaktionen haben, können diese Funktion weiterhin nutzen, indem sie den Kontextschlüssel listAutomaticKeyboardNavigation verwenden. Zum Beispiel setzt die VIM-Erweiterung diesen Kontextschlüssel auf false, um die automatische Tastaturnavigation zu deaktivieren, und fügt eine Tastenkombination / zum Befehl list.toggleKeyboardNavigation hinzu, sodass Benutzer einfach / tippen und den Baum durchlaufen können. Erfahren Sie mehr darüber im VSCodeVIM Pull Request.

Theme-Autoren können die Farben des Widgets mit den folgenden neuen Theme-Schlüsseln anpassen

  • listFilterWidget.background
  • listFilterWidget.outline
  • listFilterWidget.noMatchesOutline

Hinweis: Diese Tastaturnavigationsmodi funktionieren derzeit nur bei aufgelösten Baumknoten. Im Dateiexplorer sucht der Baum beispielsweise nicht nach den Kindern eines Ordners, wenn dieser noch nie erweitert wurde. Wir erwägen mehrere Optionen, um diese Erfahrung zu verbessern.

Hierarchisches Alles auswählen

Wenn Sie in einem Baum Strg+A (Cmd+A unter macOS) drücken, wird die Auswahl des Baums nun hierarchisch erweitert.

Hierarchical select all

Anpassbare Einrückung

Sie können jetzt die Einrückung von Knoten aller Bäume in der gesamten Workbench mit der Einstellung Workbench > Tree: Indent (workbench.tree.indent) anpassen.

Alles erweitern/einklappen

Wenn Sie die Alt-Taste gedrückt halten, während Sie Baumknoten erweitern/einklappen, funktioniert dies nun rekursiv. Beachten Sie, dass die rekursive Erweiterung nur für Knoten funktioniert, die zuvor im Baum sichtbar waren. Der Dateiexplorer erweitert beispielsweise nicht automatisch Ordner, die vom Benutzer noch nie zuvor erweitert wurden.

Horizontales Scrollen

Die Einstellung Workbench > Tree: Horizontal Scrolling (workbench.tree.horizontalScrolling) aktiviert nun horizontales Scrollen in mehr Bäumen und Listen, nämlich Explorer, Suche, SCM, Debugging usw.

Problems-Panel

Mehrzeilige Meldungen

Das Panel "Probleme" zeigt jetzt mehrzeilige Diagnosemeldungen in separaten Zeilen an. Das folgende Beispiel zeigt, wie eine mehrzeilige Fehlermeldung von TypeScript jetzt dargestellt wird.

Problems panel multi-line messages

Sie können auch umschalten, um die vollständige Meldung anzuzeigen oder auszublenden, indem Sie entweder die Ein-/Ausklapp-Schaltflächen oder die Befehle Problems: Show message in single line und Problems: Show message in multiple lines verwenden.

Code-Aktionen mit einer Tastenkombination auslösen

Sie können jetzt Code-Aktionen aus dem Panel "Probleme" mit derselben Standard-Tastenkombination ⌘. (Windows, Linux Strg+.) wie der Befehl "Schnelle Korrektur" auslösen.

Menü "Gehe zu" verbessert

Wir haben dem Menü Gehe zu weitere Navigationsaktionen hinzugefügt, um sie leichter auffindbar zu machen.

Go menu

Befehl "Ausschneiden" im Kontextmenü des Explorers

Aufgrund häufiger Nachfragen haben wir den Befehl "Ausschneiden" zum Kontextmenü des Explorers hinzugefügt.

Cut command in context menu

Schnelles Scrollen

Durch Drücken der Alt-Taste wird schnelles Scrollen im Editor und im Explorer aktiviert. Standardmäßig verwendet das schnelle Scrollen einen Geschwindigkeitsmultiplikator von 5X, aber Sie können den Multiplikator mit der Einstellung Editor: Fast Scroll Sensitivity (editor.fastScrollSensitivity) steuern.

Zen-Modus blendet Zeilennummern aus

Das Aktivieren des Zen-Modus blendet nun auch die Zeilennummern im Editor aus. Dieses Verhalten kann über die Einstellung zenMode.hideLineNumbers gesteuert werden.

Tastaturnavigation unter Linux mit benutzerdefinierten Menüs hinzugefügt

Unsere benutzerdefinierten Menüs unterstützen nun die Verwendung der Tasten Bild auf/ab und Pos1/Ende, um schnell zum Anfang oder Ende des Menüs zu springen.

Doppelklicken Sie auf das Anwendungssymbol, um unter Windows/Linux zu schließen

Aufgrund technischer Kompromisse entfernt die benutzerdefinierte Titelleiste unter Windows und Linux standardmäßig die Funktionalität, durch Doppelklicken auf das Anwendungssymbol das Fenster zu schließen. Die Funktionalität kann durch Aktivieren der Einstellung window.doubleClickIconToClose wiederhergestellt werden, mit dem Vorbehalt, dass Sie das Fenster von dieser Position aus nicht mehr ziehen können oder unter Windows das Systemkontextmenü erhalten.

Schließen-Reihenfolge von Editor-Tabs

Eine neue Einstellung workbench.editor.focusRecentEditorAfterClose ermöglicht es Ihnen, die Reihenfolge zu ändern, in der Editor-Tabs geschlossen werden. Standardmäßig werden Tabs in der zuletzt verwendeten (MRU)-Reihenfolge geschlossen. Das Ändern dieser Einstellung ermöglicht stattdessen das Schließen von Tabs von rechts nach links.

Neue Titelvariablen

Es gibt drei neue Variablen, die in der Einstellung window.title verwendet werden können:

  • ${activeFolderShort}: Der Name des Ordners, in dem sich die Datei befindet.
  • ${activeFolderMedium}: Der Pfad des Ordners, in dem sich die Datei befindet, relativ zum Arbeitsbereichsordner.
  • ${activeFolderLong}: Der vollständige Pfad des Ordners, in dem sich die Datei befindet.

Ausgabefenster

Das intelligente Scrollverhalten im Ausgabe-Panel ist jetzt effizienter. Das Scrollen ist gesperrt, wenn Sie irgendwo in das Ausgabe-Panel klicken, und wird entsperrt, wenn Sie in die letzte Zeile klicken.

Screencast-Modus

Es gibt einen neuen Screencast-Modus in VS Code, der die Cursorposition und Tastenanschläge hervorhebt. Der Screencast-Modus (Developer: Toggle Screencast Mode) kann für Demonstrationszwecke nützlich sein.

Screencast mode

Editor

Intelligente Auswahl

Wir haben die Implementierung von Auswahl erweitern und Auswahl verkleinern aus dem Menü Auswahlen verbessert. Wir sind dabei, eine API hinzuzufügen, damit Sprachserver Auswahlschritte basierend auf ihrem semantischen Wissen angeben können. Darüber hinaus haben wir auch die Standardimplementierung verbessert.

Smart selection

Bleiben Sie dran, es kommt noch mehr, da die intelligente Auswahl verbessert wird. Verwenden Sie das Label smart-select, um zu sehen, woran wir arbeiten.

Verlauf der Verweise

Für die Ansicht "Verweise" gibt es jetzt einen Befehl References: Show History. Er öffnet die Schnellauswahl mit früheren Suchen, die schnelle Wiederholungen früherer Suchen ermöglichen.

Reference search history

Referenz-CodeLens

Beim Auswählen einer Referenz-CodeLens öffnet sich ein Peek-Editor. Dies kann jetzt mit der Einstellung references.preferredLocation gesteuert werden. Ihre Optionen sind peek und view, wobei letzteres Referenzen in der neuen Ansicht anzeigt.

Snippet-Beschreibungen

Beim Erstellen von Snippets mit langen Beschreibungen mussten Sie in der Vergangenheit eine lange einzelne Zeichenkette schreiben. Es gab keine Unterstützung für die Verwendung eines Arrays, wie Sie es für body konnten. Dies hat sich nun geändert und lange Beschreibungen können mit Zeichenketten-Arrays geschrieben werden.

{
  "prefix": "happy",
  "body": "#Happy Coding!",
  "description": ["First Line", "Second Line", "Third Line"]
}

Legacy-Suchmodus entfernt

Vor 20 Versionen haben wir ripgrep für die Suche in VS Code verwendet. Unsere alte, auf Node.js basierende Suchimplementierung war weiterhin über die Einstellung search.useLegacySearch verfügbar. Aber wie Marie Kondo sagt, müssen wir die Dinge aufräumen, die keine Freude mehr bereiten. Wenn Sie Regex-Funktionen wie Rückverweise oder Lookahead verwendet haben, stellen Sie sicher, dass Sie die Einstellung search.usePCRE2 aktivieren.

Verwenden Sie einen einfachen Texteditor zum Bearbeiten von Einstellungen als JSON

In einem ähnlichen Sinne, da wir nun seit mehreren Versionen eine Einstellungs-UI haben, arbeiten wir daran, die Bearbeitung von JSON-Einstellungen zu vereinfachen. Wenn Sie Einstellungen als JSON bearbeiten, indem Sie eine Datei settings.json öffnen, auf die Schaltfläche {} in der Einstellungs-UI klicken oder den Befehl Preferences: Open User Settings (JSON) aufrufen, erhalten Sie einen einfachen JSON-Editor anstelle des vorherigen geteilten JSON-Editors. Sie können die Liste der Standardeinstellungen weiterhin mit dem Befehl Preferences: Open Default Settings (JSON) einsehen.

Wenn Sie den geteilten JSON-Editor mit den Standardeinstellungen links wirklich vermissen, können Sie ihn wiederherstellen, indem Sie die Einstellung workbench.settings.useSplitJSON aktivieren. Beachten Sie, dass Sie Einstellungen immer als JSON bearbeiten können, wenn Sie dies bevorzugen.

Netzwerk-Proxy-Unterstützung für Erweiterungen

Die Einstellung Http: Proxy Support (http.proxySupport) ermöglicht jetzt standardmäßig die Netzwerkkonnektivitätsunterstützung für alle Erweiterungen.

HTTP Proxy Support

Sprachen

TypeScript 3.3

Wir liefern jetzt TypeScript 3.3.1 aus. Dieses TypeScript-Update bringt einige wichtige Fehlerkorrekturen und Verbesserungen.

Entfernen der Einstellung markdown.previewFrontMatter

Die Einstellung markdown.previewFrontMatter wurde entfernt. Die Markdown-Vorschau blendet nun immer YAML-Frontmatter aus (dies war die Standardeinstellung für markdown.previewFrontMatter).

Markdown-Erweiterungen wie Markdown yaml Preamble und GitHub Markdown Preview rendern Frontmatter als Tabelle in der Vorschau.

Semantische Auswahl

Semantische Auswahl ist jetzt für HTML, CSS/LESS/SCSS und JSON verfügbar.

HTML, CSS, and JSON semantic selection

Integriertes Terminal

Reflow-Unterstützung

Das Terminal wird nun Zeilen umbrechen und entpacken, wenn es horizontal verkleinert wird.

Text reflowing in the terminal

ConPTY-Unterstützung unter Windows

Die Verwaltung von Terminalprozessen über die Windows ConPTY API ist jetzt als Opt-in-Option im Windows Insiders Fast Ring (Build-Nummer 18309+) verfügbar.

{
  "terminal.integrated.windowsEnableConpty": true
}

Dies verwendet das ConPTY-System des Windows-Konsolenteams als Backend für das Terminal. Die Aktivierung sollte viele Probleme mit dem Windows-Terminal beheben, insbesondere in Bezug auf Farbunterstützung, interaktive Anwendungen und Shells, die VT-Sequenzen nativ unterstützen.

Hier ist ein Vorher-Nachher-Vergleich der 256-ANSI-Farbunterstützung in einem WSL-Terminal.

256 colors without ConPTY don't work

256 colors with ConPTY do work

Unter Linux und macOS löst das Terminal Links jetzt relativ zum aktuellen Arbeitsverzeichnis auf, nicht zum Startverzeichnis des Terminals.

After navigating into a directory, links relative to that path will work

Verbesserungen bei der Suche im Terminal

Die Suche im Terminal unterstützt nun inkrementelle "Find-as-you-type"-Suche sowie die Möglichkeit, mehrere Begriffe in einer einzelnen Zeile zu finden.

Verbesserungen der Einstellung commandsToSkipShell

Zuvor war die Einstellung terminal.integrated.commandsToSkipShell eine Liste aller Befehle, die die Auswertung durch das Terminal überspringen und stattdessen von VS Code behandelt werden sollten. Dies war umständlich, da Sie eine Liste von über 100 Befehlen in Ihrer Einstellungsdatei benötigen würden, um sie zu ändern. Dies wurde nun zu einer Liste von Ergänzungen und Löschungen geändert, sodass Sie nur die Änderungen an der Standardliste angeben müssen.

{
  "terminal.integrated.commandsToSkipShell": [
    // Make ctrl+n open a new file when the terminal is focused
    "workbench.action.files.newUntitledFile",
    // Send ctrl+e to the terminal
    "-workbench.action.quickOpen"
  ]
}

Neue Pufferimplementierung aktiviert

Der in v1.29 eingeführte, auf TypedArray/ArrayBuffer basierende Terminal-Puffer ist jetzt aktiviert und die alte Implementierung wurde entfernt. Dies sollte den Durchsatz im Terminal deutlich erhöhen und gleichzeitig seinen Speicherbedarf erheblich reduzieren.

Debugging und Aufgaben

Benutzerdefinierte Befehlseingabevariablen

Die im letzten Meilenstein eingeführten Eingabevariablen sind ein leistungsstarker Mechanismus, um Benutzereingaben in Aufgaben- oder Debugging-Konfigurationen abzufragen. Anfangs stellten wir die Eingabevariablen promptString und pickString zur Verfügung.

In diesem Meilenstein führen wir einen neuen Typ von Eingabevariablen ein, command, der einen beliebigen Befehl ausführt, wenn eine Eingabevariable interpoliert wird. Da Befehle von Erweiterungen beigesteuert werden können, ist es jetzt möglich, Benutzereingabevariablen durch neue Implementierungen zu erweitern.

Das folgende Beispiel zeigt, wie eine Benutzereingabevariable vom Typ command in einer Debug-Konfiguration verwendet wird, die es dem Benutzer ermöglicht, einen Testfall aus einer Liste aller Testfälle in einem bestimmten Ordner auszuwählen. Es wird davon ausgegangen, dass eine Erweiterung einen Befehl extension.mochaSupport.testPicker bereitstellt, der alle Testfälle an einem konfigurierbaren Ort findet und eine Auswahl-UI anzeigt, um einen davon auszuwählen.

{
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Test",
      "program": "${workspaceFolder}/${input:pickTest}"
    }
  ],
  "inputs": [
    {
      "id": "pickTest",
      "type": "command",
      "command": "extension.mochaSupport.testPicker",
      "args": {
        "testFolder": "${workspaceFolder}/tests"
      }
    }
  ]
}

Unterstützung für geteilte Terminals für Aufgabenausgabe

Sie können jetzt Aufgaben so konfigurieren, dass die Ausgabe in einem geteilten Terminalfenster angezeigt wird, anstatt ein neues zu erstellen. Eine Aufgabenkonfiguration kann das Attribut group im Abschnitt presentation verwenden, um festzulegen, wo die Ausgabe der Aufgabe angezeigt werden soll.

Wenn Sie beide der folgenden beiden Aufgaben ausführen, werden sie in einem geteilten Terminal angezeigt, sodass Sie beide gleichzeitig sehen können.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Task One",
      "type": "shell",
      "command": "echo One && sleep 5000",
      "problemMatcher": [],
      "presentation": {
        "group": "groupA"
      }
    },
    {
      "label": "Task Two",
      "type": "shell",
      "command": "echo Two && sleep 5000",
      "problemMatcher": [],
      "presentation": {
        "group": "groupA"
      }
    }
  ]
}

Split terminal tasks

Vorschau-Funktionen

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.

Rasterlayout für die Workbench

Das Layout der Workbench wird überarbeitet, um dasselbe Rasterlayout zu verwenden, das auch von den Editoren selbst verwendet wird. Die hier geleistete Arbeit wird nicht nur die technische Wartung des Workbench-Layouts langfristig vereinfachen, sondern uns auch helfen, neue Erfahrungen zu ermöglichen.

In diesem Meilenstein liefern wir eine solche Erfahrung, um zu demonstrieren, was mit dem neuen Rasterlayout leichter erreicht werden kann: das Umschalten des Editorbereichs. Mit aktiviertem experimentellem Rasterlayout ("workbench.useExperimentalGridLayout": true) gibt es einen neuen Befehl Toggle Editor Area, der die Code-Editoren ausblendet. Dies ermöglicht es Ihnen, ein VS Code-Terminalfenster zu erstellen, das den gesamten Editorbereich einnimmt, wie unten gezeigt.

Terminal only window

Wenn Sie eine Datei über das Terminal mit code dateiname.txt öffnen, wird wie erwartet weiterhin ein Editor geöffnet. Dieses Feature ist noch in der Entwicklung und es gibt bekannte Probleme, aber wir ermutigen Sie, es auszuprobieren und Probleme zu melden. Sie können sich über Probleme im Zusammenhang mit dieser Arbeit mit dieser Abfrage auf dem Laufenden halten: dieser Abfrage.

Unterstützung für benutzerdefinierte HTML- und CSS-Daten

Da sich dieses Feature im Vorschau-Stadium befindet, können sich die Einstellungen, Beitragspunkte und Datenformate ändern.

Custom data

Heute programmieren Frontend-Entwickler oft in einer Obermenge von HTML/CSS.

  • Web Components ermöglichen benutzerdefinierte HTML-Elemente wie <my-button type="alert"></my-button>.
  • PostCSS ermöglicht benutzerdefinierte CSS-Eigenschaften wie size und noch nicht standardisierte CSS-Features wie :any-link.
  • Verschiedene Frameworks ermöglichen eine noch größere Flexibilität im Quell-HTML/CSS.

In dieser Iteration haben wir die in 1.30 eingeführte Unterstützung für benutzerdefinierte HTML-Daten verbessert und eine Unterstützung für benutzerdefinierte CSS-Daten hinzugefügt.

  • Verwenden Sie html.experimental.customData oder css.experimental.customData, um benutzerdefinierte Daten zu laden. (html.experimental.custom.tags und html.experimental.custom.attributes sind entfernt.)
  • Alternativ können Sie die JSON in eine Erweiterung mit contributes.html.experimental.customData oder contributes.css.experimental.customData bündeln.
  • Schließlich können Sie, wenn Sie einen Sprachserver schreiben, der vscode-html-languageservice oder vscode-css-languageservice verwendet, den Sprachserver mit benutzerdefinierten Daten erstellen.

Benutzerdefinierte Daten verbessern das Verständnis von VS Code für HTML/CSS. Zum Beispiel könnte VS Code mit diesen HTML/CSS JSON-Beiträgen Vervollständigungs- und Hover-Informationen für benutzerdefinierte HTML-Tags/-Attribute und CSS-Eigenschaften/-Pseudoklassen bereitstellen.

{
  "version": 1,
  "tags": [
    {
      "name": "my-button",
      "description": "My button",
      "attributes": [
        {
          "name": "type",
          "description": "My button type",
          "values": [{ "name": "alert" }]
        }
      ]
    }
  ]
}
{
  "version": 1,
  "properties": [
    {
      "name": "my-size",
      "description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
    }
  ],
  "pseudoClasses": [
    {
      "name": ":my-link",
      "description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
    }
  ]
}

Das obige Beispiel ist unter octref/simple-customdata verfügbar, während ein umfassenderes Beispiel unter octref/svg-data verfügbar ist.

Diese Anleitungen erklären das Datenformat und wie Sie es über Einstellungen und Erweiterungs-Beitragspunkte verwenden können.

  • Anleitung zur Verwendung von benutzerdefinierten HTML-Daten
  • Anleitung zur Verwendung von benutzerdefinierten CSS-Daten

Erweiterungs-Authoring

Ereignis zur Änderung von Erweiterungen

Ein neues Ereignis extensions.onDidChange wurde hinzugefügt, das ausgelöst wird, wenn sich das Array extensions.all ändert. Dies kann passieren, wenn Erweiterungen installiert, deinstalliert, aktiviert oder deaktiviert werden. Siehe den Abschnitt Kein Neustart bei der Installation von Erweiterungen.

/**
 * An event which fires when `extensions.all` changes. This can happen when extensions are
 * installed, uninstalled, enabled or disabled.
 */
export const onDidChange: Event<void>;

Hinweis: Erweiterungsautoren, die neue Beitragspunkte einführen, sollten dieses Ereignis abhören und den Zustand der Workbench entsprechend aktualisieren.

Ressourcen im Browser öffnen

Wir haben beobachtet, dass mehrere Erweiterungen Node-Module wie opn oder open verwenden, um eine URL in einem Browser zu öffnen. Angesichts des Wunsches nach dieser Funktionalität haben wir eine neue API vscode.env.openExternal hinzugefügt. Sie erwartet eine URL und kann zum Öffnen von Website-Links, Mail-Links oder Anwendung-URL-Handlern verwendet werden. Auch Dateipfade werden akzeptiert, um sie in der Standardanwendung zu öffnen, z. B. eine PDF-Datei.

// open default browser
await vscode.env.openExternal(
  vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);

Hinweis: Erweiterungsautoren, die derzeit die Module opn oder open verwenden, sollten auf diese neue API umsteigen.

Pfad für globale Speicherung

Eine Erweiterung erhält nun einen globalen Speicherpfad ExtensionContext.globalStoragePath, der auf ein lokales Verzeichnis mit Schreib-/Lesezugriff verweist. Dies ist eine gute Option, wenn Sie große Dateien speichern müssen, die von allen Arbeitsbereichen aus zugänglich sind.

/**
 * An absolute file path in which the extension can store global state.
 * The directory might not exist on disk and creation is
 * up to the extension. However, the parent directory is guaranteed to be existent.
 *
 * Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
 */
globalStoragePath: string;

VS Code kümmert sich um die Bereinigung dieses Pfads, wenn die Erweiterung entfernt wird.

Hinweis: Erweiterungsautoren, die derzeit einen benutzerdefinierten Dateisystemspeicherort zum Speichern von Zuständen über Arbeitsbereiche hinweg verwenden, sollten auf diese neue API umsteigen.

CodeActionKind.intersects

Die Methode CodeActionKind.intersects ist nützlich, um zu prüfen, ob ein CodeActionProvider überhaupt Code-Aktionen berechnen muss.

import * as vscode from 'vscode';

export class OrganizeImportsProvider implements vscode.CodeActionProvider {
    public provideCodeActions(
        document: vscode.TextDocument,
        range: vscode.Range,
        context: vscode.CodeActionContext,
        token: vscode.CancellationToken
    ): vscode.CodeAction[] {
        // Only return organize imports actions if they were explicitly requested
        // We can check this using `intersects`.
        if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
            // Organize imports actions were not requested
            return [];
        }

        // Organize imports was requested
        ...
    }
}

contributes.resourceLabelFormatters

Erweiterungen können jetzt Ressourcen-Label-Formatierer beisteuern, die festlegen, wie URIs überall in der Workbench angezeigt werden sollen. Zum Beispiel, wie eine Erweiterung einen Formatierer für URIs mit dem Schema remotehub beisteuern könnte.

"contributes": {
   "resourceLabelFormatters": [
        {
            "scheme": "remotehub",
            "formatting": {
                "label": "${path}",
                "separator": "/",
                "workspaceSuffix": "GitHub"
            }
        }
    ]
}

Das bedeutet, dass alle URIs mit dem Schema remotehub durch die Anzeige nur des path-Segments der URI gerendert werden und der Trenner / ist. Arbeitsbereiche, die die remotehub-URI haben, zeigen das GitHub-Suffix in ihrem Label an.

Argumente zu Tastenkombinationen hinzufügen

Beim Definieren einer Tastenkombination in package.json können Sie jetzt Argumente definieren. Bei der Ausführung werden diese Argumente an den Befehl übergeben.

Im folgenden Beispiel sind dies: {foo: 1, bar: 2}.

"keybindings": {
  "key": "cmd+i",
  "command": "myCommand",
  "args": {
    "foo": 1,
    "bar": 2
  }
}

Volle Kontrolle über die Umgebung von createTerminal

Die neue Einstellung TerminalOptions.strictEnv ändert die Terminalumgebung überhaupt nicht, sondern verwendet sie genau so, wie sie von der Erweiterung übergeben wurde.

// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
  name: 'Test terminal',
  env: {
    FOO: 'BAR'
  },
  strictEnv: true
});

Node.js-Update

Die Version von Electron, auf der VS Code läuft, wurde aktualisiert, was eine Aktualisierung von Node.js von 8.9 auf 10.2.0 mit sich bringt. Alle Erweiterungen laufen nun auf dieser neueren Version von Node.js. Schauen Sie sich die Node v10.0.0 Deprecations für eine Liste der Deprecations in Node.js 10 an.

Aktualisierte Octicons

Wir haben unsere Version von Octicons auf 8.3.0 aktualisiert und unterstützen nun die folgenden Symbole:

Octicons update

  • $(arrow-both)
  • $(bold)
  • $(color-mode)
  • $(eye-closed)
  • $(fold-down)
  • $(fold-up)
  • $(grabber)
  • $(italic)
  • $(kebab-horizontal)
  • $(kebab-vertical)
  • $(note)
  • $(organization-filled)
  • $(person-filled)
  • $(project)
  • $(request-changes)
  • $(screen-full)
  • $(screen-normal)
  • $(smiley)
  • $(tasklist)
  • $(text-size)
  • $(unverified)
  • $(verified)

Sie können unsere Dokumentation lesen, um eine vollständige Liste der unterstützten Symbole anzuzeigen. Eine vollständige Liste der Änderungen finden Sie in der Octicon-Changelog.

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.

SignatureHelpContext.activeSignatureHelp

Das vorgeschlagene Feld SignatureHelpContext.activeSignatureHelp verfolgt die zuvor aktive Signatur.

import * as vscode from 'vscode';

class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
    provideSignatureHelp(
        document: vscode.TextDocument,
        position: vscode.Position,
        token: vscode.CancellationToken,
        context: vscode.SignatureHelpContext
    ): vscode.ProviderResult<vscode.SignatureHelp> {
        // The active signature help when this provider was triggered or undefined if
        // no signature help was active.
        console.log(context.activeSignatureHelp);

        ...
    }
}

Anbieter können dies verwenden, um zu verfolgen, welche Überladung ausgewählt wurde, bevor der Signaturhilfeanbieter erneut ausgelöst wurde.

Auto Fix und CodeAction.isPreferred

Die Code Action API treibt VS Codes Quick Fixes (die Glühbirnen, die Sie im Editor sehen) an. Obwohl es für einen bestimmten Fehler viele Quick Fixes geben kann, ist oft eine dieser Quick Fixes die vernünftigste Lösung für das Problem. Beispielsweise ist die Korrektur eines Rechtschreibfehlers normalerweise die wahrscheinlichere Lösung als das Generieren neuer Felder.

The fix spelling Quick Fix is usually more reasonable than generating properties

Durch die Verwendung der vorgeschlagenen API können Erweiterungen isPreferred auf einer CodeAction setzen, um anzuzeigen, dass dies die vernünftigste Lösung für das zugrunde liegende Problem ist. Bevorzugte Korrekturen können automatisch mit dem Befehl Auto Fix (⌥⌘. (Windows, Linux Umschalt+Alt+.)) angewendet werden.

After applying an auto fix to the error

Bevorzugte schnelle Korrekturen sollten im Allgemeinen

  • Den zugrunde liegenden Fehler korrekt beheben (und ihn nicht unterdrücken).
  • Eine vernünftige Lösung für den Fehler sein.
  • Nicht unerwartet umfangreiche Operationen durchführen.

Refactoring-Code-Aktionen können ebenfalls als bevorzugt markiert werden, um anzuzeigen, dass sie das vernünftigste Refactoring darstellen. Zum Beispiel, während mehrere Konstante extrahieren-Refactorings verfügbar sein können, möchte der Benutzer oft nur in die nächste lokale Variable extrahieren. Wenn diese Refactoring-Code-Aktion als isPreferred markiert ist, können Benutzer ihr ein einzelnes Tastenkürzel zuweisen.

{
  "key": "ctrl+shift+r ctrl+e",
  "command": "editor.action.codeAction",
  "args": {
    "kind": "refactor.extract.constant",
    "preferred": true
  }
}

Fix All Source Actions

Die vorgeschlagene source.fixAll CodeActionKind etabliert eine Konvention für Erweiterungen, die Fehler in einer Datei automatisch beheben können. Diese neue Source Action Art ähnelt Organize imports und erleichtert das Konfigurieren von Tastenkombinationen für "Fix All"-Aktionen oder das Aktivieren von Auto-Fix beim Speichern.

// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.organizeImports": true,
}

Die TSLint-Erweiterung verwendet bereits diese vorgeschlagene Source Code Action Art, um "Fix All" und "Auto Fix on Save" zu implementieren.

Debug Adapter Protocol

Vorgeschlagener Debug Adapter Protocol für Daten-Breakpoints

Als Nachfolgeschritt des laufenden Arbeit an Daten-Breakpoints (auch bekannt als "Watchpoints") haben wir einige Fortschritte bei der Gestaltung des Debug Adapter Protocol für Daten-Breakpoints erzielt. Die vorgeschlagenen DAP-Änderungen befinden sich auf diesem Branch und die entsprechende TypeScript-API finden Sie in diesem Vorschlag für Daten-Breakpoints.

Wenn Sie daran interessiert sind, Daten-Breakpoints in Ihrer Debugger-Erweiterung zu unterstützen, werfen Sie bitte einen Blick auf den Vorschlag und geben Sie Feedback.

Live-Themenbearbeitung

Beim Entwickeln einer Farbschema-Erweiterung können Sie Farbänderungen live im Fenster Extension Development Host sehen.

live theme editing

Das Gleiche funktioniert auch für Dateisymbol-Themen.

Technik

Update auf Electron 3.0 und Erkundung von Electron 4.0

In diesem Meilenstein haben wir die Erkundung des Bündelns von Electron 3 in VS Code abgeschlossen, was die erste Auslieferung dieser Electron-Version im stabilen Kanal darstellt. Dies ist eine wichtige Electron-Version und kommt mit Chrome 66 und Node.js 10.x (ein großer Sprung nach vorne im Vergleich zu unserer aktuellen Version mit Chrome 61 und Node.js 8.x).

Gleichzeitig haben wir mit der Erkundung des Updates auf Electron 4 begonnen, das wir hoffentlich bald in Insiders veröffentlichen.

Bessere Leistungsinformationen

Mit dieser Version wird die Ausgabe des Befehls Developer: Startup Performance im Editor und nicht mehr in den DevTools angezeigt. Das macht sie leichter lesbar und schneller zugänglich. Darüber hinaus wurden viele Probleme mit den Informationen behoben.

Entfernung von WinJS.Promise ✅

Als VS Code gestartet wurde, war JavaScript noch nicht so, wie es heute ist. Zum Beispiel gab es keine nativen Promises, und so entschied sich das Team, WinJS.Promise für asynchrone Arbeiten zu verwenden. Heute ist die Situation anders: native Promises sind real und WinJS.Promise ist veraltet. Mitte letzten Jahres haben wir damit begonnen, WinJS.Promise aus der Codebasis zu entfernen, was wir im Dezember abgeschlossen haben.

Strikte Null-Prüfung

Wir haben unsere Arbeit fortgesetzt, die Haupt-Codebasis von VS Code strikt auf Nullwerte zu prüfen. Dank Ihrer Hilfe konnten wir in diesem Meilenstein die strikte Null-Prüfung für eine große Anzahl von Testdateien aktivieren, was eine große Anzahl von Fehlern beseitigte.

Wir werden die Bemühungen zur strikten Nullprüfung im nächsten Meilenstein fortsetzen.

Beiträge zu Erweiterungen

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

TSLint-Unterstützung

Die neue TSLint-Erweiterung unterstützt jetzt automatische Korrekturen beim Speichern über `source.fixAll`-Codeaktionen.

"editor.codeActionsOnSave": {
    "source.fixAll": true
}

Wir empfehlen allen Benutzern der veralteten TSLint-Erweiterung (eg2.tslint), auf die neue TSLint-Erweiterung zu migrieren.

Stylus-Sprachunterstützung

Die Stylus Language Extension nutzt nun kuratierte Daten aus vscode-css-languageservice, um aktuelle Vervollständigungen mit Statuswarnungen und Syntaxdokumentation anzubieten.

Stylus completion

GitHub Pull Requests

In diesem Meilenstein haben wir weiter an Verbesserungen der GitHub Pull Requests-Erweiterung gearbeitet.

Hier sind einige der neuen Funktionen:

  • GitHub Review-Unterstützung. Sie können jetzt Kommentare zu einem Review gruppieren, anstatt sie einzeln hinzuzufügen.
  • Die Erweiterung funktioniert nahtlos, wenn Sie einer Live Share-Sitzung beitreten, wenn der Arbeitsbereich ein GitHub-Repository ist.
  • Wir haben GraphQL schrittweise in das Projekt integriert, sodass die Beschreibungsansicht nun detailliertere Informationen zu einem Pull-Request liefert und die Gesamtleistung der Erweiterung verbessert wird.
  • Sie können nun Merge-Commit erstellen, Squash and Merge oder Rebase and Merge wählen, wenn Sie einen Pull-Request zusammenführen.
  • Leistungsverbesserungen. Wir haben sowohl die API-Aufrufe an GitHub als auch die Git-Operationen reduziert, wenn Sie Pull-Requests und Dateiänderungen durchsuchen und einen Pull-Request auschecken. Dies macht die Erweiterung reaktionsschneller, insbesondere unter Windows.

Die vollständigen Release Notes für die Erweiterung finden Sie unter vscode-pull-request-github releases.

Neue Dokumentation

Python Jupyter Notebooks

Ein neues Thema Arbeiten mit Jupyter Notebooks beschreibt, wie Sie Jupyter Notebooks innerhalb von VS Code öffnen, debuggen und exportieren.

Verbesserte Dokumentation für JavaScript und TypeScript

Wir haben unsere JavaScript- und TypeScript-Artikel aktualisiert, um sicherzustellen, dass sie auf dem neuesten Stand sind und hilfreichere Informationen bieten.

Die Seiten für JavaScript und TypeScript bieten nun einen Überblick über die Features, die VS Code für diese Sprachen bietet. Detailliertere Erklärungen dieser Features und Tutorials wurden in den entsprechenden Abschnitten unter Node.js / JavaScript und TypeScript im Inhaltsverzeichnis verschoben.

Aktualisierte API-Dokumentation für Erweiterungen

Für Ersteller von Erweiterungen wurde die API-Dokumentation von VS Code überarbeitet und in ein eigenes Inhaltsverzeichnis verschoben.

API TOC on VS Code website

Hier finden Sie Artikel, um

Bemerkenswerte Fehlerbehebungen

  • 7570: VS Code wird nicht offline geöffnet
  • 14372: Erweiterungen: Deaktivierungsstatus muss über Fenster hinweg kommuniziert werden
  • 34396: Hohe CPU-Auslastung auf Single-CPU-VM
  • 58167: Terminal- und Minimap-Texturen werden nach dem Fortsetzen des Betriebssystems beschädigt
  • 59794: Terminal-Screenreader-Unterstützung funktioniert nicht, wenn `editor.accessibilitySupport` auf 'auto' eingestellt ist
  • 61649: Debugging kann `onError` von undefined nicht lesen
  • 63832: Kann nicht an LSP-Server angehängt werden, wenn eine Erweiterung gedebuggt wird
  • 64948: GDB C/C++-Debugger startet nicht mit Fehlermeldung
  • 65697: `stopOnEntry` mit `autoAttachChildProcesses` wird bei Node.js-geforkten Prozessen nicht beachtet
  • 66302: Strg + L sollte standardmäßig zum Löschen der REPL gebunden sein
  • 66681: Befehle "Select for compare" und "Compare with selected" werden für virtuelle Dokumente nicht angezeigt

Diese Veröffentlichung enthält auch ein Sicherheitsupdate für das Microsoft Security Response Center CVE-2019-0728.

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 unserer Issue-Verfolgung. Bitte sehen Sie sich unsere Community Issue Tracking-Seite an, wenn Sie uns bei der Verwaltung eingehender Probleme helfen möchten.

Beiträge zu vscode

Beiträge zu vscode-eslint

Beiträge zu language-server-protocol

Beiträge zu vscode-languageserver-node

Beiträge zu debug-adapter-protocol

Beiträge zu vscode-vsce

Beiträge zu vscode-json-languageservice

  • @abc-55: Fehler behoben, wenn Kommentare erlaubt sind, aber nachgestellte Kommas nicht PR #35

Beiträge zu vscode-css-languageservice

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-generator-code

Beiträge zu vscode-recipes

Beiträge zu localization

Es gibt über 600 Cloud + KI-Lokalisierungs-Community-Mitglieder, die die Microsoft Localization Community Platform (MLCP) nutzen, davon etwa 100 aktive Mitwirkende an Visual Studio Code.

Wir freuen uns über Ihre Beiträge, sei es durch die Bereitstellung neuer Übersetzungen, die Abstimmung über Übersetzungen oder die Vorschläge zur Prozessverbesserung.

Hier ist eine Momentaufnahme der Mitwirkenden. Details zum Projekt, einschließlich der Liste der Mitwirkenden, finden Sie auf der Projektseite unter https://aka.ms/vscodeloc.

  • Bulgarisch: Любомир Василев.
  • Tschechisch: Samuel Tulach.
  • Dänisch: Johan Fagerberg.
  • Niederländisch: Jos Verlinde, Eric Algera.
  • Finnisch: Petri Niinimäki, Valtteri Vatanen.
  • Französisch: Mohamed Sahbi, Thomas Gouthière.
  • Deutsch: Frank Lindecke, Hans Meiser, Jakob von der Haar, Sebastian Seidl.
  • Hebräisch: Kyle Orin.
  • Hindi: Satish Yadav, Nirav Adatiya, Shaswat Rungta, Dhanvi Kapila.
  • Ungarisch: Péter Nagy.
  • Chinesisch (vereinfacht): 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭.
  • Indonesisch: Azhe Kun.
  • Italienisch: Michael Longo.
  • Japanisch: nh, Masakazu TENMYO, 裕子 知念.
  • Koreanisch: SeungJin Jeong.
  • Norwegisch: Stephan Eriksen.
  • Polnisch: grzegorz m, Jakub Jedryszek.
  • Portugiesisch (Brasilien): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni.
  • Portugiesisch (Portugal): Vitor Barbosa.
  • Spanisch: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta.
  • Tamil: Mani M.
  • Türkisch: Muhammed Emin TİFTİKÇİ.
  • Ukrainisch: Did Kokos.
  • Vietnamesisch: Việt Anh Nguyễn.
© . This site is unofficial and not affiliated with Microsoft.