때때로 내 zsh가 줄 끝을 엉망으로 만들 때가 있습니다.

때때로 내 zsh가 줄 끝을 엉망으로 만들 때가 있습니다.

이상한 문제가 있는데 근본 원인을 찾을 수 없고 해결책도 없습니다.

"가끔" 내 zsh가 복잡해지고 재미있는 방식으로 줄 끝이 표시되기 시작합니다.

스크린샷

보시다시피 개행 문자는 무시되고 %줄 끝에서 흥미로운 결과를 얻습니다.

이 문제의 원인과 해결 방법을 알고 계십니까?

참고: 저는 OS X, Iterm2 및 Tmux에서 zsh를 실행하고 있습니다.

답변1

스크린샷은 컴퓨터에서 터미널로 전송된 라인 피드가 터미널 드라이버에 의해 자동으로 캐리지 리턴/라인 피드로 변환되지 않는 소위 "계단"을 보여줍니다.

원래 모드를 성공적으로 복원하지 않고 터미널 모드를 임시로 수정하는 프로그램을 실행한 후에 이 현상이 나타납니다. 당신은 할 수 있습니다안 돼요바이너리 파일을 화면에 표시한 결과입니다.

일부 셸에서 이 동작을 생성할 수 있습니다(다른 셸에서는 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타이핑은 최소화됩니다.

추가 자료:

관련 정보