私にはこの奇妙な問題があり、その原因も解決策も見つかりません。
「時々」私のzshが台無しになり、面白い方法で行末の表示を開始します。
ご覧のとおり、改行は無視され、面白い%
行末。
何が原因で、どのように解決するか知っていますか?
注:私はOS X、Iterm2とTmux内のzshを実行しています。
スクリーンショットは、「階段状」と呼ばれるものを示しています。ここでは、コンピューターから端末に送信された改行が、端末ドライバーによって自動的にキャリッジリターン/ラインフィードに変換されません。
これは、ターミナルモードを一時的に変更するプログラムを実行した後に表示されますが、元のモードの復元には成功しません。バイナリファイルを画面にキャットした結果として、これは決して表示されません。
一部のシェルでこの動作を生成できます(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
は入力が最も少なくて済みます。
参考文献: