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:
PS1con color yNPS1sin él.Tenga en cuenta el uso de
print -Ppara la expansión rápida,${#variable}para obtener la longitud de la cadena almacenada en variable yprintf "%Nd"para el relleno izquierdo conNespacios. Ambosprintyprintfson 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
PROMPTyRPROMPTindique 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