web-dev-qa-db-fra.com

Editer le thème ZSH pour le nom de virtualenv

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%}"
3
Sourabh

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.

6
Adaephon

Oh-my-zsh inclut maintenant un plugin virtualenv, donc activez-le dans le config.

2
Ivan Mesic

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

0
creimers