Jaki jest symbol nowej linii w PS1 zsh?

34

Próbuję skonfigurować wielowierszowy PS1 dla zsh, ale \nnie został przeanalizowany przez zsh,

PS1="%~\n %> "

Jak mam to skonfigurować?

stokrotka
źródło

Odpowiedzi:

33

Posługiwać się $'\n'

Na przykład,

PROMPT="firstline"$'\n'"secondline "

lub

NEWLINE=$'\n'
PROMPT="firstline${NEWLINE}secondline "
n5c
źródło
Działało tak, jak ja tego potrzebowałem.
Justin
1
użycie NEWLINE znacznie ułatwia edycję monitu
cmcginty,
Jaka jest różnica między zmienną PS1 a zmienną PROMPT?
Didier A.
@DidierA. PROMPT i PROMPT2-4 są odpowiednio pseudonimami PS1-4, z tym wyjątkiem, że pseudonimy PROMPT „[nie] istnieją, gdy powłoka inicjuje się w trybie emulacji sh lub ksh”.
Victor
28
PS1="firstline
secondline "

lub

PS1=$'Hi Joe,\nwhat now?%# '

Zaczerpnięte z FAQ , punkt 3.13

int
źródło
1
Może to powodować problemy. Zobacz link. superuser.com/questions/382503/…
fx-kirin
1

W ten sposób (wiem, wygląda niezręcznie):

PS1="%~
 %> "
Emanuel Berg
źródło
-1

Wiem, że to stare pytanie, ale też tego szukałem. Jeśli załadujesz promptinit ( autoload -Uz promptinit && promptinit), otrzymasz opcję za darmo: $prompt_newlinektóra jest $'\n%{\r%}'.

W systemie Debian możesz znaleźć kod źródłowy w /usr/share/zsh/functions/Prompts/promptiniti / lub https://github.com/zsh-users/zsh/blob/master/Functions/Prompts/promptinit

waterkip
źródło