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 $PWD
eingetippt 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 foo
in 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 if
ist .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 main
TextmarkerHier.
Derzeit fg
ist das einzige Standard-Styling mit Text ( ), der auf schwarz konfiguriert ist,Kommentar.
Ich weiß nicht, warum genau dieses foo $PW
Beispiel als Kommentar zählt, aber dasDokumentationbeschreibt comment
als:
comment
- Kommentare, wennsetopt INTERACTIVE_COMMENTS
wirksam ist (echo # foo
)
comment
- ausgelassene Parameter in der Befehlsposition ($x ls
wenn$x
nicht gesetzt oder leer ist)
Die zweite Bedingung scheint wirksam zu sein, da $PW
sie wahrscheinlich nicht erfüllt ist.