zsh: Prompt colorido dinamicamente
Dica publicada em Linux / Software
zsh: Prompt colorido dinamicamente
No zsh existe uma função built-in chamada 'precmd' que sempre executa uma ação antes de exibir o prompt para o usuário, e uma forma de uso bem interessante para ela é a seguinte:
Desta forma a precmd altera dinamicamente o conteúdo da variável PROMPT imprimindo na tela cada caractere com cores diferentes conforme a figura a seguir: Para usá-la, basta adicionar a função em seu '.zshrc' e pronto!
Mais informações?
man zsh
$ man perl
Falou!
PS.: Acabei encontrando na net uma versão que usa somente comandos do próprio do zsh:
E que faz exatamente a mesma coisa que a primeira! =]
function precmd {
PROMPT=$(print -Pn "%n > [%~] :" | perl -e 'print("%{\e[" => int(rand(7)) + 31 => ";1m%}" => $i) while (read(STDIN, $i, 1)); print("%{\e[0m%} ");')
}
PROMPT=$(print -Pn "%n > [%~] :" | perl -e 'print("%{\e[" => int(rand(7)) + 31 => ";1m%}" => $i) while (read(STDIN, $i, 1)); print("%{\e[0m%} ");')
}
Desta forma a precmd altera dinamicamente o conteúdo da variável PROMPT imprimindo na tela cada caractere com cores diferentes conforme a figura a seguir: Para usá-la, basta adicionar a função em seu '.zshrc' e pronto!
Mais informações?
man zsh
$ man perl
Falou!
PS.: Acabei encontrando na net uma versão que usa somente comandos do próprio do zsh:
function precmd {
eval toresbe="${(j:%%\{\\e\[1\;$(((RANDOM % 7) + 31))m%%\}:)${(s::)$(print -P 'X%n@%m:%~')}}%%#"
PROMPT="$(print -P ${toresbe#?} %%{\\e\[0m%%})"
}
eval toresbe="${(j:%%\{\\e\[1\;$(((RANDOM % 7) + 31))m%%\}:)${(s::)$(print -P 'X%n@%m:%~')}}%%#"
PROMPT="$(print -P ${toresbe#?} %%{\\e\[0m%%})"
}
E que faz exatamente a mesma coisa que a primeira! =]