Configurar El Prompt en Zshell

Configurar el prompt de zsh

Queremos modificar el prompt para que además de mostrar el entorno virtual de python (cuando haya uno activo) muestre también la versión de Python que usa ese venv

Para añadir la info de git a mi prompt de zsh ya estoy usando el paquete zsh git prompt

Deshabilitar el prompt generado por pyenv

En primer lugar, como tenemos instalado pyenv necesitamos inhibir el comportamiento por defecto de pyenv que muestra el nombre del entorno virtual en el prompt. Para ello, en el fichero ~/.zshrc añadimos las siguientes lineas antes de la activación de pyenv:

1
2
3
# disable prompt modification by pyenv
# I'm using virtualenv plugin for prompt customization
export PYENV_VIRTUALENV_DISABLE_PROMPT=1

Generamos una función que nos devuelva el venv y la versión de python.

Podemos instalar el plugin de zsh: virtualenv que sirve justamente para instalar una función que devuelve el virtualenv para usarlo en el prompt, pero como de todas formas la tenemos que cambiar pongo aquí el texto completo de la función, ya modificada para añadir la versión de Python:

1
2
3
4
5
6
7
function virtualenv_prompt_info(){
  [[ -n ${VIRTUAL_ENV} ]] || return
  echo "${ZSH_THEME_VIRTUALENV_PREFIX=[}${VIRTUAL_ENV:t:gs/%/%%}-${$(python -V)#* }${ZSH_THEME_VIRTUALENV_SUFFIX=]}"
}

# disables prompt mangling in virtual_env/bin/activate
export VIRTUAL_ENV_DISABLE_PROMPT=1

Editamos el prompt en nuestro tema de zsh favorito

Yo estoy usando el tema gnzh, pero viene a ser lo mismo en cualquier tema. En mi fichero del tema el prompt queda configurado con las siguientes lineas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
local return_code="%(?..%F{red}%? ↵%f)"

local user_host="${PR_USER}%F{cyan}@${PR_HOST}"
local current_dir="%B%F{blue}%~%f%b"
local git_branch='$(git_super_status)'
local venv_prompt='$(virtualenv_prompt_info)'

PROMPT="╭─${user_host} ${current_dir} $(ruby_prompt_info) ${venv_prompt} ${git_branch}
╰─$PR_PROMPT "
RPROMPT="${return_code}"

ZSH_THEME_GIT_PROMPT_PREFIX="‹"
ZSH_THEME_GIT_PROMPT_SUFFIX="› %f"
ZSH_THEME_RUBY_PROMPT_PREFIX="%F{red}‹"
ZSH_THEME_RUBY_PROMPT_SUFFIX="›%f"
ZSH_THEME_VIRTUALENV_PREFIX="%F{red}("
ZSH_THEME_VIRTUALENV_SUFFIX=")%f "
0%