es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo separar los colores en el archivo .zshrc?

Estoy tratando de establecer el color del nombre de la rama de git y la ruta en mi terminal, pero mantener el resto del texto estándar en el tema. El problema que tengo es que pude cambiar el color de la rama de git, pero ahora también cambia el color de todo lo que escribo en la terminal al mismo color que la rama de git. Creo que el problema es que en mi comando de prompt, el texto no está escapado correctamente. ¿Cómo puedo solucionar esto?

Encontrar y establecer el nombre de la rama si está en un repositorio de git.

function git_branch_name()
{
branch=$(git symbolic-ref HEAD 2> /dev/null | awk ‘BEGIN{FS=”/”} {print $NF}’)
if [[ $branch == “” ]];
then
:
else
echo ‘- (‘$branch’)’
fi
}

Habilitar la sustitución en el prompt.

setopt prompt_subst

COLOR_DIR=’\e[1;32m’
COLOR_GIT=’\e[38;5;39m’

Configuración para el prompt. Sinónimo de PS1.

prompt=’%2/ ${COLOR_GIT}$(git_branch_name) > ‘ (Creo que el problema está aquí)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de que el color de todo lo que escribas en la terminal cambie al mismo color que la rama de git, debes escapar correctamente los códigos de color en la definición del promp. Esto se puede hacer encerrando los códigos de color entre %{ y %} en la definición del promp, como se muestra a continuación:

    prompt='%2/ %{%F{39}%}$(git_branch_name) %{$reset_color%}> '

    En la definición del promp anterior, %{%F{39}%} y %{$reset_color%} se utilizan para rodear el nombre de la rama de git con el color deseado (código de color 39 en este ejemplo) y para restablecer el color a su valor predeterminado después.

    Entonces, la configuración final de tu promp se vería así:

    # Encontrar y establecer la variable del nombre de la rama si está en un repositorio git.
    function git_branch_name()
    {
      branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
      if [[ $branch == "" ]];
      then
        :
      else
        echo '- ('$branch')'
      fi
    }
    
    # Habilitar substitución en el promp.
    setopt prompt_subst
    
    COLOR_DIR=$'\e[1;32m'
    COLOR_GIT=$'\e[38;5;39m'
    
    # Configuración del promp. Sinónimo de PS1.
    prompt='%2/ %{%F{39}%}$(git_branch_name) %{$reset_color%}> '
    

Comments are closed.