Pregunta

He hecho algo para romper mi Prompt de Bash en OS X (10.5.7) Terminal.

Este es el PS1 que había configurado:

PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '

Por lo que yo puedo decir que tengo los comandos de color escapar correctamente. Sin embargo, cuando me desplazarse hacia arriba y hacia abajo en mi historial de comandos A menudo recibo problemas de ajuste de línea si los comandos históricos envuelven en varias líneas.

Simplifiqué mis instrucciones para lo siguiente:

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '

Y todavía veo algo como:

localhost:~/Library/Application Support/Firefox/Profiles/knpmxpup.Defau
lt/extensions/{1A2D0EC4-75F5-4c91-89C4-3656F6E44B68}$ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E                                           export PS1="\[
\e[1;32m\]\h\[\e[0m\]:                                          cd Library/Appl
ication\ Support/

También he intentado \033 en lugar de \e. Acabo incluido PS2 allá arriba para obtener información, no he cambiado desde que la instalación por defecto. Si elimino por completo los códigos de color a continuación, todo funciona bien, alguna idea?

¿Fue útil?

Solución

Los problemas en el ajuste de línea Bash no son nada nuevo. Consulte la lista de correo, tal vez hay otro error con respecto a este.

No se puede hacer mucho más que el etiquetado de caracteres no imprimibles, el resto debe ser realizada por el código que provocó.

Otros consejos

Ahora estoy usando este PS1 con buenos resultados:

green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "

Desplazamiento a través de mi historial de comandos aparece para manejar la línea envuelve ahora. Sin embargo, mientras tanto, ya que esta pregunta se hizo también he actualizado mi OS X 10.6.3 a

Este hilo stackOverflow parece relevante. Como alguien señalar a este hilo, la Bash preguntas frecuentes en mywiki.wooledge.org explica cómo citar correctamente los códigos de color en indicaciones del golpe ( FAQ 53 ), y la invocación adecuada de colores terminales ( FAQ 37 ).

Parece que ha escapado correcta y secuencias adjunto.

Una solución que utilizo de todos modos para añadir un '\ n' al final. Me resulta más clara y reducir cualquier problema con los problemas de embalaje. Al final exacto de mi PS1 es:

'\n\[\033[0;30m\]$\[\033[0m\]

excelente COMO probablemente sabe:

Bash Prompt

Esta es la mía: es el mejor que he encontrado, pero el sitio donde originalmente encontré que le faltaba un carácter de escape, lo que lleva a la cuestión de ajuste de línea. Yo vanamente con él y finalmente lo consiguió trabajo. Muestra su usuario, ruta, y la información de la rama con un buen contraste, el color se refiere.

export PS1='\[\e[1;37m\]\[\e[1;32m\]\u\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]|\[\e[0;39m\]\$'

Además, agregue

GIT_PS1_SHOWDIRTYSTATE=true

Para mostrar un marcador cuando una rama es "sucio" (cambios que se comprometan existir)

export HISTCONTROL=ignoredups

También es útil para ignorar los duplicados cuando se desplaza a través de la historia bash.

bind "set completion-ignore-case on" 

también ayuda.

Por último,

shopt -s checkwinsize

Puede ser útil en OSX si los problemas persisten.

Me di cuenta de que hay algunos problemas con el indicador de la posición del cursor, incluso si no hay caracteres especiales en la variable de entorno o PS1 PROMPT.

Si la salida que un archivo que no tiene un caracter de fin de línea al final. Se va a confundir el símbolo.

Puede reproducir este haciendo:

curl https://gist.githubusercontent.com/martinos/d4aa0a7d4d752b0d0d9f/raw/3198c39f84a080c44227a084a19fb3a0bb661ee5/wrapping_issue.txt

y pulsando el botón Arriba tecla varias veces y verá que el símbolo se confunden.

Se puede ver un ejemplo de esto en acción:

https://asciinema.org/a/9mtjhi9dib6md4ocsbw210cca

Cuando esto ocurre, sólo tiene que pulsar el símbolo <CTRL-C> y va a volver a la normalidad.

Tenga en cuenta que ZShell no tiene este problema.

En el futuro, esto es lo que yo uso:

export PS1="\[\033[0;31m\][\u@Project:\w]$\[\033[0m\] "

Esto mostraría mi intérprete de comandos como:

[ec2-user@Project:~]$

Me ayuda a distinguir entre los sitios en vivo y dev.

'shopt -s checkwinsize también funciona para envolver Cygwin problemas también

Si está utilizando el truco "\e]2;titlebar\a" barra de título, asegúrese de escapar de eso también: "\[\e]2;titlebar\a\]"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top