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ć?

bash  prompt 

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).


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.