2011-09-25 8 views
6

Encontré un error molesto mientras coloreaba el aviso de mi Terminal. Si fijo mi mensaje para una de color, tales comoConfiguración de colores en Terminal lleva a límite de línea de carácter extraño

export PS1='\e[1;34m[\e[0;31m\D{%Hh%M} \e[0;32m\u\e[[email protected]\e[0;35m\h\e[0m:\e[0;36m\w\e[1;34m]\e[0m $ ' 

luego empieza a romper cuando llegue a un cierto tamaño en la línea de entrada:

enter image description here

En otras palabras, cuando mi línea alcanza un límite, ¡comienza sobre sí mismo! Una vez que llene la misma línea nuevamente, funciona bien, yendo a la siguiente línea.

¿Alguien ha visto este problema, también? tienes una solución? El problema también ocurre en iTerm.

+1

Su sintaxis es atroz. A simple vista, no tienes un parche duro para cerrarlo todo (antes de $). Hay otros problemas Sugiero comenzar de nuevo. Aquí hay una guía para la coloración: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/ –

+1

Nota al margen: al personalizar el aviso, use '\ $' en lugar de un signo de dólar literal. Bash mostrará el carácter de solicitud apropiado ('$' para usuarios normales, '#' para root). –

+0

Otro consejo de estilo: no codifique las secuencias de escape (me doy cuenta de que la mayoría de la gente sí lo hace, pero no deberían). En su lugar, use 'tput' para emitir los códigos apropiados para el terminal actual, de modo que funcione apropiadamente con varios terminales. En particular, no generará nada si el terminal no admite los colores/estilos en su solicitud, en lugar de emitir caracteres que puedan confundir al terminal. por ejemplo, 'PS1 =" \ [$ (tput setaf 1) \] \ h: \ W \ [$ (tput sgr0) \] \ u \ $ "' mostrará el nombre de host y el directorio de trabajo en rojo. –

Respuesta

5

Este es un duplicado de Mac Terminal.app annoying bug - How to fix it? de StackOverflow. El problema es que debe rodear los caracteres de control de terminal entre corchetes \[ … \] para que el shell bash no los cuente al calcular la longitud del símbolo del sistema.

Dado que se trata de una pregunta de shell/terminal genérica y no específica de Mac OS X o Terminal, probablemente se debería migrar a StackOverflow y se debe haber duplicado la otra pregunta. (Sin embargo, no tengo privilegios para hacerlo.)

+3

Buena respuesta, pero creo que es aceptable dejarlo en Ask Different, ya que los usuarios de Apple con este problema tienen menos probabilidades de acudir a Stackoverflow por una respuesta. – conorgriffin

Cuestiones relacionadas