상해

상해

cat바이너리 파일로 작업한 후 실수로 tmux 터미널을 엉망으로 만들었습니다. 이제 내 tmux것은 엉망이 되었습니다. 분리했다가 다시 연결해도 도움이 되지 않았고 다시 그려도 도움이 되지 않았습니다(Cb r). 실행하면 reset나머지 창이 아닌 활성 창만 다시 그려집니다. ssty sane실내나 실외에서 달리는 것은 tmux도움이 되지 않습니다.

tmux가 망쳤어

모든 창에서 내가 입력한 내용에 대해 정상적인 피드백을 받았지만(터미널이 엉망인 직후의 초기 호출로 reset이 문제가 해결됨) 상태 표시줄을 수정할 수 없는 것 같습니다.

에서는 gnome-terminal상태 표시줄이 업데이트될 때마다 상태 표시줄이 커집니다(위 스크린샷 참조). 예를 들어 새 응용 프로그램을 실행하거나 창을 전환하거나 창 크기를 조정할 때 이런 일이 발생합니다. 강제로 다시 그리기( C-b r, run reset또는 gnome 터미널 메뉴를 통해)를 수행하면 상태 표시줄이 한 줄로 줄어들지만 여전히 깨져 있습니다.

에서는 xterm상태 표시줄이 한 줄로 유지되지만 그림과 같이 여전히 깨져 있습니다.

저는 tmux 1.5를 사용하고 있습니다.

  • -terminal 을 어떻게 수정하나요 tmux?

이 버그 보고서2008년부터 동일한 문제가 설명된 것으로 보이지만 수정된 것으로 표시되어 있습니다. 어떤 버전에서 수정되었는지는 모르지만 tmux 1.5에는 2008 수정 사항이 포함되어 있어야 합니다.

답변1

창 4의 이름을 바꿔보세요

  • 창 4로 전환: Control+b 4
  • 창 이름 바꾸기: Control++ b , ControlmyNewnameu

(가운데에 쉼표가 있음)

또는: Control+b :rename-window myNewname

답변2

혼란을 정리하려면 두 가지 명령 시퀀스가 ​​필요합니다.

먼저, 잘못된 창에서 이 명령을 실행하십시오(현재 상태인 경우에도 해당 ssh).

stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh

그런 다음 실행 중인 머신에서 실행합니다 tmux(내부 및 외부에서 작동 tmux).

다음 명령은 모든 tmux인스턴스에 영향을 미치며, 이는 여러 현재 창의 왼쪽 상태를 변경할 수 있습니다. 해당 기능이 필요하지 않다면 그대로 두세요.

tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done

상해

이것은 다른 답변과 의견에서 발견된 모든 내용을 해결하기 위해 정리되었습니다. 현재는 두 번째 명령이 극히 일부만 남아 있는 것 같습니다. (아래의 "누락된 비트" 참조)

tmux이것이 어떻게 작동하는지 이해하기 위해 먼저 및 의 상태 줄을 제거해 보겠습니다 tty. 그런 다음 항상 사용 가능해야 하는 방법( command 와 달리 reset)을 사용하여 다시 수정합니다.

tmux터미널을 (가설적으로 UTF-8) 사용할 수 없게 만드는 방법

stty -echo; printf '\016\033k%2000s\\\033\033]2;\355\007' $'\302\217'

경고하다:위 명령을 실행한 후 쉘은 눈이 멀고 귀머거리가 된 것처럼 보이며 알 수 없는 외계 언어로 말도 안되는 소리만 말하는 것 같습니다. 이 문제를 해결하는 방법을 알아보려면 아래를 참조하세요.

설명하다:

  • stty -echo터미널 유형 응답 종료

  • printf '\016'을 수행 SO하므로 대체 문자 집합에 있는 것입니다.

  • printf '\033]2;%s\007' 'right status text'올바른 상태를 설정하세요. 이 경우 $'\355'데모 오류가 표시됩니다.

  • printf '\033k%2000s\033\\' $'\302\217'창 제목 이름 설정

이는 일부 대화형 명령이 충돌하고 셸로 돌아온 후 터미널에서 볼 수 있는 조합일 수 있습니다. (IMHO, /bin/cat짜증나게 할 수는 없지만 일반적으로 stty -echo대화형 명령으로 vim이를 설정합니다.)

이제 이 난장판을 정리하세요

stty sane; printf '\033k%s\033\\\033]2;%s\007' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh

노트:복사하여 붙여넣기를 사용하고(붙여넣는 동안 누르고 있어야 할 수도 있음 ) 위 명령을 사용하여 .so Shift를 엉망으로 만든 경우 붙여넣은 후 Enter 키를 누르기만 하면 됩니다.tty

설명하다:

  • stty sane입력할 때 에코가 발생하도록 "일반" 터미널 매개변수를 설정하세요.

  • printf '\033k%s\033\\' "$(basename "$SHELL")"창 제목을 다시 일반으로 설정합니다. tmux rename-window "$(basename "$SHELL")"이를 사용하도록 선택할 수 있지만 이스케이프 시퀀스가 ​​항상 유효한 경우 tmux rename-window에만 가능합니다 .tmux

  • printf '\033]2;%s\007' "$(uname -n)"상태 권한을 기본 표시로 재설정합니다. ( 깨진 콘텐츠 tmux set status-right "something"만 출력하므로 일부 데모 버그만 노출하므로 이 방법을 사용하면 안 됩니다 . 또한 창 제목을 직접 설정하는 명령을 찾지 못했다는 점도 참고하세요 .)pane titlestatus-righttmux

  • tput reset문제가 발생한 경우를 대비해 터미널을 재설정하세요.

  • tmux refresh존재할 수 있는 다른 잔해를 제거하려면 화면을 새로 고치십시오.

누락된 비트

printf '\033k%s\033\\' "$(basename "$SHELL")"왼쪽 상태 영역에 현재 명령을 표시하는 표준 기능이 손실되었습니다 . 이 능력은 실행된 tmux후에 사라집니다. 좋은 방법은 찾지 못했지만 원래 상태로 복원하는 방법은 없습니다.printf '\033k%s\033\\' "something"

그러나 아래 설명에서 언급했듯이 다음 설정을 사용하여 유사한 기능을 tmux대안으로 활성화할 수 있습니다 tmux.

set-window-option automatic-rename on
  • 현재 창에서 "Escape" ("Escape"는 명령 키) tmux를 사용하여 액세스할 수 있는 명령줄에서 이 작업을 수행한 다음 명령을 입력할 수 있습니다.:tmux

  • 또는 현재 터미널에서 실행 tmux set-window-option automatic-rename on하지만 올바른 쉘 수준에 직접 있지 않으면 실패합니다. 예를 sudo들어 또는 에서는 작동 하지 않습니다 ssh.

  • 또는 tmux현재 세션에서 다른 창을 열고 다음 명령을 실행합니다.

    for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`
    
  • 또는 실행 중인 시스템에서 다른 셸을 열고 tmux다음 명령을 실행합니다(tmux 외부에 있음).

    tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
    

추신: 이 솔루션을 구성하는 데 도움을 준 모든 사람에게 감사드립니다.

답변3

귀하가 보고 있는 특정 문제는 창 4의 이름/제목과 관련이 있습니다. (분명히) 너무 길고 이상한 문자가 포함되어 있으면 tmux가 더 짧게 측정하게 되므로(상태 표시줄을 화면 너비에 맞게 적절하게 제한하지 않음) 재설정하는 방법을 잘 모르겠습니다. 내 시스템에서는 포그라운드 프로세스의 이름을 추적합니다.) 창을 닫아야 할 수도 있습니다.

답변4

tmux set-option -g status off && tmux set-option -g status on 

창 이름 이외의 다른 항목이 깨져서 그것이 무엇인지 파악하기에는 너무 게으른 경우 이 문제를 해결했습니다.

관련 정보