Eu estava ficando um pouco cansado dos meus erros no Bash de bagunçar o PS1. Por exemplo, eu executaria um comando, como ls
, e enquanto ele estiver em execução, comece a digitar o próximo comando, como echo
, e o typeahead de echo
apareceria antes do PS1, como
/$ls
...
ec/$echo
(aqui /$
é o PS1
). Minha solução para isso foi adicionar \r
à frente do PS1, para que ele fosse limpar a linha primeiro.
Isso parece funcionar razoavelmente bem, mas parece haver um problema estranho. No meu .inputrc
, eu tenho
"\ep": history-search-backward
para me deixar digitar M-p
para retroceder (iTerm 2 maps Opção para escapar corretamente)
O problema é que às vezes quando eu digito algumas coisas e depois M-p
para obter o comando anterior, eu faço um C-u C-k
para limpar a linha, o primeiro caractere fica e se torna parte do PS1
( é deletado da linha executada, mas é mostrado no PS1). Não acontece quando eu executo o comando, mas sempre que eu bato esse item no histórico, mesmo com a seta para cima regular, esse primeiro caractere fica preso lá novamente. Isso só parece acontecer com comandos que são de um certo tamanho. Não importa se o \r
realmente limpa qualquer texto para que isso aconteça.
Estou acertando um bug estranho no bash e / ou no iTerm? Está adicionando \r
à frente de PS1
da maneira correta de limpar o lixo antes?