Strano comportamento nel terminale con custom .bash_profile

8

È difficile descrivere il comportamento, ma ecco una breve clip:

link

Fondamentalmente, quando si inseriscono comandi a più righe, alla fine della prima riga, il blocco di inserimento ritorna all'inizio della prima riga, scrive sulla prima riga, quindi continua normalmente al secondo, terzo, linee ecc. Quando si cancella, mi consente di cancellare l'intero comando, oltre agli spazi vuoti sulla riga sopra il comando (l'ho configurato in modo che i comandi vengano inseriti dopo una riga contenente le informazioni dell'utente @ host / directory. Quindi mi permette anche di cancellare il comando ultima parte della directory e dell'host che ho descritto sopra. Scusa se sono terribile nello spiegare questo, il video farà un lavoro migliore.

Ecco i contenuti del mio .bash_profile:

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "
    
posta Blair Beckwith 16.01.2012 - 14:48
fonte

2 risposte

12

Dovresti circondare i tuoi caratteri non stampabili (in questo caso, le tue sequenze di escape ANSI) con le sequenze di escape bash: \[ e \] . In questo modo bash saprà che i caratteri inclusi non sono visibili, cioè. non prendono spazio, cioè. non dovrebbero essere inclusi nel calcolo del word-length usato dal line-wrapper.

in altre parole cambia la tua definizione di PS1 :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

... a:

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

Ed ecco lo stesso valore PS1 , solo per la lettura umana, con una leggibilità forse migliore (ANSI-escape nella riga inferiore, bash escape nel mezzo e caratteri di stampa nella riga superiore.)

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

Ulteriori letture:

risposta data 16.01.2012 - 17:21
fonte
0

I everyone,

Ho avuto problemi simili e ho trovato una soluzione semplicemente cambiando la mia variabile PS1 da quella originale a una molto semplice, solo il mio nome in realtà: esportazione PS1 = Alex

Ora il mio terminale non ha più alcun comportamento strano.

Spero che possa aiutarti.

Alex (su Mac Lion 10.8)

    
risposta data 21.02.2013 - 13:34
fonte

Leggi altre domande sui tag