한 줄보다 긴 명령을 입력할 때 tmux가 "스크롤"하지 않는 이유는 무엇입니까? (OSX 터미널.앱)

한 줄보다 긴 명령을 입력할 때 tmux가 "스크롤"하지 않는 이유는 무엇입니까? (OSX 터미널.앱)

해당 줄 너머에 명령을 사용 tmux하고 입력하면 이전 줄을 다시 그리는 데 실패합니다. 현재 줄만 지워지고 방금 쓴 내용을 볼 수 없습니다.첫 번째 줄만 다시 그립니다.

이는 키를 눌렀을 때 마지막 명령이 현재 줄에 맞지 않는 up경우에도 발생합니다 (마지막 줄만 표시됩니다). 와 up를 다시 누르면 down명령의 모든 줄을 볼 수 있습니다.

이 문제의 원인이 무엇인지는 잘 모르겠지만 짜증스럽습니다. 내 프롬프트에 뭔가 관련이 있나요? 만일의 경우에 대비해 다음과 같습니다.

export PS1="%{$fg[blue]%}%n%{$reset_color%}@%{$fg[green]%}%m %{$fg[yellow]%}%~ %{$reset_color%}% "
export PS2=$_>
($TERM is set to screen)

그건 그렇고, 나는 zsh와 OSX Termial을 사용하고 있지만 bash에도 문제가 있습니다.

또한 (XQuartz)에는 이 문제가 없으므로 xtermOSX의 Terminal.app으로 인해 발생한 것으로 추측됩니다.

  • 이 문제에 대한 해결책을 아는 사람이 있나요?
  • 어떻게든 강제로 다시 그릴 수 있을까요?

방금 발견했습니다이 오래된 스레드tmux 메일링 리스트에 있습니다.

(screen, screen-256colors, xterm, xterm-color, nsterm)의 다른 값을 시도했지만 $TERM오류가 지속됩니다.

그러면 다른 터미널 에뮬레이터로 전환해도 할 수 있는 게 아무것도 없는 것 같은데요?

답변1

이것은 다른 사람들이 발견한 Terminal.app의 버그입니다.화면의 줄바꿈 ​​처리 오류를 수정할 수 있는 방법이 있나요? (어쩌면 Terminal.app만 해당)

bash+tmux를 사용하여 효과를 재현하고 화면에 전송되는 텍스트를 캡처할 수 있으며, tmux가 업데이트하기 전에 화면의 마지막 줄을 제외하도록 스크롤 여백을 설정하여 줄 바꿈이 발생할 수 있음을 확인할 수 있습니다. 그 사이 bash는 첫 줄에 맞는 부분을 써서 긴 줄을 쓰고,추가하다두 개의 문자가 더 추가되고 캐리지 리턴과 두 번째 줄 등이 이어집니다.

이 두 개의 추가 문자는 개행을 강제해야 합니다. 그러나 Terminal.app은 스크롤 여백을 전환하고 커서를 스크롤 영역의 마지막 줄로 이동한 다음 거기에 긴 줄을 쓰는 방식으로 혼란스러워 보입니다. 감싸는 대신 긴 줄의 두 번째 부분이 첫 번째 부분 위에 쓰여진 상태로 원래 위치에 유지됩니다.

거기있는 동안줄 바꿈을 끕니다. 대부분의 응용 프로그램에서는 활성화된 것으로 가정합니다. 추적(usage script)에서는 tmux나 bash 모두 이를 사용하지 않습니다. 둘 중 하나가 개행 문자를 조작하지 않는 한 아무 것도 얻을 수 없습니다. 예를 들어 tmux는가설am이 기능은 (자동 마진) 기능에 대한 터미널 설명 도 확인하지 않습니다 . 관련 플래그(개행 오류)를 확인 xenl하지만 터미널 설명에서 이를 제거하면 상황이 더 악화될 뿐입니다.

따라서... 이 오류로 인해 Terminal.app을 사용할 수 없는 경우 iTerm2가 적합한 대안입니다.

답변2

방금 iterm2를 다운로드하여 사용했습니다.
이것이 제가 아는 Mac을 사용하는 대부분의 개발자들이 하는 일입니다.

더욱 쾌적한 환경을 느끼실 수 있을 것 같아요.

나는 tmux와 함께 iterm2를 사용하는데 훌륭하게 작동합니다.

http://www.iterm2.com

관련 정보