Veja minha edição abaixo, isso não é totalmente uma cópia de Shell prompt customização e comportamento cmd
Minha função reverse-search
na CLI está quebrada e não sei como corrigi-la de volta ...
Quando eu clico em ctrl + r e procuro um comando que eu fiz antes, ache ele e pressione a tecla de seta para a direita para usá-lo, a saída está quebrada. Aqui está um exemplo:
# I reverse-searched the word "test" then pressed right arrow
yoshiji@x1carbon:~/path/to/git/folder (master) $ch)'test': rake test
# ^^^^^^^^^^ weird output
# ^ cursor right there
Ele também "desloca" meu cursor para uma posição diferente. Se eu pressionar enter, o comando direito é executado ( rake test
neste caso), então significa que o texto exibido não é o mesmo que o que é realmente executado.
Eu sei que isso provavelmente está relacionado ao meu PS1
export no meu ~/.bashrc
, então aqui estão as últimas linhas deste arquivo:
# Git branch in prompt.
git_branch() {
branch=$(__git_ps1 2> /dev/null)
if [ "$branch" = " (master)" ]; then
echo -e "3[33m${branch}3[00m" # yellow
elif [ "$branch" = "" ]; then
echo -e "3[90m (no git)3[00m" # red
else
echo -e "3[32m${branch}3[00m" # green
fi
}
PS1='\u@\h:\w$(git_branch) \$ '
Isso é algo que escrevi para exibir o ramo git em laranja (se master
branch) ou então em verde (ou no git
em cinza).
Vocês têm alguma ideia do que está causando esse comportamento estranho?
Editar: Este é um problema diferente do possível duplicar da maneira que estou usando echo -e "some string"
para retornar uma string com cor + nome da ramificação git da função git_branch()
. Usar echo -e
não escapa dos caracteres \[
e \]
(tente você mesmo em sua CLI: echo -e "\[3[33m\]test"
).
Idealmente, gostaria de manter essas cores condicionais com base na presença & nome (cinza se não houver ramo, laranja se mestre, mais verde).