Despues del exito de Indicadores (prompt) para el intérprete de comandos Bash llega la version para Zsh.
Definición en ~/.zshrc:
# Git support for prompt
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
export PROMPT="
%{$fg[white]%}(%D{%Y-%m-%d} %*) <%(?.%?.%F{red}%?%f)> [%~] $program %{$fg[default]%}\$vcs_info_msg_0_
%{$fg[cyan]%}%m %#%{$fg[default]%} "
Resultado:
(2019-12-03 13:59:19) <130> [~/git/repositorio] (git)-[RamaGit]-
MyHostname %
Aunque el prompt no esta mal se nota que el presupuesto no es el mismo que el de la primera version, de ahi que el resultado no se vea igual de bien que en la version para Bash.
Ya se sabe, segundas partes nunca fueron buenas.
Finalmente se encontró el presupuesto para mejorar los efectos especiales y este es el remake:
export PATH=$HOME/bin:$PATH
export CLICOLOR=1
# Git support for prompt
# zstyle ':vcs_info:git*' formats "%{$fg[grey]%}%s %{$reset_color%}%r/%S%{$fg[grey]%} %{$fg[blue]%}%b%{$reset_color%}%m%u%c%{$reset_color%} "
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' unstagedstr '!'
zstyle ':vcs_info:*' stagedstr '+'
zstyle ':vcs_info:git*' formats "%F{blue}%r/%S%} %F{yellow}%b%f%m%F{red}%u%f%F{green}%c%f"
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
export PROMPT="
%F{green}%D{%Y-%m-%d} %D{%H:%M:%S}%f [%F{magenta}%~%f] \$vcs_info_msg_0_
%F{cyan]%}%n%f@%F{blue}%m%f%} %(?..<%K{red}%F{yellow}%?%f%k> )%# "
export RPROMPT=
Y este el resultado (aprox):
2022-08-31 12:32:21 [~/workspaces/proyecto] repositorio_git/. RamaGit
user@nombre_equipo % error
zsh: command not found: error
2022-08-31 12:32:24 [~/workspaces/proyecto] repositorio_git/. RamaGit
user@nombre_equipo <127> %
Por último, además de mostrar la existencia de cambios presentados o no (traducción libre de staged) a git, añado un bloque para mostrar también la presencia de ficheros no registrados por git (untracked).
export CLICOLOR=1 # Git support for prompt zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' unstagedstr '!' zstyle ':vcs_info:*' stagedstr '+' zstyle ':vcs_info:git*' formats "%F{blue}%r/%S%} %F{yellow}%b%f%m%F{red}%u%f%F{green}%c%f" autoload -Uz vcs_info precmd_vcs_info() { vcs_info } precmd_functions+=( precmd_vcs_info ) setopt prompt_subst ### Display the existence of files not yet known to VCS ### git: Show marker (*) if there are untracked files in repository # Make sure you have added staged to your 'formats': %c zstyle ':vcs_info:git*+set-message:*' hooks git-untracked +vi-git-untracked(){ if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \ git status --porcelain | grep '??' &> /dev/null ; then # This will show the marker if there are any untracked files in repo. # If instead you want to show the marker only if there are untracked # files in $PWD, use: #[[ -n $(git ls-files --others --exclude-standard) ]] ; then hook_com[staged]+='%K{red]%}%F{black}*%f%k' fi } export PROMPT=" %F{green}%D{%Y-%m-%d} %D{%H:%M:%S}%f [%F{magenta}%~%f] \$vcs_info_msg_0_ %F{cyan]%}%n%f@%F{blue}%m%f%} %(?..<%K{red}%F{yellow}%?%f%k> )%# " export RPROMPT=