2012-05-15 8 views
13

Esta es una pregunta rara que no he podido encontrar una buena respuesta con Google (por supuesto, siempre existe la posibilidad de que simplemente no lo haga). En mi mensaje bash, si coloreo una parte del mensaje, cuando pulso 'arriba' para ir a un comando anterior, no puedo ir al comienzo de la línea después de que haya pasado una cierta cantidad de caracteres (específicamente 31) .Problema con el historial del prompt de Bash

Mi indicador bash actual es la siguiente: (los colores se definen antes en mi .bashrc)

PS1="[\[email protected]$cyan\h$NC \w] " 

Pero si cambio a esto:

PS1="[\[email protected]\h \w] " 

Ya no me impide ir al comienzo de la linea

La parte extraña, es visualmente, cuando toco mi inicio para ir al comienzo de la línea (o uso de las teclas de flecha) detiene 11 caracteres en la cadena, pero si la edito desde allí, edita comenzando al principio de la línea.

¿Alguien sabe por qué esto podría estar pasando? Me gustaría usar los colores en mi mensaje como lo hago con la administración del servidor y los colores son la forma en que diferencio mis cuadros de un vistazo.

Respuesta

25

Las secuencias que no son de impresión, como los códigos de color, deben estar rodeadas por \[ y \], por lo que sus longitudes no se cuentan como parte de la longitud del aviso.

+1

[Ejemplos] (https://github.com/l0b0/tilde/blob/9161937d6173e65e81de145bbc7edbbb074e99e5/.bashrc#L92) – l0b0

+0

¡Eso fue exactamente, gracias! –

+0

He tenido este molesto problema durante meses. ¡Gracias! +1 – jweyrich

Cuestiones relacionadas