Perché alcuni comandi (spesso lunghi) sono confusi in bash & zsh?


10

Molte volte quando inserisco un lungo comando in bash o zsh (queste sono le uniche due shell in cui sono sicuro di averlo visto) il cursore si sposta da qualche parte nel mezzo della stringa che sto inserendo, qualcuno può spiegare perché questo è, e se si può fare qualcosa al riguardo?

Ho notato che ciò accade spesso quando sfoglio la cronologia della mia shell (usando i tasti freccia), quando incontro una voce lunga, la voce lunga e nuova si confonderà con la voce precedente, rendendo il testo confuso.

Ho un esempio con stringhe brevi, che ho appena notato:

La storia contiene:

mkdir sune1
mkdir sune2

Se navigo verso mkdir sune1, e poi verso mkdir sune2, mi aspetterei che la mia riga di comando fosse mkdir sune2(poiché questo è ciò che ho navigato ora) - ma invece ottengo mkdir1sune2.

L'ho notato di frequente da anni, ma non mi lascio mai disturbare troppo, ma immagino che sia tempo di cambiare! Quindi, qualche idea?

Risposte:


8

La stringa del prompt probabilmente è sfuggita erroneamente ai caratteri non stampabili. Se hai qualcosa di simile ai cambiamenti di colore nel tuo prompt, devi mettere \[e \]intorno alle sequenze di escape del terminale in modo che bash possa dire che non occupano spazio sullo schermo, altrimenti calcola male dove si trova il comando effettivo sullo schermo e lo aggiorna nel posto sbagliato. Vedi questa sezione da TLDP . In zsh, mettere %{e %}intorno sequenze di escape.


Ho davvero dei colori nel mio prompt, cercherò di sfuggirli o rimuoverli e vedere se questo aiuta. Grazie!
Jonatan,

Prendi in considerazione l'utilizzo del modulo colore di zsh. Dovrebbe evitare gli errori stackoverflow.com/questions/6159856/…
Francisco
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.