web-dev-qa-db-ja.com

virtualenv nameのZSHテーマを編集

Zshテーマintheloopsを使用します。仮想環境がない場合、テーマは次のようになります。アクティブです

-- 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
Sourabh

プロンプトの変更方法は、仮想環境ディレクトリ内のスクリプトbin/activateで定義されています。このファイルは、テンプレートからvirtualenvによって作成されます。残念ながら、テンプレートによって提供されるプロンプト変更の唯一の方法は、(env name)または--Promptで設定されたものを先頭に追加することです。

必要に応じてプロンプトを変更するには、bin/activateのプロンプトの設定を回避し、テーマファイルのPromptの定義を変更することをお勧めします。

最初に次をyour.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

Promptの定義の2行目の前に%(1V.(%1v).)を追加します。これは次のようになります。

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
Adaephon

Oh-my-zshにはvirtualenvプラグインが含まれるようになったので、configで有効にするだけです。

2
Ivan Mesic

prezto を使用している場合は、アクティブなvirtualenvを表示する方法に関する指示をここで見つけることができます: https://github.com/sorin-ionescu/prezto/tree/master/modules/python#theming

0
creimers