Por um tempo, já tive esse problema persistente em todos os meus terminais, desde o gnome default e o tilda que eu tanto uso até os que eu apenas dei um giro rápido, onde minha entrada substitui o início de sua própria linha quando deveria quebra automática e quebra automática apenas na próxima linha.
Pressionar Ctrl-A para retornar ao início da linha retornará a mim em algum lugar na linha antes da minha primeira linha de entrada, da qual qualquer outra entrada fica muito estranha.
Como essa é uma explicação muito ruim e difícil de visualizar, veja como fica:
Alguém sabe o que é isso? Isso não acontece apenas sob certas circunstâncias, é uma coisa permanente que está sempre lá do início ao fim de cada sessão em cada emulador de terminal.
Saída de printf "%s\n" "$PS1" "$COLUMNS"
:
leod:~$ printf "%s\n" "$PS1" "$COLUMNS"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
80
Saída de stty -a
:
leod:~$ stty -a
speed 38400 baud; rows 11; columns 140; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
fonte
printf "%s\n" "$PS1" "$COLUMNS"
, por favor.test
saia do terminal em um estado instável. Se é um script, você pode incluí-lo na sua pergunta? O que acontece se você começar a digitar sem executartest
primeiro, o texto é quebrado normalmente?stty -a
também, por favor?type -a test
vez disso.printf "%q\n" "$PS1"
? Pode haver seqüências de escape brutas dentro do PS1 e as%s
deixa intactas (o que pode, por exemplo, alterar a cor para frente e para trás, que permanece despercebida na saída).%q
cita todos os caracteres não imprimíveis de maneira legível.Respostas:
É possível que o seu terminal não esteja reconhecendo o tamanho da janela corretamente. Encontrei uma pergunta relacionada no U&L Stackexchange e alguém sugeriu a maneira abaixo de verificar se é isso que está acontecendo:
Tipo
Se a saída não for:
Você pode usar
ativar. Para desativar:
shopt -u checkwinsize
fonte
checkwinsize
já foion
. Eu costumavashopt -u checkwinsize
desligá-lo e meu terminal ainda quebrava o texto corretamente. Não tenho certeza se esta resposta realmente resolve o problema do OP.