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

September 2018 (Version 1.28)

Update 1.28.2: Das Update behebt diese Issues.

Update 1.28.1: Das Update behebt diese Issues.

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


Willkommen zur September 2018-Veröffentlichung von Visual Studio Code. Wie im September-Iterationsplan angekündigt, haben wir uns auf die Bereinigung unserer GitHub Issues und Pull Requests konzentriert. In allen unseren VS Code-Repositories haben wir 3918 Issues geschlossen (entweder triagiert oder behoben). Während wir Issues schlossen, haben Sie 2187 neue Issues erstellt. Dies führte zu einer Netto-Reduzierung von 1731 Issues. Das Haupt- vscode-Repository hat jetzt 2472 offene Feature-Anfragen und 625 offene Bugs. Darüber hinaus haben wir 212 Pull Requests geschlossen.

Es war großartig zu sehen, wie sehr Ihnen unser Fortschritt am Herzen liegt. Benjamin Lannon hat eine persönliche Website mit einem Live-Tracker der Issue-Nummern in unserem Haupt-Repository veröffentlicht. Es zeigt schön den Fortschritt, den wir seit dem 11. September gemacht haben.

Burn down of issues

Es zeigt auch, was passiert, sobald wir aufhören, uns um die Reduzierung von Issues zu kümmern. Unten sehen Sie die letzten drei Tage der letzten Woche, während wir uns auf diese Veröffentlichung vorbereitet haben. Wie Sie sehen können, wird es in Zukunft weitere Iterationen zur Bereinigung von Issues geben.

Increase of issues

Während dieser Bereinigungs-Meilenstein haben wir mehrere Feature-Anfragen bearbeitet und Community- Pull Requests führten ebenfalls zu neuen Features. Hier sind einige der Highlights der Veröffentlichung:

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.28-Veröffentlichung von Cloud Developer Advocate Brian Clark ansehen.

Insiders: Möchten Sie neue Funktionen so schnell wie möglich sehen? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.

Workbench

Benutzerdefinierte Titelleiste und Menüleiste unter Windows standardmäßig

Die benutzerdefinierte Titelleiste und die thematisierbaren Menüs, die in früheren Release Notes beschrieben wurden, sind jetzt unter Windows standardmäßig aktiviert. Die Einstellung "window.titleBarStyle" wurde im letzten Monat unter Windows in Insiders auf "custom" gesetzt, und wir sind jetzt bereit, dies zur Standarderfahrung zu machen.

Custom title and menu bar with a dark theme on Windows

Dateisymbole pro Dateityp

Unter macOS und Windows registriert sich VS Code als Standardeditor für bekannte Dateitypen. VS Code liefert jetzt benutzerdefinierte Symbole für einige der gängigen VS Code-Dateitypen mit. Diese Symbole werden im OS-Explorer angezeigt, wenn die Größe der Symbole auf mittel bis groß eingestellt ist. Für kleine Symbolgrößen haben wir uns entschieden, das VS Code-Logo als Symbol beizubehalten.

File Icons

Projektweite Snippets

Snippets können nun auf ein Projekt beschränkt und mit Ihrem Team geteilt werden. Verwenden Sie einfach den Befehl Preferences: Configure User Snippets oder erstellen Sie eine Datei *.code-snippets im Ordner .vscode. Projekt-Snippets funktionieren genauso wie andere Snippets, sie werden in IntelliSense und in der Aktion Insert Snippet angezeigt, wo sie nun ihre eigene Kategorie haben.

Project Level Snippet

Snippets unterstützen nun auch mehrere Präfixe. Wenn Sie sich nicht entscheiden können, ob Ihr Copyright-Header-Snippet mit header, stub oder copyright präfixiert werden soll, können Sie alle haben. Verwenden Sie einfach ein String-Array als prefix-Eigenschaft.

{
  "prefix": ["header", "stub", "copyright"],
  "body": "Copyright. Foo Corp 2028",
  "description": "Adds copyright...",
  "scope": "javascript,typescript"
}

Lange Zeit hat VS Code symbolische Links zu Ordnern aufgelöst, wenn sie geöffnet wurden. Das bedeutete, dass VS Code sie ignorierte und immer den aufgelösten Linkpfad öffnete, obwohl der symbolische Link aus einem bestimmten Grund vorhanden war. Wir haben beschlossen, dieses Verhalten zu ändern und den symbolischen Link beizubehalten.

Hinweis: Bestimmte Funktionen funktionieren mit reduzierter Funktionalität beim Öffnen eines Ordners als symbolischer Link (z. B. Debugging und Git-Integration).

Tastenkombinationen aufzeichnen und suchen

Im Editor für Tastenkombinationen (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) können Sie jetzt nach Tastenkombinationen suchen, indem Sie einfach Tastenanschläge eingeben, anstatt den Tastenamen auszusprechen (z. B. "shift"). Schalten Sie den Modus Recording Keys ein und geben Sie die Tastenanschläge ein, nach denen Sie suchen möchten.

Record Keys

Sie können auch über ⌥⌘K (Windows, Linux Alt+K) in den Modus Recording Keys wechseln. Drücken Sie die Taste Esc, um den Modus Recording Keys zu verlassen.

Umschalten der Panel-Änderungen

Wir haben beschlossen, das Verhalten unserer Befehle zum Umschalten von Panels (Terminal, Output, Problems, Debug Console) zu überdenken. Sie können Issue 19400 für den Hintergrund der Änderung verfolgen.

Das alte Verhalten war:

  • Panel wird angezeigt, wenn nicht sichtbar.
  • Panel wird ausgeblendet, wenn sichtbar.

Das neue Verhalten ist:

  • Panel wird angezeigt, wenn nicht sichtbar.
  • Panel wird ausgeblendet, wenn es den Fokus hat.
  • Panel wird fokussiert, wenn es sichtbar, aber nicht fokussiert ist.

Um das vorherige Verhalten wiederherzustellen, können Sie eine Tastenkombination konfigurieren, um das Panel zu schließen, wenn das zugehörige Panel aktiv ist.

Zum Beispiel für das Output-Panel:

{
  "key": "cmd+shift+u",
  "command": "workbench.action.closePanel",
  "when": "activePanel==workbench.panel.output"
}

Die Liste der Panel-Identifikatoren ist:

  • terminal - Integriertes Terminal
  • workbench.panel.markers - Problems panel
  • workbench.panel.output - Output panel
  • workbench.panel.repl - Debug Console panel

Relativen Pfad kopieren

Der Befehl zum Kopieren eines Dateipfads als relativer Pfad ist jetzt prominenter in den Kontextmenüs des Datei-Explorers sowie der Editor-Tabs verfügbar.

Copy Relative Path

Schließen Sie kürzlich geöffnete Dateien aus Quick Open aus

Eine neue Einstellung search.quickOpen.includeHistory ermöglicht es Ihnen zu steuern, ob kürzlich geöffnete Dateien Teil des Quick Open-Dateiauswahlfensters sein sollen. Standardmäßig erscheinen kürzlich geöffnete Dateien am Anfang der Suche und andere Dateien aus dem Arbeitsbereich darunter. Wenn Sie kürzlich geöffnete Dateien nicht mehr oben sehen möchten, können Sie diese Einstellung auf false ändern.

Papierkorb beim Löschen von Dateien deaktivieren

Wenn Sie Probleme beim Löschen von Dateien aus dem Explorer haben, wenn sie in den Papierkorb des Betriebssystems verschoben werden, können Sie jetzt files.enableTrash auf false setzen, um den Papierkorb des Betriebssystems beim Löschen nie zu verwenden. Dies ändert die Aktion Löschen und die Tastenkombination im Datei-Explorer, um den Papierkorb des Betriebssystems zu umgehen und dauerhaft zu löschen. Sie sehen immer noch eine Bestätigung, bevor das Löschen stattfindet.

Aufforderung zum Öffnen der Arbeitsbereichsdatei, wenn erkannt

Beim Öffnen eines Ordners, der eine oder mehrere .code-workspace-Dateien im Stammverzeichnis enthält, zeigt VS Code jetzt eine Benachrichtigung an, die fragt, ob Sie stattdessen die Arbeitsbereichsdatei öffnen möchten. Das Öffnen einer Arbeitsbereichsdatei bietet normalerweise eine bessere Erfahrung als nur das Öffnen des Ordners. Sie können mehr über Multi-Root-Arbeitsbereiche in unserer Dokumentation erfahren.

Workspace file prompt

Keine Wiederherstellung des Ansichtszustands beim erneuten Öffnen einer Datei

VS Code hat immer den Ansichtszustand (Cursorposition, gefaltete Abschnitte usw.) einer Datei gespeichert, auch nachdem die Datei geschlossen wurde. Es gibt jetzt eine neue Einstellung workbench.editor.restoreViewState, um diesen Ansichtszustand beim Schließen einer Datei zu verwerfen. Dies ermöglicht es Ihnen, nach dem erneuten Öffnen einer Datei immer am Anfang der Datei zu beginnen.

Datei in allen Editor-Gruppen schließen

Ein neuer Befehl Close Editor in all Groups (workbench.action.closeEditorInAllGroups) ermöglicht es Ihnen, die aktuell aktive Datei in allen Editor-Gruppen zu schließen.

Problems-Panel

Fehlercodes anzeigen

Das Problems-Panel zeigt nun den Fehlercode eines Problems an, falls vorhanden.

Problems panel shows error codes

Verbesserte Tastaturnavigation

Das Problems-Panel wurde tastenfreundlicher gestaltet.

  • Sie können mit der Eingabe beginnen, um zu filtern, wenn das Panel den Fokus hat.
  • Sie können ⌘F (Windows, Linux Ctrl+F) verwenden, um dem Filterfeld den Fokus zu geben, und ⌘↓ (Windows, Linux Ctrl+Down), um dem Problem-Listenfeld vom Filterfeld aus den Fokus zu geben.

Ausgabekanal für Telemetrieereignisse

In der Juli-Version haben wir eine Funktion hinzugefügt, bei der alle von VS Code gesendeten Telemetrieereignisse auch in einer lokalen Datei protokolliert werden, wenn Sie den Protokollierungsgrad auf Trace einstellen, indem Sie den Befehl Developer: Set Log Level... verwenden. Sie können den Inhalt dieser Datei nun im Kanal Log (Telemetry) des Output-Panels anzeigen. Wie bisher können Sie die Datei direkt mit dem Befehl Developer: Open Log File... anzeigen.

Fokus auf eine benutzerdefinierte Ansicht legen

Sie können nun einen Befehl verwenden, um einer benutzerdefinierten Ansicht den Fokus zu geben. Für jede benutzerdefinierte Ansicht gibt es einen separaten Befehl.

Custom view focus commands

Linux URL-Handling

Einst eine Funktion, die auf Windows und macOS beschränkt war, jetzt können Sie VS Code-URLs auch unter Linux öffnen! Diese URLs sind nützlich für viele verschiedene Funktionen, wie z. B. die automatische Installation von Erweiterungen, zum Beispiel vscode-insiders:extension/vscodevim.vim.

Editor

Tab-Vervollständigung

Die Tab-Vervollständigung im Editor kann jetzt alle Arten von Vorschlägen vervollständigen. Nach dem Setzen von "editor.tabCompletion": "on" vervollständigt das Drücken von Tab jeden Präfix, nicht nur Snippets. Auch das Drücken von Tab fügt den nächsten Vorschlag ein und ⇧Tab (Windows, Linux Shift+Tab) fügt den vorherigen Vorschlag ein.

Tab completion

Zur letzten Bearbeitungsposition navigieren

Ein neuer Befehl Go to Last Edit Location (workbench.action.navigateToLastEditLocation) wurde hinzugefügt, um schnell zur letzten bearbeiteten Stelle in einer Datei zu navigieren. Die Standard-Tastenkombination ist ⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q).

Speichern ohne Formatierung

Der neue Befehl Save without Formatting (workbench.action.files.saveWithoutFormatting) kann verwendet werden, um eine Datei zu speichern, ohne einen der Save-Teilnehmer (z. B. Formatierer, Entfernen von Leerzeichen am Ende, letzte neue Zeile) auszulösen. Die Standard-Tastenkombination ist ⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S). Dies ist nützlich, wenn Sie Dateien außerhalb Ihrer normalen Projekte bearbeiten, die möglicherweise andere Formatierungskonventionen haben.

IntelliSense Lokalitätsbonus

Vorschläge können jetzt basierend auf ihrer Entfernung zum Cursor sortiert werden. Setzen Sie "editor.suggest.localityBonus": true und Sie werden sehen, dass beispielsweise Funktionsparameter am Anfang der IntelliSense-Liste angezeigt werden.

Locality bonus

Emmet

Wir haben in dieser Iteration einige Verbesserungen an den Emmet-Funktionen vorgenommen.

  • Wenn Sie Emmet in JavaScript-Dateien aktiviert haben, können Sie jetzt Emmet-Abkürzungsexpansionen innerhalb der <script>-Tags in einer HTML-Datei haben.
  • Die Funktion Emmet: Wrap with Abbreviation ist nicht mehr auf Dateien mit der Erweiterung .html beschränkt.
  • Die Funktion Emmet: Balance (inward) funktioniert nun auch am aktuellen Knoten, selbst wenn keine Auswahl vorhanden ist.
  • Der Bug, bei dem CSS-Selektoren mit einem # in SCSS-Dateien fälschlicherweise als gültige Abkürzungen betrachtet wurden, ist jetzt behoben.

Quellcodeverwaltung

Ändern der SCM-Commit-Tastenkombination

Sie können jetzt die Standard-Tastenkombination zum Akzeptieren einer Commit-Nachricht in der SCM-Ansicht ändern, indem Sie den Befehl scm.acceptInput verwenden.

SCM-Statusleiste verfolgt die aktive Datei

Die SCM-Statusleisten-Beitrag unten links verfolgt nun, zu welchem Repository die aktuell aktive Datei gehört. Dies reduziert Verwirrung beim Bearbeiten von Dateien in Ihrem Multi-Folder-Arbeitsbereich.

Git-Integration

Bessere Handhabung von Löschkonflikten

Löschkonflikte wurden schon immer von VS Code erkannt. Jetzt gibt es einen besseren UI-Fluss für deren Behandlung, Sie sehen die nicht gelöschte Version beim Öffnen der Änderung und können entscheiden, was mit der Datei passiert, wenn Sie sie stagen: behalten oder löschen.

Keep or delete deletion conflicts

Konfigurieren des Schwellenwerts für Warnungen bei langen Commit-Nachrichten

Die Einstellung git.inputValidationLength ermöglicht es Ihnen jetzt zu konfigurieren, wie lang eine Commit-Nachricht sein muss, bevor eine Warnung angezeigt wird, während Sie sie bearbeiten.

Ordner nach 'git init' zum Arbeitsbereich hinzufügen

Nach der Initialisierung eines Git-Repositorys wird VS Code Sie nun fragen, ob Sie es zum aktuellen Arbeitsbereich hinzufügen möchten.

Konfigurieren von Branch-Validierungsregeln

Sie können jetzt steuern, wie die Branch-Namensvalidierung mit den leistungsstarken Einstellungen git.branchValidationRegex und git.branchWhitespaceChar funktioniert. Weitere Details finden Sie in Issue 50241.

Immer rebasen beim Ausführen von Sync

Die Einstellung git.rebaseWhenSync ermöglicht es Ihnen, den Befehl Sync so zu konfigurieren, dass er beim Ausführen immer rebase anstelle von merge verwendet.

Fortschrittsmeldung deaktivieren

Mit der Einstellung git.showProgress können Sie nun die Anzeige des Fortschritts während Git-Operationen deaktivieren.

Push --force

Es gibt Zeiten in Ihrem Entwicklungsalltag, in denen Sie einfach ein Risiko eingehen möchten. Das Ausführen von git push --force ist ein gutes Beispiel dafür! VS Code ermöglicht Ihnen nun, Commits mit Gewalt auf ein Remote-Repository zu pushen, ohne ein Terminal öffnen zu müssen. Verwenden Sie die Einstellungen git.allowForcePush, git.useForcePushWithLease und git.confirmForcePush, um dieses Verhalten zu steuern. Weitere Details finden Sie in Issue 53286.

Stash anwenden

Die folgenden git stash apply-Befehle sind nun in der globalen Befehlspalette verfügbar: Git: Apply Stash..., Git: Apply Latest Stash.

Immer sichtbare "Staged Changes"-Sektion

Sie können nun die Sektion Staged Changes in der SCM-Ansicht immer sichtbar halten, auch wenn sie leer ist, indem Sie die Einstellung git.alwaysShowStagedChangesResourceGroup verwenden.

Staged changes visible

Terminal

Tastenkombinationen zum Senden benutzerdefinierter Sequenzen definieren

Der neue Befehl workbench.action.terminal.sendSequence wurde hinzugefügt, der es Ihnen ermöglicht, benutzerdefinierte Sequenzen direkt an das aktive Terminal zu senden. Dies ermöglicht Dinge wie das Senden von Pfeiltasten, Enter usw. unter Verwendung des \u-Formats zum Senden von Unicode-Zeichen.

{
  "key": "ctrl+u",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001b[1;5D\u007f" }
}

Verbesserungen bei der Suche

Die Suche im Terminal wurde verbessert und verhält sich nun eher wie die Suche im Editor.

  • Unterstützung für Regex, Groß-/Kleinschreibung und Wortsuche.
  • Die Standard-Tastenkombinationen für "nächste/vorherige Suche" (F3, shift+F3) funktionieren nun.
  • Suchergebnisse, die über Zeilenumbrüche hinausgehen, werden zurückgegeben.

Sprachen

TypeScript 3.1

VS Code 1.28 wird mit TypeScript 3.1.1 ausgeliefert. Diese Version bringt neue Sprachfunktionen wie mappable tuple and array types, zusammen mit einer Reihe von Tooling-Verbesserungen und Fehlerbehebungen.

Importpfad umbenennen

Erkennen Sie, dass eine importierte Datei einen besseren Namen gebrauchen könnte? Jetzt können Sie die referenzierte Datei umbenennen, indem Sie einfach den Import umbenennen.

Renaming an JavaScript import to rename a file

In async-Funktion konvertieren

Der neue Vorschlag Convert to async function für JavaScript und TypeScript schreibt Funktionen, die Promise-Ketten mit .then verwenden, so um, dass async und await verwendet werden.

Converting a promise chain to an async function

Beachten Sie, dass diese Funktion erfordert, dass die Einstellung javascript.validate.enable auf true gesetzt ist.

Neue Einstellungen für JS/TS-Vorschläge

Wir haben die Einstellungsnamen für JavaScript- und TypeScript-Vorschläge bereinigt und einige zusätzliche Einstellungen hinzugefügt, die eine feinere Steuerung ermöglichen.

  • Alle vorschlagsbezogenen Einstellungen sind jetzt unter javascript.suggest.* und typescript.suggest.*.
  • typescript.useCodeSnippetOnMethodSuggest wurde in javascript.suggest.completeFunctionCalls und typescript.suggest.completeFunctionCalls umbenannt.
  • javascript.nameSuggestions wurde in javascript.suggest.names umbenannt.
  • typescript.autoImportSuggestions.enabled wurde in javascript.suggest.autoImports und typescriptscript.suggest.autoImports umbenannt.
  • Die neuen Einstellungen javascript.suggest.enabled und typescript.suggest.enabled ermöglichen es Ihnen, JS- oder TS-Vorschläge vollständig zu deaktivieren.

Semikolon als Commit-Zeichen für JS/TS

Semikolon ist nun ein Commit-Zeichen für JavaScript- und TypeScript-Vorschläge. Das bedeutet, dass Sie die aktuelle Eingabeaufforderung durch Eingabe von ; akzeptieren können. Vorhandene Commit-Zeichen umfassen auch . und (.

Sie können Commit-Zeichen deaktivieren, indem Sie "editor.acceptSuggestionOnCommitCharacter": false einstellen.

Pfadvervollständigung für HTML und CSS schließt Punktdateien aus

Dateien, die mit . beginnen, werden nun von den Ergebnissen der Pfadvervollständigung ausgeschlossen.

Besseres Markdown-Falten

Mehrzeilige Listen, umrahmte Codeblöcke und rohes HTML können nun in Markdown-Dateien gefaltet werden.

Folding Markdown code blocks and lists

In der Markdown-Vorschau öffnet das Klicken auf einen Link zu einer lokalen Datei nun die Vorschau dieser Datei.

Local file link open in preview

Dies erleichtert das Durchsuchen von Dokumentationen. Verwenden Sie die Einstellung markdown.preview.openMarkdownLinks, um zu konfigurieren, wie Links behandelt werden. Gültige Einstellungswerte sind:

  • inEditor - Öffnet lokale Markdown-Links in einem Editor.
  • inPreview - Öffnet lokale Markdown-Links in der aktuellen Vorschau. Dies ist das neue Standardverhalten.

Erweiterungen

Verbesserungen bei der Suche und Filterung

Sie können jetzt den Filter @category zusammen mit anderen Filtern für installierte Erweiterungen wie @installed, @enabled, @disabled und @outdated verwenden, um Ihre Erweiterungssuchabfrage zu erstellen. Sie könnten beispielsweise nach installierten Themes suchen, indem Sie die Abfrage @installed @category:themes verwenden, oder nach installierten Erweiterungen, die Snippets beitragen, indem Sie @installed @category:snippets verwenden.

Deaktivierte Erweiterungen werden nicht als veraltet gezählt

Das Abzeichen in der Aktivitätsleiste für die Erweiterungsansicht, das die Anzahl veralteter Erweiterungen anzeigt, schließt nun deaktivierte Erweiterungen aus. Die Absicht dieses Abzeichens war es, Sie darüber zu informieren, dass es veraltete Erweiterungen gibt, die Sie möglicherweise aktualisieren möchten. Da deaktivierte Erweiterungen derzeit nicht verwendet werden, wäre ihre Einbeziehung in die Zählung nur eine Ablenkung.

Extension Host nicht erreichbar

VS Code führt Erweiterungen in einem separaten Prozess namens Extension Host aus. Dieser Prozess kommuniziert mit dem Renderer/UI-Prozess über Nachrichtenübertragung. Wir haben eine bessere Verfolgung der Nachrichten an den Extension Host hinzugefügt und wenn eine Nachricht nicht innerhalb von 10 Sekunden bestätigt wird, zeigen wir die folgende Benachrichtigung an:

Extension Host Unresponsive

Was bedeutet das: Wahrscheinlich führt eine Erweiterung CPU-intensive Operationen durch, die dazu führen, dass der Extension Host-Prozess für mehr als 10 Sekunden blockiert.

Was zu tun ist: Eine Option ist, auf die Fertigstellung der Operation zu warten und die Benachrichtigung einfach zu ignorieren. Eine andere Option ist, zu untersuchen, welche Erweiterung die hohe CPU-Auslastung verursacht, indem Sie zur Ansicht Running Extensions gehen und den Extension Host profilieren (start profiling the Extension Host). Sie können dann direkt ein Issue gegen die problematische Erweiterung erstellen. Schließlich können Sie, wenn Sie glauben, dass die Erweiterung in eine Endlosschleife geraten ist und sich nicht zu erholen scheint, den Extension Host neu starten.

Technik

Erweiterungen und webpack

Wir haben unsere webpack-Bemühungen fortgesetzt, und die meisten gebündelten Erweiterungen sind jetzt webpack-kompiliert. Zur Auffrischung: Dies hilft, die Startzeit von Erweiterungen zu reduzieren, da weniger Dateien geladen und weniger Quellcode analysiert werden muss. Es hilft auch, die Installationszeit zu verkürzen, da weniger Dateien extrahiert und auf die Festplatte geschrieben werden müssen.

In diesem Meilenstein haben wir das Bundle um weitere 2803 Dateien bereinigt. Im Juli begannen wir mit 9000 Dateien, im August waren es noch 4650, und im September sind es 1847!

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.

Fortgesetzte Erkundung von Electron 3.0

Während dieses Meilensteins haben wir die Bündelung von Electron 3.0.0 in VS Code weiter erforscht. Dies ist eine große 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). Wir planen, das Update in naher Zukunft für unsere Insiders-Benutzer zu veröffentlichen, um zusätzliches Feedback zu sammeln. Wenn Sie helfen möchten, stellen Sie sicher, dass Sie VS Code Insiders installieren.

Sonstiges

Unschärfe auf macOS Mojave

Wenn Sie auf macOS 10.14 (Mojave) aktualisiert haben, haben Sie möglicherweise bemerkt, dass Schriftarten in VS Code unscharf aussehen, wenn Sie keinen High-DPI-Monitor verwenden.

Eine Umgehungslösung hierfür ist die Ausführung von

defaults write com.microsoft.VSCode.helper CGFontRenderingFontSmoothingDisabled -bool NO

in einem Terminal, gefolgt von einem Neustart Ihres Computers.

Beachten Sie, dass diese Änderung global für jede Anwendung gilt und nicht spezifisch für VS Code ist. Siehe Issue 51132 für die zugehörige Diskussion.

Electron-Update

In dieser Veröffentlichung haben wir von Electron 2.0.7 auf 2.0.9 aktualisiert. Das Bemerkenswerteste ist, dass dies VS Code wieder unter ArchLinux zum Laufen bringt (Issue 55934).

Erweiterungsentwicklung

Verarbeitung von URLs für deinstallierte Erweiterungen

Bereits im Juli haben wir die URI-Handler-API für Erweiterungen zur Verarbeitung systemweiter URIs veröffentlicht. Mit der neuesten Version kann VS Code sogar URIs für noch nicht installierte Erweiterungen verarbeiten. Sobald ein Benutzer eine solche URI öffnet, sucht VS Code im Marketplace nach der Erweiterung, schlägt dem Benutzer vor, sie zu installieren, und startet VS Code mit Übergabe der URI. Dies ermöglicht Erweiterungen einen reibungslosen Startablauf, der Benutzer von einer Webseite zur Ausführung der Erweiterung mit einem bestimmten Status führt.

Diagnose-Fehlercodes

Da Diagnose-Fehlercodes nun im Problems panel angezeigt werden, ist es für Erweiterungen nicht mehr notwendig, Fehlercodes zur Eigenschaft Diagnostic.message hinzuzufügen (Diagnostic.message).

Bessere Konfiguration von "When"-Klauseln

Beim Erstellen von Tastenkombinationen oder der Sichtbarkeit von Menüs werden "When"-Klauseln verwendet. In einer "When"-Klausel können Sie auf einen Konfigurationswert (Einstellung) verweisen, indem Sie ihm config. voranstellen, z. B. config.editor.tabCompletion. Bisher wurden nur boolesche Konfigurationseigenschaften unterstützt, aber mit dieser Version können Sie auch Zeichenketten- und Zahlenwerte verwenden.

Sprache eines Textdokuments ändern

Es gibt eine neue API-Funktion zum Ändern des Sprachmodus eines Dokuments: vscode.languages.setTextDocumentLanguage. Die API nimmt ein Dokument und den gewünschten Sprach- Identifier entgegen. Um zu erfahren, welche Sprach-IDs verfügbar sind, verwenden Sie vscode.languages.getLanguages.

Aktivierung durch workspaceContains

Erweiterungen können das Aktivierungsereignis workspaceContains verwenden, um aktiviert zu werden, wenn ein Arbeitsbereich geöffnet wird, der eine Datei enthält, die einem bestimmten Muster entspricht. Zum Beispiel könnte eine PHP-Erweiterung die Aktivierung anfordern, wenn ein Arbeitsbereich mit einer Datei geöffnet wird, die **/*.php entspricht. Dies ist nichts Neues, aber Benutzer haben darauf hingewiesen, dass der Suchvorgang sehr lange dauern und viel CPU verbrauchen kann, wenn ein großer Arbeitsbereich geöffnet wird.

Wir haben einige Änderungen vorgenommen, um diese Suchen weniger einschneidend zu gestalten. Erstens berücksichtigen diese Suchen nun die Einstellungen files.exclude, search.exclude und search.useIgnoreFiles des Benutzers. Mit anderen Worten, wenn ein Benutzer eine Datei in einer normalen Textsuche oder Dateisuche über Quick Open nicht finden kann, wird ein workspaceContains-Muster auf diese Datei nicht zutreffen. Dies reduziert die Anzahl der Dateien, nach denen wir für workspaceContains suchen müssen, und reduziert Fehlaktivierungen, wenn es mit einer Datei übereinstimmt, die nicht wirklich Teil des Projekts ist, z. B. eine Datei, die tief in node_modules/ vergraben ist.

Die zweite Änderung besteht darin, diese Suchen auf 7 Sekunden zu begrenzen. Wenn die Suche nach 7 Sekunden noch nicht abgeschlossen ist, beenden wir den Suchprozess und aktivieren die Erweiterung trotzdem.

Insgesamt sollten dadurch Fälle reduziert werden, in denen Ihr Laptop nach dem Öffnen eines großen Arbeitsbereichs in VS Code mysteriös warm wird.

Neue Theme-Farben

Es gibt neue Theme-Farben

  • menu.separatorBackground: Farbe eines Trennzeichens in Menüs.
  • sideBarSectionHeader.border: Farbe des Rahmens für den Abschnittskopf der Seitenleiste.
  • inputValidation.infoForeground: Vordergrundfarbe der Eingabevalidierung für Informationsschweregrad.
  • inputValidation.warningForeground: Vordergrundfarbe der Eingabevalidierung für Warnschweregrad.
  • inputValidation.errorForeground: Vordergrundfarbe der Eingabevalidierung für Fehlergravität.
  • editor.snippetTabstopHighlightBackground: Hervorhebungs-Hintergrundfarbe eines Snippet-Tabstopps.
  • editor.snippetTabstopHighlightBorder: Hervorhebungs-Rahmenfarbe eines Snippet-Tabstopps.
  • editor.snippetFinalTabstopHighlightBackground: Hervorhebungs-Hintergrundfarbe des finalen Tabstopps eines Snippets.
  • editor.snippetFinalTabstopHighlightBorder: Hervorhebungs-Rahmenfarbe des finalen Tabstopps eines Snippets.
  • activityBar.inactiveForeground: Vordergrundfarbe eines Aktivitätsleistenelements, wenn es inaktiv ist.

Debug API

resolveDebugConfiguration muss explizit null zurückgeben, um launch.json zu öffnen

Zuvor öffnete VS Code automatisch eine zugrunde liegende launch.json-Datei, wenn resolveDebugConfiguration eine Startkonfiguration zurückgab, die kein type-Attribut hatte. Nach Feedback von Erweiterungsautoren haben wir uns entschieden, Erweiterungen mehr Kontrolle über dieses Szenario zu geben.

Jetzt muss resolveDebugConfiguration explizit den Wert null zurückgeben, um zu verhindern, dass die Debug-Sitzung gestartet wird und stattdessen launch.json geöffnet wird. Die Rückgabe des Wertes undefined verhindert einfach, dass die Debug-Sitzung gestartet wird. Wie bisher startet die Rückgabe einer Konfiguration mit einem type-Attribut eine Debug-Sitzung.

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.

Debug API

neues DebugConfigurationProvider.provideDebugAdapter ersetzt DebugConfigurationProvider.debugAdapterExecutable Befehle

Zuvor haben wir die vorgeschlagene API DebugConfigurationProvider.debugAdapterExecutable hinzugefügt, damit eine Erweiterung einen dynamisch berechneten Pfad (und entsprechende Programmargumente) für den von VS Code zu startenden Debug-Adapter zurückgeben kann. In diesem Meilenstein überarbeiten wir das ursprüngliche Design auf Basis des erhaltenen Feedbacks (z. B. #45220, #56646, #57706, #54465).

Die neue API-Methode heißt provideDebugAdapter und wir übergeben nun die Debug-Sitzung, den Arbeitsbereich, die ausführbaren Informationen aus der package.json und die aufgelöste Startkonfiguration. Mit diesen Informationen hat eine Erweiterung das "Gesamtbild", wenn sie aufgefordert wird, den Debug-Adapter zu erstellen.

Zusätzlich unterstützen wir jetzt mehr Möglichkeiten zum Starten und Verbinden mit der Debug-Adapter-Implementierung. Hierfür kann ein Deskriptorobjekt aus der provideDebugAdapter-Methode zurückgegeben werden.

  • Ein DebugAdapterExecutable Deskriptor kann verwendet werden, um den Debug-Adapter als externen Prozess pro Sitzung zu starten und mit ihm über stdin/stdout zu kommunizieren. Mit der neuen API ist es nun möglich, das Arbeitsverzeichnis und die Umgebungsvariablen für den Debug-Adapter anzugeben.
  • Ein DebugAdapterServer beschreibt einen Serverprozess, der mehrere Sitzungen verarbeitet und über einen Socket kommuniziert.
  • Ein DebugAdapterImplementation kann für eine In-Place-Implementierung verwendet werden, die keinen Kommunikations-Overhead hat. Diese Option beruht auf einer kleinen Modifikation der Node.js-basierten Client-Bibliothek für DAP und ist für Oktober geplant.

Bitte beachten Sie, dass dies eine vorgeschlagene API ist und nicht in Erweiterungen verwendet werden kann, die im Marketplace veröffentlicht werden. Wir freuen uns jedoch über Ihr Feedback zu DebugConfigurationProvider.provideDebugAdapter in Issue 45220.

Kommentarbearbeitung und -löschung

In der letzten Iteration haben wir den DocumentCommentProvider eingeführt, der es Erweiterungen ermöglicht, Kommentare im Editor zu erstellen und zu verwalten. Wir haben neue Methoden zu diesem Provider hinzugefügt, um die Bearbeitung und Löschung von Kommentaren zu unterstützen. Kommentare selbst haben jetzt auch Flags, die angeben, ob sie Bearbeitung oder Löschung unterstützen. Wenn die Erweiterung eines dieser Flags setzt und eine entsprechende Bearbeitungs- oder Löschmethode bereitstellt, werden Aktionen zum Bearbeiten oder Löschen des Kommentars angezeigt, wenn man mit der Maus über einen Kommentar im Editor fährt oder ihn fokussiert.

Comment editing

Neue Befehle

Taste Befehl Befehls-ID
⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q) Zum letzten Bearbeitungsort navigieren workbench.action.navigateToLastEditLocation
⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S) Datei speichern, ohne Speicherteilnehmer (Formatter etc.) auszuführen workbench.action.files.saveWithoutFormatting
Aktive Datei in allen Editor-Gruppen schließen workbench.action.closeEditorInAllGroups
Inline- und Side-by-Side-Modus des Diff-Editors umschalten (veraltet toggle.diff.editorMode) toggle.diff.renderSideBySide

Neue Dokumentation

Blogbeitrag zur GitHub Pull Request-Erweiterung

Sie können Kenneths aktuellen Blogbeitrag lesen, in dem die neue GitHub Pull Request-Erweiterung angekündigt und die Zusammenarbeit zwischen VS Code und dem GitHub Editor-Team besprochen wird.

Blogbeitrag "Verwendung von Azure Pipelines"

In Visual Studio Code mit Azure Pipelines beschreibt der VS Code-Ingenieur João Moreno, wie VS Code jetzt Azure Pipelines für seine Build- und Continuous-Integration (CI)-Infrastruktur nutzt.

Neues PowerShell-Thema

PowerShell in Visual Studio Code zeigt die PowerShell-Integration über die Microsoft PowerShell-Erweiterung. Die Erweiterung unterstützt leistungsstarke Sprachfunktionen wie IntelliSense, "Gehe zu Definition" und "Alle Referenzen finden" sowie Debugging und Code-Snippets.

Neues Python Django Tutorial

Es gibt ein neues Tutorial Django in Visual Studio Code verwenden, das zeigt, wie Sie schnell eine Python Django-Webanwendung in VS Code erstellen, bearbeiten und debuggen können.

Bemerkenswerte Fehlerbehebungen

  • 48051: Nach der Formatierung müssen Sie nach links scrollen
  • 31619: Muss durch gelöschte Tabstopps in Snippets tabben
  • 58327: Debug-Toolbar-Schaltflächen deaktiviert
  • 35935: "Zuletzt geöffnete leeren" sollte auch die Schnellwahlliste der Editoren leeren
  • 58799: Untitled-Datei beim Speichern anzeigen
  • 29553: Schnelleingabe beim Drücken von Escape beibehalten
  • 58222: UriDisplayService fehlt der Name des Remote-Share-Pfads
  • 54213: Mechanismus zum Abbrechen des Debug-Starts, ohne launch.json anzuzeigen
  • 52511: Debug-Hover-Widget - Widget-Größe für lange Elemente mit ausgeblendetem Überlauf aktivieren
  • 50569: Bedingte Breakpoint-Eingabeaufforderung sollte anbieten, Breakpoints zu aktivieren, wenn der Breakpoint bereits deaktiviert ist
  • 42737: Erweiterungen: Rechtsklick zum Öffnen des Zahnradmenüs erlauben
  • 58434: Verwenden Sie das --force Argument, um Aufforderungen bei der Installation von Erweiterungen über die CLI zu verhindern.

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 language-server-protocol

Beiträge zu vscode-languageserver-node

Beiträge zu debug-adapter-protocol

Beiträge zu vscode-recipes

Beiträge zu vscode-chrome-debug

Beiträge zu vscode-chrome-debug-core

  • @digeff
    • Logging-Mechanismus aktualisiert, um keine Quellen mehr zu loggen PR #355
    • Erster Zeilen-Breakpoint Chrome 69 behoben PR #352
    • Break-on-Load behoben, um Breakpoints beim Anhängen funktionieren zu lassen PR #332

Beiträge zu localization

Es gibt fast 1200 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, Abstimmungen über Übersetzungen oder Vorschläge zur Prozessverbesserung.

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

  • Bangla: Anisuzzaman Khan, abm_prottoy, Mushiar Khan, Mehedi Hassan.
  • Bulgarisch: Любомир Василев.
  • Kroatisch: Nikša Mihaica.
  • Tschechisch: Vít Staniček.
  • Dänisch: Kenneth Greig, Johan Fagerberg, Martin Fruensgaard.
  • Niederländisch: Gerald Versluis, Marco van den Hout.
  • Französisch: Antoine Griffard, MayakoLyyn, Smrman, Etienne Blanc-Coquand.
  • Deutsch: J.M., Carsten Kneip, Volkmar Rigo, SetTrend.
  • Griechisch: Nikolaos Maliakkas.
  • Hindi: Ashwini Gupta, Shaswat Rungta.
  • Ungarisch: Tar Dániel.
  • Chinesisch (vereinfacht): Joel Yang, 子实 王, pluwen, Chris Pan 潘冬冬, danyeh.
  • Chinesisch (traditionell): Duran Hsieh, Poy Chang, Alan Tsai, Han Lin, Shih-Ming Tung, Will 保哥.
  • Indonesisch: G-RiNe Project, Wildan Mubarok, Rizki A. Wibowo, Riwut Libinuko, Azhe-kun, rodin, Febrian Setianto (Feber).
  • Italienisch: Luigi Bruno, Luca Bruni, Alessandro Alpi, Emilie Rollandin, Pascal Brax, Andrea Dottor, Riccardo Cappello.
  • Japanisch: Satoshi Kajiura, Shunya Tajima, Yuichi Nukiyama, yoshioms, daisuke osada (daiskeh).
  • Koreanisch: Kyunghee Ko, jaeyeon Kim, Junseong Jang, Jisan Oh.
  • Litauisch: Martynas Jusys.
  • Malayalam: Kiren Paul.
  • Norwegisch: Espen Klein Nilsen.
  • Polnisch: Artur, Patryk Brejdak, Adam Borowski, Mateusz Wyczawski.
  • Portugiesisch (Brasilien): Roberto Fonseca, Bruno Sonnino, Danilo Dantas, Marcelo Fernandes, Thiago Custodio, Rodrigo Crespi, Marcelo Andrade, Alessandro Fragnani, Lucas Miranda, Otacilio Saraiva Maia Neto.
  • Portugiesisch (Portugal): António Santos,Diogo Barros, António Lourenço, jp2masa, Ruben Mateus, Henrique Silva, André Vala.
  • Russisch: Ivan Kuzmenko, Roman Slauta.
  • Spanisch: Jorge Serrano Pérez, José M. Aguilar, Alberto Poblacion, Carlos Mendible, Alejandro Medina, Andy Gonzalez,Carlos Herrera.
  • Tamil: Vijay Nirmal, rajakvk, Anand AV.
  • Türkisch: Mustafa Turhan, Fırat Payalan, Selim Ata.
© . This site is unofficial and not affiliated with Microsoft.