Perché appare un segno di percentuale prima di ogni prompt su zsh in Windows?


13

Sto ottenendo zsh impostato in Windows e sto ottenendo un simbolo di percentuale inverso (nero su bianco (sfondo nero terminale)) nella prima posizione del carattere nella riga appena sopra ogni prompt.

Di solito ciò significa che non c'è una nuova riga alla fine del file, ad esempio quando cat-ing un file.

Non succede sul mio Mac o nemmeno su Mintty su Windows. Ma succede in ConEmu e nell'app terminale standard in cui di solito viene eseguito CMD.EXE.

Ho già unsettutte le mie stringhe di prompt e precmd()che normalmente utilizzo per aggiungere una riga vuota sopra il prompt.

Qualche idea di cosa potrebbe essere?

Risposte:


33

L'opzione pertinente è probabilmente la PROMPT_SPspiegazione del manuale

Tentativo di conservare una riga parziale (ovvero una riga che non terminava con una nuova riga) che verrebbe altrimenti coperta dal prompt dei comandi a causa dell'opzione PROMPT_CR. Questo funziona emettendo alcuni caratteri di controllo del cursore, inclusa una serie di spazi, che dovrebbero far passare il terminale alla riga successiva quando è presente una linea parziale (nota che questo ha successo solo se il tuo terminale ha margini automatici, che è tipico) .

Quando viene mantenuta una linea parziale, per impostazione predefinita vedrai un carattere inverso + grassetto alla fine della linea parziale: a %per un utente normale o a #per root. Se impostato, il parametro shell PROMPT_EOL_MARK può essere utilizzato per personalizzare la modalità di visualizzazione della fine delle linee parziali.

Quindi, o fai uno a

unsetopt PROMPT_SP

se non ti interessa la linea coperta (comunque nel tuo caso sembra essere una linea vuota, dato che ottieni il %segno all'inizio).

Oppure usa

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

che conserva le righe parziali, ma rimuove il %- a costo di alcune righe vuote sul prompt.

Per renderlo permanente, aggiorna il tuo ~/.zshrc.

Questo è un colpo cieco, poiché non riesco a riprodurre questo comportamento nel mio cmd.exe.


1
Grazie @mpy, questo mi ha messo nel posto giusto per saperne di più. Ecco cosa mi è venuto in mente: 1) tre cose funzionano, più se si combinano le opzioni: disinserire PROMPT_CR; unsetopt PROMPT_SP; e PROMPT_EOL_MARK = "". 2) l'impostazione PROMPT_EOL_MARK = "" elimina il fastidioso carattere inverso + grassetto "%", ma aggiunge ancora un avanzamento riga aggiuntivo, quindi il prompt appare diverso rispetto a Mintty o Mac. 3) Ho finito per andare con PROMPT_SP non impostato come miglior compromesso. 4) l'utilizzo di set e unset non funziona se non si utilizza l'opzione -o. setopt e unsetopt funzionano. Se risolverai accetterò la tua risposta :)
scanny

@scanny: devo scusarmi per il set. Certo, avrebbe dovuto essere setopt- ovviamente ho scritto la mia risposta troppo in fretta. Ho aggiornato la mia risposta e ho cercato di includere anche il punto sulle righe vuote.
MP

2

Quindi stavo avendo lo stesso identico problema con il mio zsh + oh-my-zsh.

L'ho risolto con l'aiuto di mpy e di quelle righe:

setopt PROMPT_CR

setopt PROMPT_SP

export PROMPT_EOL_MARK = ""

Devi solo andare a -> ~ / .oh-my-zsh / themes / XXXXXX Devi aprire il tema che stai usando su oh-my-zsh, quindi per me per esempio il suo agnoster.

Basta aprire questo file e copiare / incollare quelle 3 righe alla fine del file.

Ed è risolto !!

Spero che tu abbia una bella giornata e che questo possa aiutare alcune persone.

PACE


Si prega di non aggiungere "grazie" come risposte. Investi un po 'di tempo nel sito e otterrai i privilegi sufficienti per valutare le risposte che ti piacciono, che è il modo in cui Super User ti ringrazia.
DavidPostill

0

Puoi correre con te all'interno di ConEmu. Mi sono liberato delle percentuali per me.

Ecco cosa ho per i parametri dell'attività:

/icon "%ConEmuDrive%\msys64\msys2.ico"

e comandi:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.