o cursor pára no meio após pressionar a tecla home

3

No terminal eu mudei meu PS1.

Acho que isso pode estar causando problemas ao permitir que eu aperte o botão "Página inicial". Normalmente, ao apertar o botão home, é suposto retornar ao primeiro caractere na primeira linha

meu arquivo de prompt: link

# Setup color Variables
#############################
STARTFGCOLOR='\e[0;36m'
STARTBGCOLOR="\e[0;32m"
ENDCOLOR="\e[0m"

export PS1="\e[0;36m\n[ $STARTFGCOLOR$STARTBGCOLOR\u@\h\e[01;35m \w $STARTBGCOLOR$STARTFGCOLOR]\e[0;32m\n\e[0;35m]$ $ENDCOLOR"

Sempre que eu refaz o último comando (pressionando o botão up no terminal) e pressiono o botão home, ele irá parar no meio do caminho. E então os caracteres não serão lidos corretamente

Alguém mais tem esse problema?

    
por chrisjlee 29.08.2011 / 18:59

1 resposta

5

Você tem que envolver cada código de cor em colchetes com escape como este: \[colorcode\] .

Exemplo:

STARTFGCOLOR='\[\e[0;36m\]'
STARTBGCOLOR="\[\e[0;32m\]"
ENDCOLOR="\[\e[0m\]"

Explicação: o bash precisa calcular o tamanho do prompt para que ele possa posicionar o cursor corretamente quando você pressionar home. Por alguma razão, o bash não considera os códigos de cores como não ocupando espaço na tela. Você tem que explicitamente dizer bash que os códigos de cores não ocupam espaço por wraping-los em colchetes de escape.

Veja aqui para mais explicações.

    
por lesmana 29.08.2011 / 19:25