Я использую zsh theme intheloops
. Тема выглядит так, когда нет виртуального env. активен
-- an empty line --
[sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
и когда env. активен,
(env name)
[sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
Могу ли я сделать так, чтобы какой-то virtualenv был активен
-- empty line --
(env name) [sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
.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%}"
То, как подсказка изменяется, определяется в сценарии bin/activate
в каталоге виртуальной среды. Этот файл создается virtualenv
из шаблона. Unfortunatelly, единственный способ быстрой модификации, обеспеченной шаблоном, предварительно ожидают (env name)
или независимо от того, что установлено с --prompt
.
Для изменения подсказки в пути, Вы хотите, я предложил бы обойти установку подсказки в bin/activate
и измените определение PROMPT
в Вашем файле темы.
Сначала добавьте следующее к Вашему.zsh-theme
(или .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
и добавьте %(1V.(%1v).)
перед второй строкой определения PROMPT
. Это должно затем быть похожим на это:
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%} '
Если Вы хотите некоторый цвет, Вы могли бы добавить %(1V.%{$fs_bold[yellow]%}(%1v)%{$reset_color%}.)
например.
Объяснение:
virtenv_indicator
будет назван каждый раз, прежде чем подсказка будет создана. Это проверяет если $VIRTUAL_ENV
установлен и не пустой. Если так, это устанавливает первый элемент $psvar
массив к $VIRTUAL_ENV
со всем прежде и включая последнее /
удаленный (как basename $VIRTUAL_ENV
но менее дорогой)
В определении PROMPT
%(1V.(%1v).)
проверки, если первый элемент $psvar
установлен и не пустой (%(1V.true-text.false-text)
) и добавляет содержание этого элемента плюс некоторые круглые скобки ((%1v)
)
export VIRTUAL_ENV_DISABLE_PROMPT=yes
отключает любую установку подсказки bin/activate
сценарии.
Если вы используете prezto , вы можете найти инструкции по отображению активного virtualenv здесь: https://github.com/sorin-ionescu/prezto/tree/master/ модули / Python # Тематизация
Oh-my-zsh
теперь включает в себя плагин virtualenv
, так что просто включите его в config
.