como posso impedir que comandos de múltiplas linhas estraguem a posição do meu cursor ao percorrer o histórico?

1

Relacionados: Por que meu prompt do bash está recebendo bug quando eu navego no histórico?

O histórico parece com:

 1831  git remote -v
 1832  gs 
 1833  gd 
 1834  gc -am 'moved apsum options etc to their own file
set routes to allow cors
changes to the apsum pull ' 
 1835  git push
 1836  reset
 1837  history
 1838  __git_ps1
 1839  reset
 1840  history
 1841  Kill 99894
 1842  history

g* são todos os aliases dos comandos git. Quando eu rolar pela história está tudo bem, até chegar ao número 1833 (sublinhado denota a posição do cursor):

$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_

Eu percebi que era por causa de caracteres não imprimíveis no meu PS1, mas coloquei um par entre todos:

PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"

Eu senti falta de algo? Isso é algo que acontece quando você tem mensagens de confirmação de múltiplas linhas?

editar : minha solução final é muito grande para colocar em um comentário:

export PS1="\n\[3[38;5;246m\]\u@\[$(tput sgr0)\]\[3[38;5;245m\]\h\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]\[3[38;5;28m\]\w\[$(tput sgr0)\]\[3[38;5;15m\]\[$(tput sgr0)\]\[3[38;5;2m\]'__git_ps1'\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]\[3[38;5;90m\]\t\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]\[3[38;5;232m\]\[$(tput sgr0)\]\[3[38;5;15m\] \[$(tput sgr0)\]\n\[$(tput sgr0)\]\[3[38;5;0m\]\$\[$(tput sgr0)\] "

O que parece uma loucura, mas produz um bom prompt com o branch git e as cores fáceis de ler em um fundo claro (que você não pode ver aqui):

collumj@machineName ~ (dev) 17:35:42  
$ 

Muito obrigado pelo link .

    
por jcollum 03.11.2015 / 23:13

1 resposta

2

"Tudo" está entre colchetes, mas há vários incógnitas. Como a coluna é deslocada para a direita, isso implica que algo está enviando texto que o bash não percebe.

Embora seja possível que uma incompatibilidade de localidade possa fazer isso, você provavelmente notaria que .

Eu verificaria e garantiria que sua configuração não esteja usando o recurso de cor de __git_ps1 . De acordo com o Fedora que invoca um script chamado git-prompt.sh , que por sua vez (se você tiver definido GIT_PS1_SHOWCOLORHINTS ) pode enviar seqüências de escape que podem confundir bash com relação à coluna real.

    
por 04.11.2015 / 03:12