Comportamiento extraño en el terminal con .bash_profile personalizado

8

Es difícil describir el comportamiento, pero aquí hay un breve clip:

enlace

Básicamente, al ingresar comandos de varias líneas, al final de la primera línea, el bloque de inserción se remonta al inicio de la primera línea, escribe sobre la primera línea y luego continúa como normal hasta la segunda, tercera. líneas etc. Al eliminar, me permite eliminar todo el comando, más los espacios en blanco en la línea sobre el comando (lo tengo configurado para que los comandos se inserten después de una línea que contenga información de @ host / directorio del usuario. Incluso me permite eliminar la La última parte del directorio y el host que describí anteriormente. Lo siento, soy terrible al explicar esto, el video hará un mejor trabajo.

Aquí está el contenido de mi .bash_profile:

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

2 respuestas

12

Debe rodear sus caracteres no imprimibles (en este caso, sus secuencias de escape ANSI) con secuencias de escape bash: \[ y \] . De esa manera, bash sabrá que los caracteres incluidos no son visibles, es decir. No ocupan espacio, es decir. no deben incluirse en el cálculo de longitud de palabra utilizado por el ajuste de línea.

en otras palabras, cambia tu definición de 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\] "

Y aquí está el mismo valor PS1 , solo para humanos, con una mejor legibilidad (ANSI se escapa en la fila inferior, bash se escapa en el centro e imprime caracteres en la fila superior).

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

Lectura adicional:

respondido por el Jari Keinänen 16.01.2012 - 17:21
0

Yo todos,

Tuve problemas similares y encontré una solución simplemente cambiando mi variable PS1 de la original a una muy simple, solo mi nombre: exportar PS1 = Alex

Ahora mi terminal ya no tiene ningún comportamiento extraño.

Espero que te ayude.

Alex (en Mac Lion 10.8)

    
respondido por el user43414 21.02.2013 - 13:34

Lea otras preguntas en las etiquetas