Etiqueta: prompt

  • Indicador (prompt) para el intérprete de comandos Zsh

    Configuración del prompt Zsh para mostrar ficheros con cambios o no registrados en los directorios parte de un repositorio git.

    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 PROMPT="
    %F{green}%D{%Y-%m-%d} %D{%H:%M:%S}%f \$vcs_info_msg_0_%F{cyan]%}%n%f [%F%F{magenta}%~%f%f%}] %(?..<%K{red}%F{yellow}%?%f%k> )%# "

    export RPROMPT=
  • Indicadores (prompt) para el intérprete de comandos Bash

    Estos son mís «indicadores del intérprete de comandos» (o como se pueda traducir prompt) utilizados más habitualmente:

    Para mi usuario sin privilegios:

    0(0)[09:04]usuario@host[~]$

    Definición en ~/.bashrc:

    export PS1='\[\033[38;5;169m\]$?\[\033[38;5;247m\](\j)\[\033[38;5;6m\][\A]\[\033[0m\]\[\033[38;5;141m\]\u\[\033[35m\]@\[\033[1;32m\]\h\[\033[34m\][\w]\[\033[0m\]\$ '

    Para root:

    0(0)[09:05]root@host[~]$

    Definición en ~/.bashrc:

    export PS1='\[\033[38;5;169m\]$?\[\033[38;5;247m\](\j)\[\033[38;5;6m\][\A]\[\033[0m\]\[\033[48;5;196;1;32m\]\u\[\033[0m\]\[\033[38;5;141m\]@\[\033[1;32m\]\h\[\033[34m\][\w]\[\033[0m\]\$ '

    Ambos indicadores tienen los mismos siguientes campos:

    1. En magenta el código de resultado devuelto por el último comando ejecutado.
    2. En gris entre paréntesis el número de trabajos en segundo plano asociados al intérprete de comandos.
    3. En celeste entre corchetes la hora actual del sistema.
    4. En morado, o amarillo sobre rojo para root, el nombre del usuario.
    5. En verde el nombre del sistema.