Reverse history search in bash seguido por teclas de seta faz com que o cursor seja exibido no local errado

9

Eu notei que muitas vezes quando eu estou pesquisando a história inversa a partir da linha de comando via CTRL + r , se eu quiser editar o comando, às vezes, o cursor pula para a posição errada quando pressiono uma tecla de seta ou insiro CTRL + a ou CTRL + e . A posição específica para a qual ele salta parece ser um deslocamento igual ao tamanho do prompt da linha de comando, conforme definido em PS1 .

Isso causa dificuldade porque a localização real do cursor é diferente da renderizada na tela; edições futuras no comando são renderizadas como se o cursor estivesse onde ele pulou, mas o comando real mantém o local correto sem nenhum salto.

Alguém sabe o que está causando isso ou como corrigi-lo?

EDIT: Se eu adicionar uma nova linha no final de PS1 , o problema parece ter desaparecido. No entanto, eu preferiria digitar o comando na mesma linha do prompt.

    
por jonderry 09.09.2011 / 01:17

2 respostas

6

Isso geralmente é causado por comandos em seu histórico com mais de uma linha. Quando você seleciona um item mais curto fora do histórico, ele não parece levar em conta a largura do prompt ao renderizar novamente a linha de comando, então tudo o que estiver depois desse longo comando é estragado.

A solução mais fácil que eu encontrei é apertar a tecla home, inserir "echo" e apertar enter. Em seguida, lembre-se do último comando e edite a partir daí. (Primeiro removendo o eco.:)

    
por 09.09.2011 / 01:35
11

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\]
    
por 20.06.2013 / 13:00

Tags