You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

weight title date draft summary categories tags
4 Configurar el prompt en Zshell 2025-07-15T16:40:28+0200 false Reconfiguramos el prompt de zsh para mostrar la versión de Python en los entornos virtuales
pildoras
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:

# 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:

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:

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 "