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.

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.

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:
- Benutzerdefinierte Dateisymbole - VS Code-Dateisymbole spiegeln den Dateityp in Ihrem OS-Explorer wider.
- Projektweite Snippets - Passen Sie Ihre Snippet-Sammlung pro Arbeitsbereich an.
- Tab-Vervollständigung im Editor - Verwenden Sie Tab, um einfach durch IntelliSense-Vorschläge zu blättern.
- Springe zur letzten Bearbeitungsposition - Neuer Befehl, um zur Position Ihrer letzten Bearbeitung zu springen.
- Speichern ohne Formatierer - Speichern Sie eine Datei, ohne die vorhandene Formatierung zu ändern.
- Git-Verbesserungen - Bessere Handhabung von Löschkonflikten, neue Option "Rebase beim Synchronisieren".
- Umbenennen über Importpfad - Benennen Sie eine JS/TS-Datei über ihren Importpfad um.
- Konvertieren in async-Funktion - Aktualisieren Sie schnell eine Funktion, um async und await zu verwenden.
- Besseres Markdown-Falten - Klappen Sie Codeblöcke, mehrzeilige Listen und eingebettetes HTML ein.
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.

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.
![]()
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.

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"
}
Unterstützung für symbolische Links beim Öffnen von Ordnern
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.

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 Terminalworkbench.panel.markers- Problems panelworkbench.panel.output- Output panelworkbench.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.

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.

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.

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.

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.

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.

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
.htmlbeschrä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.

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.

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.

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.

Beachten Sie, dass diese Funktion erfordert, dass die Einstellung
javascript.validate.enableauf 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.*undtypescript.suggest.*. typescript.useCodeSnippetOnMethodSuggestwurde injavascript.suggest.completeFunctionCallsundtypescript.suggest.completeFunctionCallsumbenannt.javascript.nameSuggestionswurde injavascript.suggest.namesumbenannt.typescript.autoImportSuggestions.enabledwurde injavascript.suggest.autoImportsundtypescriptscript.suggest.autoImportsumbenannt.- Die neuen Einstellungen
javascript.suggest.enabledundtypescript.suggest.enabledermö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.

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

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:

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.jsonIhrer 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
DebugAdapterExecutableDeskriptor 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
DebugAdapterServerbeschreibt einen Serverprozess, der mehrere Sitzungen verarbeitet und über einen Socket kommuniziert. - Ein
DebugAdapterImplementationkann 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.

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
--forceArgument, 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
- Sribalaji M (@1AmNegan): Ansichtsfenster für nextChange/previousChange mit Tastenkombination zentrieren PR #51235
- Agustín Rodríguez (@agurodriguez): Stile für Diff in der Markdown-Vorschau PR #59289
- Andrew Casey (@amcasey): GDPR-Annotation für typescript-language-features/languageserviceerrorresponse hinzufügen PR #57182
- Andy Li (@andyli): Standard-Schriftartoptionen des integrierten Ubuntu-Terminals überschreiben (#\_35901) PR #56429
- Aliaksandr Stelmachonak (@ava1ar): ARM64-Build-Unterstützung hinzugefügt PR #52119
- Beau Allison (@beauallison): Git-Hellfarbenes Häkchen an dunkle anpassen PR #50526
- Andre Wachsmuth (@blutorange): Promise-Polyfill repariert, Chaining von Promises funktioniert PR #57723
- Bruno Finger (@brunofin): Klammern auch beim Erstellen eines Branches ersetzen PR #57374
- David Staheli (@DavidStaheli): Neue VSTS YAML-Syntax verwenden PR #57745
- Dave Williams (@davnicwil): Neue Konfiguration zum Deaktivieren von TypeScript-Auto-Vervollständigungsvorschlägen PR #58011
- Dustin Campbell (@DustinCampbell): C#-Grammatik aktualisiert PR #57451
- Eric Amodio (@eamodio): Bild-URIs mit Query-String werden nicht richtig erkannt PR #58314
- @Git-Lior
- Guy Waldman (@guywald1)
- Jay Rodgers (@headmelted)
- Eric Gang (@Hirico): Offenen Bereich nach Verwendung von "Datei öffnen" aus dem Git-Diff-Editor beibehalten (Fix #53465) PR #54867
- Jatin Sandilya (@jats22): Absoluten Pfad für Python entfernt PR #56943
- Jason Bright (@jgbright)
- Jim Hessin (@jhessin): language-configuration.json aktualisiert PR #44566
- JYX (@jjyyxx): Ungenaue Beschreibung in tsconfig.schema.json korrigiert PR #58582
- Jonathan Perret (@jonathanperret): Tippfehler in workbench.editor.labelFormat korrigiert PR #59155
- Konstantin Müller (@konstantin-mueller): #54204 Befehle zum Anwenden von Stashes hinzugefügt PR #54300
- limerick (@limerickgds): Generator-Methode der Klassen-Autocomplete verursacht die Hinzufügung eines Sterns (*) ... PR #51557
- Luis Zuniga (@luiszun): Überprüft den Pfad auf Leerzeichen, bevor er gesendet wird. Verhindert, dass Dateinamen interpretiert werden... PR #56966
- @lzmkony: Doppelte Funktion gelöscht PR #57700
- Muhammad Azeem (@manixate): Verhindert, dass die Scrollleiste als Drop-Ziel für Drag-and-Drop betrachtet wird PR #49747
- Matt Hardcastle (@MattHardcastle): Nicht automatisch schließen, wenn mit offenem Ende PR #55315
- Maarten Fonville (@mfonville): Electron auf 2.0.9 aktualisiert PR #58382
- Marat Abdullin (@mshoho): Eine Option zum Kopieren von reinem Text in die Zwischenablage. PR #54155
- Néstor Hernández Ojeda (@nesukun): Unterstützung für Force Push und Force-With-Lease hinzugefügt PR #53286
- Nilesh Kevlani (@njkevlani): Neuer Befehl zum Senden einer benutzerdefinierten Sequenz an das Terminal hinzugefügt PR #56962
- Noam Yogev (@noamyogev84): Snippet-JSON-Präfix als Array zulassen, um mehrere Präfixe für dasselbe Snippet zu unterstützen PR #59092
- Alexandre ZANNI (@noraj): Mehr Markdown-Erweiterungen hinzufügen PR #58072
- Sardorbek (@oneslash)
- Karthikayan (@ParkourKarthik)
- Chi Wang (@patr0nus): Behebt den Fehler "Ungültiger Startindex" PR #57617
- Morten N.O. Nørgaard Henriksen (@raix): Branch-Namensvalidierung und Whitespace-Konfiguration hinzugefügt PR #50712
- Rik Smeets (@rik-smeets): Fehlende Zugriffstasten (Mnemonics) für Menüpunkte hinzugefügt PR #58412
- Rodrigo Varas (@rodrigovaras): Korrektur, damit das EH-Debugging funktioniert, wenn Live Share den Debug-Adapter proxydiziert PR #58227
- Segev Finer (@segevfiner)
- @sucicf1: Fix#35905 PR #58380
- Thomas Basche (@tombasche): Leere Git-Commits zulassen PR #56048
- tsangint (@tsangint): Tippfehler korrigiert PR #57192
- Alexander (@usernamehw): Tab-Fokus-bezogene Probleme behoben PR #57821
- Winner Crespo (@wistcc)
Beiträge zu language-server-protocol
- Tyson Andre (@TysonAndre): Weitere Tippfehler korrigiert PR #568
Beiträge zu vscode-languageserver-node
- Mathias R. Jessen (@IISResetMe): Falsch geschriebene "received" in Fehlermeldung korrigiert PR #414
Beiträge zu debug-adapter-protocol
- Antonino Perricone (@APerricone): Harbour-Sprache von APerricone hinzugefügt PR #6
Beiträge zu vscode-recipes
- Daryl Knowles (@darylknowles): Debug End-to-End sollte lokalen Server mit ng e2e starten PR #122
- Karuppasamy M (@karuppasamy): Rezepte für Ruby on Rails hinzugefügt PR #59
- Trivikram Kamat (@trivikr): Rezept zum Debuggen von Node-Tap-Tests in VS Code hinzugefügt PR #128
Beiträge zu vscode-chrome-debug
- Sasha (@stristr):
targetTypes-Eigenschaft als null zulässig für erweitertes Debugging verwendet. PR #727
Beiträge zu vscode-chrome-debug-core
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.