엉망을 정리하려면 두 가지 명령 시퀀스가 필요합니다.
먼저 깨진 창에서 이것을 실행하십시오 (이 상태에서도 작동합니다 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
참고 : 복사하여 붙여 넣기를 사용하는 경우 ( Shift
붙여 넣기 동안 누르고 있어야 할 수도 있음 ) 위의 명령을 사용하여를 엉망으로 만든 경우 붙여 넣기를 볼 수 없습니다 tty
. 따라서 붙여 넣은 후 Enter 키를 맹목적으로 누르십시오.
설명 :
stty sane
"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 title
하므로 status-right
프레젠테이션 버그를 노출 시키기 때문에를 사용하지 않아야합니다 . 또한 tmux
창 제목을 직접 설정 하는 명령을 찾지 못했습니다 .)
tput reset
이 문제가 발생한 경우를 대비하여 터미널을 재설정합니다.
tmux refresh
화면을 새로 고침하여 표시되었을 수있는 다른 잔해를 제거합니다
누락 된 비트
왼쪽 상태 영역에 현재 명령을 표시 printf '\033k%s\033\\' "$(basename "$SHELL")"
하는 표준 기능 이 느슨합니다 tmux
. printf '\033k%s\033\\' "something"
처형 된 후에이 능력은 상실되고 좋은 방법을 찾지 못했지만, 이전과 같은 방식으로 되돌릴 수있는 방법을 찾지 못했습니다.
그러나 아래 주석에서 언급 한 것처럼 tmux
다음 tmux
설정을 사용하여 비슷한 기능을 대체 할 수 있습니다 .
set-window-option automatic-rename on
tmux
현재 창에서 "Escape" :
(여기서 "Escape"는 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
추신 :이 솔루션을 구성하는 데 도움을 주신 모든 분들께 감사드립니다.