Jak rozwiązać ten problem za pomocą monitu „dostrojonego” w ZSH?

1

Mam dostosowany monit w mojej konfiguracji ZSH. Główną cechą jest to, że ten monit ma kolor czerwony, dzięki czemu mogę go łatwo odróżnić od wyników programów. Mój monit jest zdefiniowany w następujący sposób:

PROMPT=$'\e[0;31m%n@%m:%~> \e[0m'

Działa to głównie dobrze, ale czasami mój kursor przełącza się na inną pozycję po zakończeniu tabulacji, a niektóre znaki są pozostawione na ekranie i przesuwają się po linii poleceń. To trochę denerwujące, ale jeśli ktoś zna rozwiązanie tego, doceniłbym to.

Memento
źródło

Odpowiedzi:

2

Musisz owinąć sekwencje niedrukowalne w %{ ... %}:

PROMPT=$'%{\e[0;31m%}%n@%m:%~> %{\e[0m%}'

Powinieneś być w stanie zrobić:

PROMPT=$'%F{red}%n@%m:%~> %f'

który jest prostszy, łatwiejszy do odczytania i będzie działał z typami terminali, które używają różnych sekwencji ucieczki.

Dennis Williamson
źródło
Druga linia nie działa dla mnie, ale pierwsza działa świetnie. Wielkie dzięki!
Mnementh
@Mnementh: Przepraszam, w drugiej linii była literówka - brakowało litery „F”. Spróbuj teraz.
Dennis Williamson,
Dzięki, teraz działa obie linie. Chciałbym głosować jeszcze raz, gdybym mógł. :-)
Mnementh