Você pode obter o efeito desejado (se bem que eu acerte) usando a função precmd
, que é executada toda vez que o prompt é exibido, para imprimir linhas adicionais acima do prompt.
Use por exemplo este código
precmd() {
LEFT="The time is"
RIGHT="$(date) "
RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
print $LEFT${(l:$RIGHTWIDTH::.:)RIGHT}
}
PS1="foo > "
RPS1="bar"
Explicação
-
$LEFT
e$RIGHT
mantêm as strings para o lado esquerdo e direito, resp. Você pode usar a saída do comando com a sintaxe$(...)
. -
$RIGHTWIDTH
é a diferença da largura do terminal atual (armazenada por zsh no parâmetro$COLUMNS
) e a largura da sequência da esquerda.$((...))
é para expressões matemáticas - A mágica vem com
${(l:$RIGHTWIDTH::.:)RIGHT}
, em que o parâmetro$RIGHT
é preenchido à esquerda (l
) por pontos (omite o último:.:
se você desejar espaços) para o comprimento de$RIGHTWIDTH
. - Imprima a linha adicional. Repita os comandos se quiser mais linhas.
-
PS1
eRPS1
são menores paraPROMPT
eRPROMPT
.
Demo
The time is............................................Fri, Sep 18, 2015 8:20:22 PM
foo > _ bar