Отредактируйте тему ZSH для имени virtualenv

Я использую 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%}"
3
задан 17 October 2013 в 14:03

3 ответа

То, как подсказка изменяется, определяется в сценарии 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 сценарии.

6
ответ дан 17 October 2013 в 14:03

Если вы используете prezto , вы можете найти инструкции по отображению активного virtualenv здесь: https://github.com/sorin-ionescu/prezto/tree/master/ модули / Python # Тематизация

0
ответ дан 17 October 2013 в 14:03

Oh-my-zsh теперь включает в себя плагин virtualenv, так что просто включите его в config.

0
ответ дан 17 October 2013 в 14:03

Другие вопросы по тегам:

Похожие вопросы: