Bash Ctrl-A Ritorna all'inizio della linea ma non viene visualizzato correttamente

5

Quando eseguo l'ssh su un server Linux da bash Terminal, posso usare CTRL + A per tornare correttamente all'inizio della riga, e CTRL + E per andare a fine riga e tutto funziona bene.

Quando uso bash localmente sul mio Mac, quando uso CTRL + A , torna logicamente all'inizio della riga, ma non mostra il cursore nel posto giusto Visualizza il cursore 7 o giù di caratteri e non aggiorna correttamente il testo della riga.

Esempio

find . -name "hello.cpp"

CTRL + A

find . -name "hello.cpp"
       ^~~ cursor shows here ????

Inserisci "questo è un test" (solo per mostrare)

Visualizza:

find . this is a test -name "hello.cpp"
                      ^~~ cursor is still here ???
       ^~~~~~~~~~~~~^ text inserted here ???
^~~~~~^ unchanged for some reason

Comando eseguito

this is a test find . -name "hello.cpp"

Io uso lo stesso

PS1=\n \e[1;95m \u@\h \e[0;32m\w \e[1;30m $(__git_ps1 " (%s)" ) \n \e[1;95m \@ \n $ \e[0;30m

come faccio io su Linux.

Informazioni sulla versione

  • versione bash: 3.2.57 (1)
  • versione del terminale: 2.6.1 (361.1)
  • OS X El Capitan, 10.11.5
posta MtRoad 05.06.2016 - 18:50
fonte

1 risposta

4

Aggiungi \[ e \] attorno ai codici colore per consentire a bash di calcolare correttamente la lunghezza della linea. Qualcosa del genere:

PS1=\n \[\e[1;95m\] \u@\h \[\e[0;32m\]\w \[\e[1;30m\] $(__git_ps1 " (%s)" ) \n \[\e[1;95m\] \@ \n $ \[\e[0;30m\]

(Questa risposta è presa dal commento di @ Mark sulla domanda).

    
risposta data 27.10.2016 - 23:57
fonte

Leggi altre domande sui tag