Redefinir terminal após cada comando no ZSH

0

Estou usando o Konsole + ZSH no KDE com várias guias abertas. Em algumas abas eu corro programas diferentes - scripts Python com ipdb e outros. Em algum momento eu não posso mais entrar em nova linha - pressionando Enter apenas imprime ^M .

Eu vi esta resposta e eu acho que o ipdb muda algumas das configurações do terminal que não são restauradas quando eu o interrompo pressionando Ctrl+C ou Ctrl+\ :

$ stty -a
speed 38400 baud; rows 46; columns 180; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; 
swtch = <undef>; start = ^Q; stop = ^S; susp = <undef>; rprnt = ^R; werase = ^W;
lnext = <undef>; flush = ^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

$ pip uninstall frozendict
Uninstalling frozendict:
...
Proceed (y/n)? ^M

Outro terminal que funciona bem tem essas configurações:

$ stty -a
speed 38400 baud; rows 46; columns 180; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; 
swtch = <undef>; start = ^Q; stop = ^S; susp = <undef>; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^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

Estou pensando em como contornar isso.

Eu poderia de alguma forma injetar stty icrnl para ser executado depois que um comando fosse executado, mas eu preferiria restaurar todas as configurações não apenas icrnl . Mas reset é lento.

Então, minha pergunta é: como executar algo depois que um comando foi executado no ZSH e o que executar - stty icrnl ou reset ? Ou existe outra solução?

Ou existe uma maneira de proibir a desativação de icrnl flag?

    
por warvariuc 16.01.2015 / 07:47

1 resposta

2

Esta postagem foi útil, então coloquei isso em .zshrc :

precmd()
{
    stty sane
}
    
por warvariuc 16.01.2015 / 08:16