Niestandardowy monit nie działa w terminalu Mac

4

Lubię używać niestandardowego monitu (bieżąca ścieżka w kolorze niebieskim) na moim komputerze z systemem UNIX:

export PS1='\[\e[0;34m\]\w \$\[\e[m\] '

Ale kiedy próbuję użyć go na terminalu Mac, nie działa: nie wykrywa końca monitu i zastępuje go, gdy piszę polecenia. Dzieje się tak również wtedy, gdy wprowadzam długie polecenie, w którym zawija się ono w tym samym wierszu zamiast rozpoczynając nowy wiersz.

Nie rozumiem, dlaczego tak jest, ponieważ używam bash na obu komputerach. Wszelkie sugestie, jak to naprawić?


źródło

Odpowiedzi:

3

Nie jestem pewien, dlaczego otrzymujesz różne wyniki, ale powinna być poprawna wartość

export PS1='\[\e[0;34m\]\w \$\[\e[m\] '

Znaki niedrukowalne powinny być zamknięte \[ \], aby bash mógł obliczyć prawidłową długość monitu na ekranie (do celów pozycjonowania kursora).

chepner
źródło
Tak, eksport PS1 = „[\ e [0; 34m] \ w \ $ [\ e [m]” to wartość, której używam. W jakiś sposób błędnie to opisałem w swoim pytaniu. Nie działa, jak wyjaśniono powyżej.
Mi to pasuje.
Paul R
@mareks W powyższym komentarzu znów brakuje ci odwrotnego ukośnika przed [i, ]który zawiera kody ucieczki ANSI dla kolorów. \[\e[Nie [\e[.
chepner
2

Spróbuj umieścić regularne cudzysłowy „” zamiast tych pojedynczych cudzysłowów. Pracował dla mnie. Współpracuje również z terminalem iTerm, a także terminalem Mac OS X.

Wolfgang Levinson
źródło
0

\[\e[stał [\e[się postem, gdy nie był sformatowany jako kod. Przepraszam za zamieszanie. Rozwiązałem problem, aktualizując bash z 3.0 do 4.2 na moim Macu.

klaczy
źródło