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

Februar 2019 (Version 1.32)

Updates: In jedem Update behobene Probleme - 1.32.3 - 1.32.2 - 1.32.1

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


Willkommen zur Veröffentlichung von Visual Studio Code im Februar 2019. Diese Version enthält eine Reihe wichtiger Updates, 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 Version 1.32 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 - Tastaturnavigationssteuerung, Outline-Ansicht und Breadcrumbs verwenden Baum-Widgets.
  • Editor - "Fix All"-Quellaktion ermöglicht das Beheben beim Speichern, verbesserte Spaltenauswahl.
  • Sprachen - Kein Neuladen erforderlich beim Installieren von TypeScript- und Markdown-Erweiterungen.
  • Erweiterungsentwicklung - Hinzufügen von Befehlen zur Debug-Symbolleiste, Verfolgen der zuletzt ausgewählten Methodensignatur.

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

Vorschau und Anwenden neuer Schemata

Sie können jetzt Farb- und Datei-Icon-Schemata direkt nach der Installation einer Erweiterung, die diese beisteuert, in der Vorschau anzeigen und anwenden.

Applying Theme

Editor für Tastenkombinationen

Sie können jetzt die `when`-Klausel einer Tastenkombination im Tastenkombinationen-Editor bearbeiten.

Changing When expression

Wir haben den Link zum Öffnen Ihrer `keybindings.json`-Datei aus dem Tastenkombinationen-Editor entfernt und stattdessen die Schaltfläche **{}** rechts in der Titelleiste des Editors eingeführt.

Wenn Sie Ihre `keybindings.json`-Datei direkt bearbeiten, werden die Standard-Tastenkombinationen nicht mehr links angezeigt. Wenn Sie **Standard-Tastenkombinationen** anzeigen möchten, können Sie die Einstellung **Workbench > Settings: Open Default Keybindings** (`workbench.settings.openDefaultKeybindings`) auf `true` setzen.

Automatische Tastaturnavigations-Einstellung

Eine neue Einstellung **List: Automatic Keyboard Navigation** steuert, ob Listen und Bäume lexikografische Tastendrücke zur Navigation und Filterung von Elementen erfassen. Wenn deaktiviert, wird die Tastaturnavigation modal und der Befehl `list.toggleKeyboardNavigation` schaltet seinen Zustand um. Sie können diesem Befehl eine bestimmte Tastenkombination zuweisen. Zum Beispiel könnten Sie sie auf `/` setzen und erst nach dem Drücken von `/` werden nachfolgende Tastendrücke Elemente in Listen/Bäumen filtern. Diese Einstellung ist standardmäßig aktiviert.

Unten ist die Tastenkombination, um die Tastaturnavigation mit `/` für den Datei-Explorer umzuschalten

{
  "key": "/",
  "command": "list.toggleKeyboardNavigation",
  "when": "filesExplorerFocus"
}

Standard-Titelleistenstil unter Linux

Nachdem wir Feedback von Benutzern erhalten haben, haben wir uns entschieden, unsere Änderung der Standardeinstellung `window.titleBarStyle` von `custom` zurück auf `native` unter Linux zurückzunehmen. Wir empfehlen weiterhin die benutzerdefinierte Titelleiste für diejenigen, die eine bessere Barrierefreiheitsunterstützung benötigen. Weitere Informationen zu dieser Änderung finden Sie auf unserer Seite zur Linux-Einrichtung.

Neues Baum-Widget für Outline und Breadcrumbs

Die Outline-Ansicht für Dokumentensymbole und der Breadcrumb-Picker haben das neue Baum-Widget übernommen. Die neue Implementierung macht sie schneller und bietet eine bessere Filterunterstützung zusammen mit anderen neuen Verbesserungen des Baum-Widgets.

Editor

Verbesserungen bei Hovern und Peek-Funktionen für Probleme

In dieser Version wurde eine Befehlsleiste mit den Aktionen **Quick Fix** und **Peek Problem** zum Problems-Hover hinzugefügt. Die Aktion **Quick Fix** wendet Quick Fixes aus dem Hover an und die Aktion **Peek Problem** öffnet die Peek-Ansicht im Editor.

Problem Hover

Von einer Problems-Peek-Ansicht aus können Sie nun zum vorherigen und nächsten Fehler/zur vorherigen und nächsten Warnung navigieren.

Problem Peek

Wir haben auch das Erscheinungsbild der Hover- und Problems-Peek-Ansichten verbessert. Hover mit Problemen und Codeblöcken erhalten ausreichend Platz, um ihren Inhalt anzuzeigen.

Hover

Automatische Korrektur und bevorzugte Code-Aktionen

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

Erweiterungen können jetzt eine Code-Aktion als "bevorzugt" markieren, um anzuzeigen, dass sie die vernünftigste Lösung für das zugrunde liegende Problem ist. Wenn eine bevorzugte Lösung verfügbar ist, wird der Glühbirne ein blaues Abzeichen hinzugefügt. Bevorzugte Lösungen können mit dem Befehl **Auto Fix** automatisch angewendet werden (⌥⌘. (Windows, Linux Shift+Alt+.)).

Preferred fixes are indicated with a blue badge on the lightbulb

Bevorzugte Quick Fixes sollten im Allgemeinen

  • Den zugrunde liegenden Fehler korrekt beheben (und nicht unterdrücken).
  • Eine vernünftige Lösung für den Fehler sein.
  • Keine unerwarteten, umfangreichen Operationen durchführen.

Refactoring-Code-Aktionen können ebenfalls als bevorzugt markiert werden, um anzuzeigen, dass sie das vernünftigste Refactoring sind. Zum Beispiel, während mehrere **Extract constant**-Refactorings verfügbar sein können, möchte der Benutzer normalerweise zum nächstgelegenen lokalen Wert extrahieren. Wenn diese Refactoring-Code-Aktion als `isPreferred` markiert ist, können Benutzer eine einzige Tastenkombination dafür einrichten.

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

Fix All Source Actions

Die neue `CodeActionKind` `source.fixAll` 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 die Konfiguration von Tastenkombinationen für "Fix All"-Aktionen oder die Aktivierung von "Auto Fix on Save".

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

Die TSLint-Erweiterung verwendet bereits die `source.fixAll` Code Action Art, um "Fix All" und "Auto Fix on Save" zu implementieren.

Änderung der Standard-Tastenkombination für `expandLineSelection`

Der Befehl `expandLineSelection` ist jetzt standardmäßig mit `Ctrl+L` (`Cmd+L` auf macOS) und nicht mit `Ctrl+I` (`Cmd+I`) verknüpft.

Verbesserte Spaltenauswahl

Wenn die Einstellung **Multi Cursor Modifier** auf die Verwendung von `Ctrl` (`Cmd` auf macOS) konfiguriert ist (`"editor.multiCursorModifier": "ctrlCmd"`), und der `Alt`-Modifikator somit nur für "Go to Definition" verwendet wird, ist es jetzt möglich, den `Alt`-Modifikator zu drücken, während eine Auswahl im Editor gezogen wird, um zwischen einer regulären Auswahl oder einer Spaltenauswahl zu wechseln.

Im folgenden Video beginnt die Auswahl als reguläre Auswahl, dann wird `Alt` gedrückt und gehalten, bis die Maustaste losgelassen wird.

Column Selection with the Alt key

Sprachen

TypeScript 3.3.3

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

Kein Neuladen erforderlich beim Installieren von TypeScript-Erweiterungen

Bei der letzten Iteration wurde VS Code so geändert, dass nach der Installation der überwiegenden Mehrheit der Erweiterungen kein Neuladen mehr erforderlich ist. VS Code unterstützt nun auch das dynamische Laden von TypeScript-Plugin-Erweiterungen. Wenn Sie eine neue TypeScript-Erweiterung installieren, wie z. B. TSLint, wird die Erweiterung automatisch aktiviert, ohne dass ein Neuladen erforderlich ist.

Kein Neuladen erforderlich beim Installieren von Markdown-Erweiterungen

Zusätzlich müssen Sie VS Code nicht mehr neu laden, nachdem Sie eine Erweiterung wie GitHub Markdown Preview installiert haben. Alle aktiven Markdown-Vorschauen werden automatisch aktualisiert, sobald eine Markdown-Erweiterung installiert ist.

Verbesserte HTML-IntelliSense für ARIA-Attribute

Dank Daten, die von W3C und MDN abgerufen wurden, zeigt VS Code jetzt Beschreibungen für ARIA-Attribute (Accessible Rich Internet Applications) und DOM-Ereignisse an.

HTML IntelliSense for ARIA and Event attributes

Razor-Unterstützung in der HTML-Erweiterung entfernt

Die Legacy-Unterstützung für ASP.NET Razor wurde entfernt. Wir empfehlen jetzt die C#-Erweiterung für die Bearbeitung von Razor-Dateien.

Debugging

Schriftartkonfiguration für die Debug-Konsole

Es ist jetzt möglich, die Schriftgröße, Schriftart und Zeilenhöhe in der Debug-Konsole mit folgenden Einstellungen zu konfigurieren: `debug.console.fontSize`, `debug.console.fontFamily` und `debug.console.lineHeight`.

Debug Console font

Zeilenumbruch in der Debug-Konsole

Dank der Übernahme des neuen Baum-Widgets unterstützt die Debug-Konsole jetzt automatischen Zeilenumbruch für alle ihre Elemente, sogar für Attribute innerhalb von Objekten.

Debug Console wrap

Integriertes Terminal

Variablenunterstützung im `send sequence`-Befehl

Es ist jetzt möglich, Variablen mit dem Befehl `workbench.action.terminal.sendSequence` zu verwenden, zum Beispiel

{
  "key": "ctrl+shift+t",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": ". ${file}" }
}

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.

Automatisches Öffnen einer URI beim Debuggen eines Serverprogramms

Die Entwicklung eines Webprogramms erfordert typischerweise das Öffnen einer bestimmten URL in einem Webbrowser, um den Servercode im Debugger zu treffen. In diesem Meilenstein haben wir einen ersten Entwurf eines neuen VS Code-Features hinzugefügt, das versucht, diesen Prozess flexibel zu automatisieren.

Hier ist ein Beispiel für eine einfache Node.js Express-Anwendung

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});

Diese Anwendung installiert zuerst einen "Hello World"-Handler für die URL "/" und beginnt dann, auf HTTP-Verbindungen auf Port 3000 zu lauschen. Der Port wird in der Debug-Konsole angekündigt und typischerweise würde der Entwickler nun `https://:3000` in seine Browseranwendung eingeben.

Das neue Feature ermöglicht es, eine strukturierte Eigenschaft `serverReadyAction` zu jeder Startkonfiguration hinzuzufügen und eine auszuführende "Aktion" auszuwählen.

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "https://:%s",
    "action": "openExternally"
  }
}

Hier beschreibt die Eigenschaft `pattern` den regulären Ausdruck zum Abgleichen der vom Programm ausgegebenen Zeichenkette, die den Port ankündigt. Das Muster für die Portnummer wird in Klammern gesetzt, damit es als Erfassungsgruppe eines regulären Ausdrucks verfügbar ist. In diesem Beispiel extrahieren wir nur die Portnummer, aber es ist auch möglich, eine vollständige URI zu extrahieren.

Die Eigenschaft `uriFormat` beschreibt, wie die Portnummer in eine URI umgewandelt wird. Das erste `%s` wird durch die erste Erfassungsgruppe des übereinstimmenden Musters ersetzt.

Die resultierende URI wird dann außerhalb von VS Code ("extern") mit der Standardanwendung geöffnet, die für das Schema der URI konfiguriert ist.

Alternativ kann die `action` auf `debugWithChrome` gesetzt werden. In diesem Fall startet VS Code eine Chrome-Debug-Sitzung für die URI (was voraussetzt, dass die Debugger for Chrome-Erweiterung installiert ist). In diesem Modus kann eine Eigenschaft `webRoot` hinzugefügt werden, die an die Chrome-Debug-Sitzung übergeben wird.

Um die Dinge etwas zu vereinfachen, sind die meisten Eigenschaften optional und wir verwenden die folgenden Fallback-Werte:

  • pattern: `"listening on.* (https?://\\S+|[0-9]+)"`, was die üblichen Meldungen "listening on port 3000" oder "Now listening on: https://:5001" abgleicht.
  • uriFormat: `"https://:%s"`
  • webRoot: `"${workspaceFolder}"`

Und hier die Funktion in Aktion

Server ready feature in action

Bitte beachten Sie, dass in der Vorschauversion des Features

  • Das Muster wird nur in der Debug-Konsole abgeglichen. Es funktioniert noch nicht, wenn das Debug-Ziel im integrierten Terminal gestartet wird (und es wird niemals in externen Terminals funktionieren).
  • Das Feature warnt nicht, wenn `debugWithChrome` konfiguriert ist, aber die **Debugger for Chrome**-Erweiterung nicht installiert ist.
  • Es ist noch nicht möglich, andere browserbasierte Debugger zu verwenden.

Erweiterungsentwicklung

Befehle zur Debug-Symbolleiste beitragen

Jetzt können Erweiterungen Befehle zur Debug-Symbolleiste beitragen.

Hier ist ein Beispiel aus der `package.json` einer Erweiterung

"contributes": {
  "commands": [
    {
      "command": "dart.hotReload",
      "title": "Hot Reload",
      "icon": {
        "dark": "./media/hot_reload_inverse.svg",
        "light": "./media/hot_reload.svg"
      }
    }
  ],
  "menus": {
    "debug/toolbar": [
      {
        "command": "dart.hotReload",
        "when": "debugType == dart",
        "group": "dart"
      }
    ]
  }
}

Die Erweiterung fügt einen "Hot Reload"-Button hinzu, der rechts in der Debug-Symbolleiste zu sehen ist.

Add to debug toolbar

SignatureHelpContext.activeSignatureHelp

Das Objekt `SignatureHelpContext` hat jetzt ein Feld `activeSignatureHelp`, das die zuvor aktive Signatur verfolgt.

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 vom Benutzer ausgewählt wurde, bevor der Signaturhilfeanbieter erneut ausgelöst wurde.

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.

workspace.registerResourceLabelFormatter

export interface ResourceLabelFormatter {
  scheme: string;
  authority?: string;
  formatting: ResourceLabelFormatting;
}

export interface ResourceLabelFormatting {
  label: string; // myLabel:/${path}
  separator: '/' | '\\' | '';
  tildify?: boolean;
  normalizeDriveLetter?: boolean;
  workspaceSuffix?: string;
  authorityPrefix?: string;
}

export namespace workspace {
  export function registerResourceLabelFormatter(
    formatter: ResourceLabelFormatter
  ): Disposable;
}

Erweiterungen können `registerResourceLabelFormatter` verwenden, um dynamische Ressourcenbezeichnungsformatierer beizutragen, die festlegen, wie URIs überall in der Workbench angezeigt werden sollen.

Technik

Linux 32-Bit-Unterstützung endet bald

VS Code verwendet Electron als Framework, um auf mehreren Plattformen zu laufen. Wir verwenden derzeit Electron Version 3.x, die die letzte Version sein wird, die Linux auf 32-Bit-Architekturen unterstützt. Da wir planen, bald auf Electron 4.x umzusteigen (in 1-2 Monaten), bedeutet dies, dass VS Code nicht mehr unter Linux 32-Bit läuft. Bitte aktualisieren Sie Ihre VS Code-Version auf die 64-Bit-Version. Alle Ihre Einstellungen und Erweiterungen funktionieren wie zuvor, ohne dass etwas migriert werden muss. Sie können den zugehörigen Blogbeitrag von Electron für weitere Informationen lesen.

Strict Null Progress

Wir haben gute Fortschritte bei der striken Nullprüfung des Haupt-VS-Code-Codes gemacht. In dieser Iteration haben wir die Anzahl der verbleibenden strikten Nullfehler halbiert und über 2000 Fehler behoben. Wir haben noch etwa 1800 strikte Nullfehler übrig, und viele der verbleibenden Fehler sind knifflig, aber das Ende ist in Sicht.

Kompilierung zu ES6

VS Code wird in TypeScript geschrieben und TypeScript wird in JavaScript kompiliert. TypeScript kann verschiedene JavaScript-Versionen anvisieren, und mit dieser Version zielen wir auf ES6-JavaScript ab. ES6 ist viel näher an TypeScript und erzeugt weniger Code, was zu schnelleren Ladezeiten führt.

Hinweis: Dies bedeutet, dass unsere JavaScript-Ausgabe Klassen verwendet, wie sie in JavaScript definiert sind. Wir haben ein Dienstprogramm, das es Funktionen immer noch erlaubt, von diesen Klassen zu "erben", und wir haben einen Tracking-Eintrag für Erweiterungsautoren erstellt, um jetzt auch ES6 auszugeben. Alles sollte immer noch wie zuvor funktionieren, aber wir ermutigen alle, auf den ES6-Zug aufzuspringen.

Beiträge zu Erweiterungen

GitHub Pull Requests

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

Hier sind einige der neuen Funktionen:

  • Prüfen und Zuweisen von Rezensenten und Labels auf der Pull Request-Beschreibungsseite.
  • GitHub Pull Request-Baumansichten werden jetzt in einem eigenen Ansichtscontainer angezeigt. Sie können sie auch in der Quellcodeverwaltungsansicht anzeigen, indem Sie `githubPullRequests.showInSCM` ändern.
  • Reaktionen auf Kommentare anzeigen und ändern.

Vetur

Die Vetur-Erweiterung bietet jetzt IntelliSense (intelligente Vervollständigungen) für Vue.js Interpolationen.

Die Vervollständigungselemente stammen aus Vue.js `props`, `data`, `computed` und `methods` API-Aufrufen. Der Quellcode wird zusammen mit jeder JSDoc-Dokumentation als Beschreibungen der Vervollständigungselemente verwendet.

Bei der Verwendung von Kindkomponenten von Elternkomponenten bietet Vetur auch IntelliSense für die `props` der Kindkomponente.

Vetur IntelliSense for Vue templates

Weitere bemerkenswerte Features sind:

  • Verwendung von Prettier als Option für den `