^ caracteres C no início da linha de edição do comando bash break

2

Eu tenho um problema com a edição de comandos em bash . Se todas das seguintes forem verdadeiras ...

  1. O meu prompt (de linha única) é particularmente longo.
  2. A janela do terminal é relativamente estreita.
  3. Eu pressionei Ctrl + C para sair do processo anterior, para que ^C seja exibido à esquerda da linha.
  4. O comando que estou editando é enviado para a próxima linha.

... então a edição está desarrumada. Acabo substituindo os caracteres compensados por duas posições das que eu pensava estar editando.

Coisas semelhantes acontecem se, na etapa 4, eu digitar um comando que abranja várias linhas (em vez de pressionar Acima). Posso retroceder na linha anterior e, em seguida, excluir dois caracteres do meu prompt.

Basicamente isso:

(Some output)
^Cuser@host:~/path/to/somewhere $ some long command
that wraps

Está quebrado pelo ^C que aparece no início da linha.

Eu experimentei alguns outros comandos (por exemplo, sleep 30 ), e o ^C aparece em uma linha sozinho, e o prompt aparece na próxima linha. Isso só parece acontecer com node.js : node some_command_that_wraps.js .

Caso seja importante, eu tenho um PROMPT_COMMAND de cores vivas e integrado ao git. Você pode encontrá-lo no github , caso eu tenha feito algo estúpido nisso.

Atualizar

Meu PS1 é (por exemplo) definido como (eu o envolvi um pouco):

\[\e]0;\u@\h:\w\a\]
\[\e[0;93m\]\u@\h\[\e[0;96m\]:\w 
\[\e[0;97m\]{\[\e[0;94m\]master\[\e[0;92m\]\[\e[0;91m\] ~1\[\e[0;97m\]}
\[\e[0m\]\[\e[0;96m\]\$\[\e[0m\]

... que é exibido (com mais cores):

roger@roger-p5q:~/Source/rlipscombe/bash_profile [master ~1] $ 

Tanto quanto eu posso dizer, os caracteres de escape são corretamente não contáveis (usando \[ .. \] ).

Como faço para:

  • Obter o bash para detectar o ^C e passar para a próxima linha ?, ou
  • Não atrapalhar a edição do comando?
por Roger Lipscombe 03.09.2013 / 13:06

1 resposta

0

Se você quer apenas uma solução para continuar trabalhando; nestas circunstâncias, simplesmente pressiono enter uma ou duas vezes e termino com um prompt limpo.

Se alguma saída anterior tiver contribuído para a confusão com caracteres 'wierd', também posso emitir o comando de redefinição.

Se você é realmente curioso e precisa descobrir a causa raiz, eu tenho medo de nunca ter descoberto essas particularidades da readline ...

    
por 23.08.2014 / 21:20

Tags