Me gustaría un indicador zsh de varias líneas con una parte alineada a la derecha, que se verá así:
2.nate@host:/current/dir 16:00
->
Sé acerca de RPROMPT en zsh, pero tiene un mensaje alineado a la derecha opuesto a su mensaje normal, que está en la misma línea de texto que cuando escribe.
¿Hay alguna manera de tener una porción alineada a la derecha con la primera línea de un símbolo del sistema de varias líneas? Estoy buscando una directiva en la variable PS1 que dice "alinear ahora" o una variable que sea para PS1 lo que RPROMPT es PROMPT.
¡Gracias!
Así es como configuré esto ahora. Este enfoque no requiere ninguna manipulación de la secuencia de escape, pero hará que tenga dos variables diferentes para el indicador primario:
PS1
con color yNPS1
sin él.Tenga en cuenta el uso de
print -P
para la expansión rápida,${#variable}
para obtener la longitud de la cadena almacenada en variable yprintf "%Nd"
para el relleno izquierdo conN
espacios. Ambosprint
yprintf
son comandos integrados, por lo que no debería haber ningún impacto en el rendimiento.fuente
Definamos prompt con este diseño:
Para hacer esto, necesitaremos una función que nos diga cuántos caracteres toma una cadena dada cuando se imprime.
Necesitaremos otra función que tome dos argumentos e imprima una multa completa con estos argumentos en los lados opuestos de la pantalla.
Finalmente podemos definir una función que establece
PROMPT
yRPROMPT
indique a ZSH que la llame antes de cada solicitud, y establezca las opciones de expansión de solicitud apropiadas:Esto produce el siguiente mensaje:
#
si es raíz,%
si no; verde en caso de éxito, rojo en caso de error.Puede encontrar detalles adicionales en el mensaje de varias líneas: el ingrediente que falta y el código completo en este resumen .
fuente