Percebi que muitas vezes, quando estou pesquisando o histórico reverso na linha de comando via CTRL+ r, se eu quiser editar o comando, às vezes o cursor salta para a posição errada quando pressiono uma tecla de seta ou digito CTRL+ aou CTRL+ e. A posição específica para a qual ele salta parece ser um deslocamento igual ao tamanho do meu prompt de linha de comando, conforme definido em PS1
.
Isso causa dificuldade porque a localização real do cursor é diferente daquela renderizada na tela; edições futuras no comando serão renderizadas como se o cursor estivesse onde ele saltou, mas o comando real mantém a localização correta sem qualquer salto.
Alguém sabe o que está causando isso ou como consertar?
EDIT: Se eu adicionar uma nova linha no final, PS1
o problema parece desaparecer. No entanto, eu preferiria inserir o comando na mesma linha do prompt.
Responder1
Isso geralmente é causado por comandos em seu histórico com mais de uma linha. Quando você seleciona um item mais curto do histórico, ele não parece levar em consideração a largura do prompt ao renderizar novamente a linha de comando, então tudo depois desse comando longo é complicado.
A solução fácil que encontrei é apertar a tecla home, inserir “echo” e apertar enter. Em seguida, recupere o último comando e edite a partir daí. (Primeiro removendo o eco. :)
VEJA TAMBÉM a resposta de alexander-somov abaixo, que identifica uma maneira de corrigir a causa mais comum desse problema.
Responder2
Talvez você tenha sequências de escape não imprimíveis no PS1 não incluídas em \[ e \].
Certifique-se de incluir todos eles assim:
\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]