Às vezes meu zsh mexe o fim das linhas

2

Eu tenho esse problema estranho, que eu não consigo encontrar a fonte, nem uma solução para resolver.

"Às vezes" meu zsh fica confuso e começa a exibir o final das linhas de maneira engraçada:

Como você pode ver, as novas linhas são ignoradas e eu recebo um engraçado % no final da linha.

Você sabe o que pode causar isso e como resolvê-lo?

Nota: Estou rodando o OS X, um zsh dentro do Iterm2 e o Tmux.

    
por nobe4 11.05.2016 / 16:06

1 resposta

1

A captura de tela mostra o que é chamado de "staircasing", onde a nova linha enviada do computador para o terminal não é traduzida automaticamente para um retorno de carro / linha de alimentação pelo driver de terminal.

Você veria isso depois de executar um programa que modifica temporariamente os modos de terminal, mas não consegue restaurar os modos originais. Você nunca vê isso como resultado de catar um arquivo binário para a tela.

Você pode produzir esse comportamento em alguns shells (outros, como tcsh , redefiniram os modos do terminal após cada comando). Aqui está um exemplo usando dash :

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd 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
$ stty -onlcr
$ stty -a
         speed 38400 baud; rows 40; columns 80; line = 0;
                                                         intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
                                              eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
                                            werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
                   -parenb -parodd 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
                                $ 

O comando reset , como sugerido, redefinirá os modos de terminal, mas também redefinirá os recursos no próprio terminal. Você também pode usar

stty sane

ou mais especificamente

stty onlcr

mas reset envolve menos digitação.

Leitura adicional:

  • stty - altere e imprima as configurações da linha de terminal
  • tset , reset - inicialização do terminal
por 27.08.2016 / 17:21