J'utilise le thème zsh intheloops
. Le thème ressemble à ceci quand aucun env virtuel. c'est actif
-- an empty line --
[sourabh@skynet] ~/Code/Django_apps/cope (master) ⚡
❯
et quand un env. c'est actif,
(env name)
[sourabh@skynet] ~/Code/Django_apps/cope (master) ⚡
❯
Est-ce que je peux le faire ressembler à ceci quand un virtualenv est actif
-- empty line --
(env name) [sourabh@skynet] ~/Code/Django_apps/cope (master) ⚡
❯
fichier .zsh-theme
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
local Host_color="green"
if [ -n "$SSH_CLIENT" ]; then
local Host_color="red"
fi
Prompt='
%{$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%} '
RPROMPT='${return_status}%{$reset_color%}'
ZSH_THEME_GIT_Prompt_PREFIX="%{$fg[yellow]%}(%{$fg[yellow]%}"
ZSH_THEME_GIT_Prompt_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_Prompt_DIRTY="%{$fg[yellow]%}) %{$fg[pink]%}⚡%{$reset_color%}"
ZSH_THEME_GIT_Prompt_CLEAN="%{$fg[grey]%})"
ZSH_THEME_GIT_Prompt_BEHIND_REMOTE="%{$fg_bold[Magenta]%}↓%{$reset_color%}"
ZSH_THEME_GIT_Prompt_AHEAD_REMOTE="%{$fg_bold[Magenta]%}↑%{$reset_color%}"
ZSH_THEME_GIT_Prompt_DIVERGED_REMOTE="%{$fg_bold[Magenta]%}↕%{$reset_color%}"
La manière dont l'invite est modifiée est définie dans le script bin/activate
à l'intérieur du répertoire de l'environnement virtuel. Ce fichier est créé par virtualenv
à partir d'un modèle. Malheureusement, le seul moyen de modification rapide fourni par le modèle est le préfixe (env name)
ou tout ce qui est défini avec --Prompt
.
Pour modifier l'invite comme vous le souhaitez, nous vous conseillons de contourner le paramètre de l'invite dans bin/activate
et de modifier la définition de Prompt
dans votre fichier de thème.
Commencez par ajouter les éléments suivants à votre.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
et ajoutez %(1V.(%1v).)
devant la deuxième ligne de la définition de Prompt
. Cela devrait alors ressembler à ceci:
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%} '
Si vous voulez de la couleur, vous pouvez ajouter %(1V.%{$fs_bold[yellow]%}(%1v)%{$reset_color%}.)
par exemple.
Explication:
virtenv_indicator
sera appelé à chaque fois avant la création de l'invite. Il vérifie si $VIRTUAL_ENV
est défini et non vide. Si tel est le cas, il définit le premier élément du tableau $psvar
sur $VIRTUAL_ENV
avec tout ce qui précède et incluant le dernier /
supprimé (comme basename $VIRTUAL_ENV
mais moins cher).
Dans la définition de Prompt
%(1V.(%1v).)
vérifie si le premier élément de $psvar
est défini et non vide (%(1V.true-text.false-text)
) et ajoute le contenu de cet élément plus quelques parenthèses ((%1v)
)
export VIRTUAL_ENV_DISABLE_Prompt=yes
désactive tout paramètre d'invite par bin/activate
scripts.
Oh-my-zsh
inclut maintenant un plugin virtualenv
, donc activez-le dans le config
.
Si vous utilisez prezto , vous pouvez trouver des instructions sur la façon d’afficher le virtualenv actif ici: https://github.com/sorin-ionescu/prezto/prezto/tree/master/modules/python # theming