zsh-syntax-highlighting schreibt Parametererweiterung in schwarz

zsh-syntax-highlighting schreibt Parametererweiterung in schwarz

ich habe installiertzsh-Syntaxhervorhebung. Das funktioniert gut, bis auf eine Besonderheit: Wenn ich eine Parametererweiterung als Befehlsargument eingebe, d. h.

foo $PWD

Sobald ich das eingebe $P, wird die Parametererweiterung schwarz gefärbt (was sie unsichtbar macht, da ich ein Terminal mit schwarzem Hintergrund verwende). Sie bleibt schwarz, wenn ich eingebe $PW, und wird sichtbar (Vordergrundfarbe, aber unterstrichen), sobald das $PWDeingetippt ist. Es scheint, dass die Hervorhebungsattribute für einen „unfertigen/unbekannten“ Parameter „fg=black“ sind, für einen bekannten Parameter jedoch einfach unline.

Mir gefällt, dass sie unterschiedlich eingefärbt sind, da ich so Tippfehler in einem Variablennamen frühzeitig erkenne. Schwarz ist allerdings unleserlich, da ich auch einen schwarzen Hintergrund habe.

Interessanterweise geschieht dies nur, wenn das erste Wort in der Zeile entweder ein externer Befehl (wie fooin meinem Beispiel) oder ein Syntaxschlüsselwort ( ) ist. Es geschieht nicht, wenn das erste Wort in der Zeile ein interner Befehl (wie ), ein Aliasaufruf oder ein Funktionsaufruf ifist .echo

Ich habe die Dokumentation durchsucht, konnte jedoch nicht finden, wo diese Einfärbung der „unvollendeten Parametererweiterung“ definiert werden könnte.

Ich verwende folgende Textmarker:

ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern line)

Ich habe verschiedene Hervorhebungskategorien eingestellt, aber es gibt keine, bei der ich den Vordergrund einfach auf Schwarz setzen würde.

Ich hebe einige sehr spezifische Parameter hervor, die mir wichtig sind, wie folgt:

ZSH_HIGHLIGHT_PATTERNS+=('$(oncoll|onyt|oncp|ong)' 'fg=black,bold,bg=white')

Auf das hier beschriebene Problem kann dies allerdings auch keinen Einfluss haben.

Weiß jemand zufällig, welche Stileinstellung hier bei mir zum Tragen kommt?

Antwort1

Hier finden Sie alle Standardstile für den mainTextmarkerHier.

Derzeit fgist das einzige Standard-Styling mit Text ( ), der auf schwarz konfiguriert ist,Kommentar.

Ich weiß nicht, warum genau dieses foo $PWBeispiel als Kommentar zählt, aber dasDokumentationbeschreibt commentals:

comment- Kommentare, wenn setopt INTERACTIVE_COMMENTSwirksam ist ( echo # foo)
comment- ausgelassene Parameter in der Befehlsposition ( $x lswenn $xnicht gesetzt oder leer ist)

Die zweite Bedingung scheint wirksam zu sein, da $PWsie wahrscheinlich nicht erfüllt ist.

verwandte Informationen