Eu gostaria de um prompt zsh de várias linhas com uma parte alinhada à direita, que será algo como isto:
2.nate@host:/current/dir 16:00
->
Eu sei sobre o RPROMPT no zsh, mas que possui um prompt alinhado à direita, oposto ao prompt normal, que está na mesma linha de texto da sua digitação.
Existe uma maneira de ter uma parte alinhada à direita na primeira linha de um prompt de comando com várias linhas? Estou procurando por uma diretiva na variável PS1 que diga 'alinhar agora' ou uma variável que seja para PS1 o que RPROMPT é PROMPT.
Obrigado!
Aqui está como eu configurei essa coisa agora. Essa abordagem não requer nenhuma manipulação de sequência de escape, mas fará com que você tenha duas variáveis diferentes para o prompt primário:
PS1
com coloração eNPS1
sem.Observe o uso de
print -P
para expansão rápida,${#variable}
para obter o comprimento da string armazenada em variável eprintf "%Nd"
para preenchimento à esquerda comN
espaços. Ambosprint
eprintf
são comandos internos, portanto, não deve haver desempenho atingido.fonte
Vamos definir prompt com este layout:
Para fazer isso, precisaremos de uma função que nos diga quantos caracteres uma determinada string leva quando impressa.
Precisamos de outra função que use dois argumentos e imprima uma multa completa com esses argumentos nos lados opostos da tela.
Finalmente, podemos definir uma função que define
PROMPT
eRPROMPT
, instruir o ZSH para chamá-la antes de cada prompt, e definir opções de expansão de prompt apropriadas:Isso produz o seguinte prompt:
#
se raiz,%
se não; verde em caso de sucesso, vermelho em caso de erro.Você pode encontrar detalhes adicionais no prompt de várias linhas: O ingrediente que falta e o código completo nesta lista .
fonte