A linha é sobrescrita em vez de continuar na mesma linha

0

Eu tenho um problema com o prompt do bash. Quando eu digito um comando que excede o comprimento da largura da tela, ele continua na mesma linha e sobrescreve o que escrevi, e depois continua na linha 2 depois.

Esta é minha PS1:

PS1="\$(git_prompt) ${BIWhite}\W${Color_Off} → "

As variáveis

BIWhite='\e[1;97m'
Color_Off='\e[0m'

E o script para git_prompt:

git_prompt() {
local g="$(__gitdir)"
if [ -n "$g" ]; then
    local MINUTES_SINCE_LAST_COMMIT='minutes_since_last_commit'
    if [ "$MINUTES_SINCE_LAST_COMMIT" -gt 30 ]; then
        local COLOR=${BRed}
    elif [ "$MINUTES_SINCE_LAST_COMMIT" -gt 10 ]; then
        local COLOR=${BIYellow}
    else
        local COLOR=${BGreen}
    fi
    local SINCE_LAST_COMMIT="${COLOR}$(minutes_since_last_commit)m${Color_Off}"
    # The __git_ps1 function inserts the current git branch where %s is
    local GIT_PROMPT='__git_ps1 "(%s|${SINCE_LAST_COMMIT})"'
    echo ${GIT_PROMPT}
fi}

Aprecie toda a ajuda! Obrigado!

    
por Christian 19.11.2011 / 11:55

1 resposta

1

Caracteres que não movem o cursor devem estar entre \[ e \] no PS1, caso contrário, o bash acha que o prompt é mais longo do que realmente é. E devido à forma como esta variável é usada, você não pode ter uma função que emite texto colorido, pois você não pode escapar corretamente.

Veja o link para mais explicações.

    
por geirha 19.11.2011 / 12:50

Tags