Como o prompt é alterado é definido no script bin/activate
dentro do diretório do ambiente virtual. Este arquivo é criado por virtualenv
de um modelo. Infelizmente, a única maneira de modificação rápida fornecida pelo modelo é prefixar (env name)
ou o que for definido com --prompt
.
Para modificar o prompt da maneira que você quer, sugiro contornar a configuração do prompt em bin/activate
e modificar a definição de PROMPT
em seu arquivo de tema.
Primeiro, adicione o seguinte ao seu .zsh-theme
(ou .zshrc
)
export VIRTUAL_ENV_DISABLE_PROMPT=yes
function virtenv_indicator {
if [[ -z $VIRTUAL_ENV ]] then
psvar[1]=''
else
psvar[1]=${VIRTUAL_ENV##*/}
fi
}
add-zsh-hook precmd virtenv_indicator
e adicione %(1V.(%1v).)
na frente da segunda linha da definição de PROMPT
. Deveria então ficar assim:
PROMPT='
%(1V.(%1v).)%{$fg_bold[grey]%}[%{$reset_color%}%{$fg_bold[${host_color}]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%}]%{$reset_color%} %{$fg_bold[blue]%}%10c%{$reset_color%} $(git_prompt_info) $(git_remote_status)
%{$fg_bold[cyan]%}❯%{$reset_color%} '
Se você quiser alguma cor, adicione %(1V.%{$fs_bold[yellow]%}(%1v)%{$reset_color%}.)
, por exemplo.
Explicação :
virtenv_indicator
será chamado toda vez antes que o prompt seja criado. Verifica se $VIRTUAL_ENV
está definido e não está vazio. Nesse caso, ele define o primeiro elemento da matriz $psvar
como $VIRTUAL_ENV
com tudo antes e incluindo o último /
removido (como basename $VIRTUAL_ENV
, mas menos caro)
Na definição de PROMPT
%(1V.(%1v).)
verifica se o primeiro elemento de $psvar
está definido e não vazio ( %(1V.true-text.false-text)
) e adiciona o conteúdo desse elemento mais alguns parênteses ( (%1v)
)
export VIRTUAL_ENV_DISABLE_PROMPT=yes
desativa qualquer configuração de prompt por bin/activate
scripts.