2013-01-08 15 views

risposta

12

Affinché bash per capire quanto spazio sullo schermo il prompt prende (e quindi dove la riga di comando vero e proprio inizia), si deve racchiudere il non- stampa di parti del prompt in \[...\]. Principalmente, ciò significa che le sequenze di escape come \e[1;30m devono essere scritte come \[\e[1;30m\]. Hai alcuni \[ e \] nel tuo prompt, ma sono nei posti sbagliati, il che rende bash molto confuso. Trovare tutte le parti di stampa e non stampa di una richiesta complessa come il vostro non è banale, ma penso che questo ottiene di destra:

export PS1='\[\e[1;30m[\e[\e[1;30m\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \[\e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]' 
+0

Ho avuto lo stesso problema, grazie per aver ricordato che è necessario avere sempre la parte non stampata è racchiusa tra '\ [' ... '\]' – pbojinov

+0

Brillante - senza circondare le sequenze di escape colore in PS1 con '\ [' e '\]' come si afferma, la posizione del cursore diventa fuori sincrono quando usando la freccia su per selezionare il comando precedente nella cronologia della shell. –

Problemi correlati