有时我的 zsh 会弄乱行尾

有时我的 zsh 会弄乱行尾

我有一个奇怪的问题,我找不到根源,也没有解决方案。

“有时”我的 zsh 会变得混乱并开始以一种有趣的方式显示行尾:

截屏

正如你所看到的,换行符被忽略,并且我%在行尾得到了一个有趣的结果。

您知道这可能是什么原因造成的以及如何解决吗?

注意:我运行的是 OS X、Iterm2 和 Tmux 内的 zsh。

答案1

屏幕截图显示了所谓的“阶梯”,其中从计算机发送到终端的换行符不会由终端驱动程序自动转换为回车/换行。

在运行临时修改终端模式但未成功恢复原始模式的程序后,您会看到这一点。你会绝不这是将二进制文件显示到屏幕上的结果。

您可以在某些 shell 上产生此行为(其他 shell 例如tcsh在每个命令后重置终端模式)。这是一个使用的示例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
                                $ 

正如建议的那样,该reset命令将重置终端模式,但也会重置终端本身的功能。你也可以使用

stty sane

或者更具体地说

stty onlcr

reset打字最少。

进一步阅读:

相关内容