Eu tenho um problema com a edição de comandos em bash
. Se todas das seguintes forem verdadeiras ...
- O meu prompt (de linha única) é particularmente longo.
- A janela do terminal é relativamente estreita.
- Eu pressionei Ctrl + C para sair do processo anterior, para que
^C
seja exibido à esquerda da linha.
- 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?