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

Terminaldarstellung

Das Aussehen des Terminals von Visual Studio Code kann umfangreich angepasst werden.

An example of a custom UI, using Powerline and Nerd Font symbols in the prompt and a custom workbench theme

Sapphire-Theme mit benutzerdefinierter Starship-Eingabeaufforderung unter Verwendung der Schriftart Hack mit Nerd Font-Symbolen

Textstil

Text im Terminal kann mit den folgenden Einstellungen angepasst werden

Powerline-Symbole und Nerd Fonts

Powerline-Schriftarten sind speziell gepatchte Schriftarten, die zusätzliche Zeichen enthalten, die im Terminal verwendet werden können. Das Terminal von VS Code rendert einige der Powerline-Symbole ohne Notwendigkeit einer Schriftartkonfiguration, aber wenn mehr Glyphen gewünscht sind, konfigurieren Sie eine Powerline-Schriftart mit der Schriftartfamilie-Einstellung. Powerline-Schriftarten enden normalerweise mit " for Powerline". Die folgende Einstellung ist ein Beispiel für die Konfiguration einer DejaVu Sans Mono, die gepatcht wurde.

"editor.fontFamily": "'DejaVu Sans Mono for Powerline'"

Nerd Fonts funktionieren auf die gleiche Weise und haben typischerweise die Endung " NF". Das Folgende ist ein Beispiel für die Konfiguration der Nerd Fonts-Variante von Hack.

"terminal.integrated.fontFamily": "'Hack NF'"

Terminalcursor

Der Stil des Terminalcursors und ob er blinkt, kann mit den folgenden Einstellungen angepasst werden

Registerkarten anpassen

Terminal-Registerkarten erscheinen standardmäßig rechts in der Terminalansicht, wenn zwei oder mehr Terminals vorhanden sind, und zeigen das aktive Terminal im Ansichtsheader an, wenn nur eines vorhanden ist.

A blank terminal without tabs and then with tabs displayed for three terminals

Sichtbarkeit

Die Standardanzeige ist darauf ausgelegt, horizontalen Platz zu sparen, ist aber möglicherweise nicht wünschenswert. Wie Registerkarten dargestellt werden, kann mit den folgenden Einstellungen konfiguriert werden

Registerkarten-Text

Der Text auf jeder Registerkarte wird durch die folgenden Einstellungen bestimmt

Standardmäßig zeigt der Titel den vom Shell erkannten Prozessnamen an.

Andere Terminals zeigen oft die von der Shell gesendete Escape-Sequenz als Titel an, was mit Folgendem konfiguriert werden kann:

"terminal.integrated.tabs.title": "${sequence}"

Hier sind alle verfügbaren Variablen

  • ${cwd}: Das aktuelle Arbeitsverzeichnis des Terminals.
  • ${cwdFolder}: Das aktuelle Arbeitsverzeichnis des Terminals, angezeigt für Multi-Root-Workspaces oder in einem Single-Root-Workspace, wenn der Wert vom anfänglichen Arbeitsverzeichnis abweicht. Unter Windows wird dies nur angezeigt, wenn die Shell-Integration aktiviert ist.
  • ${workspaceFolder}: Der Workspace, in dem das Terminal gestartet wurde.
  • ${workspaceFolderName}: Der Name des Workspaces, in dem das Terminal gestartet wurde.
  • ${local}: Gibt ein lokales Terminal in einem Remote-Workspace an.
  • ${process}: Der Name des Terminalprozesses.
  • ${progress}: Der von der OSC-9;4-Sequenz gemeldete Fortschrittszustand.
  • ${separator}: Ein bedingter Trenner (-), der nur angezeigt wird, wenn er von Variablen mit Werten oder statischem Text umgeben ist.
  • ${sequence}: Der vom Prozess dem Terminal bereitgestellte Name.
  • ${task}: Gibt an, dass dieses Terminal mit einer Aufgabe verknüpft ist.
  • ${shellType}: Der erkannte Shell-Typ.
  • ${shellCommand}: Der gemäß der Shell-Integration ausgeführte Befehl. Dies erfordert auch ein hohes Vertrauen in die erkannte Befehlszeile, was bei einigen Eingabeaufforderungs-Frameworks möglicherweise nicht funktioniert.
  • ${shellPromptInput}: Die vollständige Eingabeaufforderung der Shell gemäß der Shell-Integration.

Symbole

Jedes Terminal hat ein zugehöriges Symbol, das von seinem Terminalprofil bestimmt wird. Das Standardsymbol und seine Farbe, die verwendet werden, wenn sie nicht in einem Profil definiert sind, können mit den Einstellungen terminal.integrated.tabs.defaultIcon und terminal.integrated.tabs.defaultColor konfiguriert werden.

Status

Der "Status" eines Terminals, falls vorhanden, wird durch ein Symbol angezeigt, das rechts von der Registerkarte erscheint. Einige Status beinhalten Animationen. Wenn dies ablenkend ist, kann die Animation deaktiviert werden mit

"terminal.integrated.tabs.enableAnimation": false

Visueller Glockenton

Wenn der Glockenton des Terminals ausgelöst wird, wird kurz ein gelbes Glockensymbol angezeigt. Dies kann mit terminal.integrated.enableBell deaktiviert und die Dauer mit terminal.integrated.bellDuration konfiguriert werden.

Terminalfarben

Während das Terminal in der Lage ist, True Color anzuzeigen, verwenden Programme üblicherweise 8 ANSI-Farben (schwarz, rot, grün, gelb, blau, magenta, cyan und weiß) und helle Varianten davon. Diese ANSI-Farben werden durch das aktive Farbschema bestimmt, können aber auch unabhängig vom Schema mit der Einstellung workbench.colorCustomizations konfiguriert werden.

Ob fetter Text die normalen ANSI-Farben oder die helle Variante verwendet, kann mit der Einstellung terminal.integrated.drawBoldTextInBrightColors konfiguriert werden.

Minimales Kontrastverhältnis

Terminals haben oft Kontrastprobleme aufgrund von Konflikten mit dunklen/hellen Schemata, ANSI-Farben oder laufenden Shells/Programmen und mehr.

Das Feature für minimale Kontrastverhältnisse löst dieses Problem, indem die Luminanz der Vordergrundfarbe des Textes erhöht oder verringert wird, bis ein Kontrastverhältnis von 4,5:1 erreicht ist.

Ein Nachteil davon ist, dass farbiger Text manchmal an Sättigung verlieren kann. Dieses Feature kann konfiguriert oder deaktiviert werden, um die ursprünglichen Farben mit Folgendem zu erhalten:

"terminal.integrated.minimumContrastRatio": 1

Ligaturen

Terminal Ligaturen ermöglichen die Darstellung mehrerer Zeichen als eines. Sie können Ligaturen im Terminal aktivieren, indem Sie die Einstellung terminal.integrated.fontLigatures.enabled konfigurieren, vorausgesetzt, die Terminalschriftartfamilie (terminal.integrated.fontFamily) unterstützt diese.

Enabling ligatures will combine certain sets of characters into one, for example >= into the greater than or equals sign

Schriftart-Feature-Einstellungen

Wenn Ligaturen aktiviert sind, ist es auch möglich, eine detaillierte Liste von Schriftart-Feature-Einstellungen im Format der CSS-Eigenschaft font-feature-settings festzulegen. Dies gibt Ihnen eine feinere Kontrolle darüber, wie Ligaturen gerendert werden. Zum Beispiel sieht das Deaktivieren der Standard-calt-Ligaturen und das Aktivieren einer bestimmten Schriftvarianten etwa so aus: "calt" off, "ss03". Eine Liste der von der Schriftart unterstützten Varianten finden Sie in der Dokumentation der Schriftart.

Fallback-Ligaturen

Wenn eine Schriftart Ligaturen unterstützt, VS Code aber die fragliche Schriftart nicht parsen kann, können Sie entweder die GPU-Beschleunigung deaktivieren oder eine Liste von Zeichensequenzen angeben, um Ligaturen manuell zu verbinden.

Standardmäßig ist die Liste der Fallback-Ligaturen eine Liste gängiger Ligaturen, die beim Programmieren verwendet werden. Passen Sie die Liste an, indem Sie die Einstellung terminal.integrated.fontLigatures.fallbackLigatures konfigurieren. Zum Beispiel

// Only use ligatures for `ff`, `fi` and `fl`
"terminal.integrated.fontLigatures.fallbackLigatures": [
    "ff",
    "fi",
    "fl"
]

GPU-Beschleunigung

Das Terminal bietet zwei verschiedene Renderer, die jeweils unterschiedliche Kompromisse eingehen

  • WebGL-Renderer – Echte GPU-Beschleunigung.
  • DOM-Renderer – Ein Fallback-Renderer, der viel langsamer ist, aber eine gute Kompatibilität aufweist.

Die GPU-Beschleunigung, die vom WebGL-Renderer gesteuert wird, ist standardmäßig im Terminal aktiviert. Dies hilft dem Terminal, schneller zu arbeiten und mit hoher Bildrate anzuzeigen, indem die Zeit, die die CPU für das Rendern jedes Frames benötigt, erheblich reduziert wird.

Der Standardwert von terminal.integrated.gpuAcceleration von auto versucht den WebGL-Renderer und fällt auf den DOM-Renderer zurück, wenn dieser fehlschlägt. Unter Linux-VMs, Browsern, die WebGL nicht unterstützen, oder Rechnern mit veralteten Treibern funktioniert WebGL möglicherweise nicht richtig.

Benutzerdefinierte Glyphen

Wenn GPU-Beschleunigung aktiviert ist, verbessert das benutzerdefinierte Rendern anstelle der Schriftart die Darstellung einiger Zeichen im Terminal. Dazu gehören Rahmenzeichen (U+2500-U+257F), Blockelemente (U+2580-U+259F) und eine Teilmenge von Powerline-Symbolen (U+E0B0-U+E0BF). Das bedeutet, dass die konfigurierte Schriftart diese Zeichen nicht unterstützen muss und die Zeichen pixelgenau gezeichnet und auf die Größe der gesamten Zelle gestreckt werden.

Unten sind einige Beispiele für diese Zeichen mit konfigurierter Zeilenhöhe und Buchstabenabstand. Beachten Sie, dass es dank der benutzerdefinierten Glyphen keine Lücken zwischen den Zellen gibt.

Box drawing, block characters and some Powerline symbols fill the entire cell in the terminal

Diese Funktion kann deaktiviert werden, indem terminal.integrated.customGlyphs auf false gesetzt wird.

Neuskalierung von Glyphen mit ambigurer Breite

Einige Unicode-Zeichen haben eine ambigue Breite, bei der das Backend und das Frontend des Terminals sich möglicherweise nicht über die Größe einig sind. Wenn die GPU-Beschleunigung aktiviert ist und diese Ambiguität auftritt, wird die Glyphe horizontal skaliert, um in eine einzelne Zelle zu passen und Überlappungen zu verhindern.

Zum Beispiel zeigt das folgende Bild römische Ziffern, die in eine einzelne Zelle gequetscht sind.

VIII and XII characters would be rescaled horizontally so as to not overlap with following characters. They feature a thinner stroke width when this happens due to the scaling

Diese Funktion kann deaktiviert werden, indem terminal.integrated.rescaleOverlappingGlyphs auf false gesetzt wird, was zu der folgenden überlappenden Darstellung führen würde.

When off, the VIII and XII characters may overlap the following characters

Passen Sie Ihre Eingabeaufforderung an

Die meisten Shells erlauben eine umfangreiche Anpassung der Terminal-Eingabeaufforderung. Dies geschieht durch Konfiguration Ihrer Shell außerhalb von VS Code, typischerweise durch Modifizierung der $PS1-Variable, Setzen von $PROMPT_COMMAND oder Installation eines Plugins.

Einige Eingabeaufforderungen wie Starship und oh-my-posh zeigen Dinge wie den Git-Status an und funktionieren mit den meisten Shells, daher sind sie eine gute Wahl für den Anfang.

Häufig gestellte Fragen

Warum zeigt mein Terminal ein mehrfarbiges Dreieck oder ein schwarzes Rechteck an?

Das Terminal kann in einigen Umgebungen Probleme mit GPU-beschleunigtem Rendering haben. Zum Beispiel sehen Sie möglicherweise ein großes mehrfarbiges Dreieck anstelle von Text. Dies wird typischerweise durch Treiber-/VM-Grafikprobleme verursacht und tritt auch in Chromium auf. Umgehen Sie diese Probleme, indem Sie code mit dem Flag --disable-gpu starten oder terminal.integrated.gpuAcceleration auf off setzen, um die Verwendung der Leinwand im Terminal zu vermeiden. Weitere Informationen finden Sie im Abschnitt GPU-Beschleunigung.

Warum sind die Farben im Terminal nicht korrekt?

Die Funktion für das minimale Kontrastverhältnis kann dazu führen, dass Farben nicht wie erwartet angezeigt werden. Sie kann deaktiviert werden mit

"terminal.integrated.minimumContrastRatio": 1

Der Hintergrund, warum dies der Standard ist, wird in vscode#146406 erklärt.

© . This site is unofficial and not affiliated with Microsoft.