![접두사 키를 보낸 후에만 tmux의 상태 표시줄을 표시하시겠습니까?](https://linux55.com/image/168601/%EC%A0%91%EB%91%90%EC%82%AC%20%ED%82%A4%EB%A5%BC%20%EB%B3%B4%EB%82%B8%20%ED%9B%84%EC%97%90%EB%A7%8C%20tmux%EC%9D%98%20%EC%83%81%ED%83%9C%20%ED%91%9C%EC%8B%9C%EC%A4%84%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
접두사 키를 보낸 후에만 상태 표시줄이 표시되도록 하고 싶습니다. 예상되는 명령을 보낸 후 막대가 다시 사라지기를 원합니다.
나는 그것이 다음과 같이 작동할 것이라고 상상한다:
C-b
(접속사 보내기)를 누릅니다 .- 상태 표시줄이 나타납니다
- 언론
c
(예를 들어) - 상태 표시줄이 사라집니다&새창이 생성되었습니다
이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? 감사합니다!
답변1
이것은 간단히 하기가 어렵습니다.
접두어를 누를 때 표시되도록 하는 것은 쉽습니다. 접두어 옵션을 설정 해제하고 키를 바인딩하기만 하면 됩니다.
set -g prefix None
bind -n C-b set status on \; switchc -Tprefix
문제는 "모든 명령 발생" 후크가 없기 때문에 키를 눌렀을 때 닫히도록 설득하는 것입니다. 다른 키 바인딩을 변경하여 끌 수 있습니다 c
.
bind c set status off \; new-window
그러나 모든 키에 대해 이 작업을 수행하는 것은 고통스러울 것입니다.
또는 다음과 같이 1초 정도 후에 닫을 수도 있습니다.
set -g prefix None
bind -n C-b set status on \; run -b "sleep 1; tmux set -t'#{session_id}' status off" \; switchc -Tprefix
그러나 여러 명령을 차례로 실행하려는 경우 이는 성가신 일이 될 수 있습니다. 이보다 더 복잡한 스크립트를 작성할 수도 있지만 사용자 옵션에서 Cb를 누르는 시간을 업데이트하고 충분한 시간이 지난 후에만 상태를 다시 닫을 수도 있습니다.
다음 키를 눌렀을 때 이를 꺼야 한다면 다른 모든 키 바인딩을 변경하거나 tmux를 수정하여 사용할 수 있는 후크를 트리거해야 합니다.
답변2
나는 Nicholas의 제안을 약간 변경하여 결과를 얻었습니다.
bind -n C-b set status on \;\
switch-client -T prefix \;\
run-shell -d 1 -b "while [ $(tmux display-message -p '##{client_prefix}') -eq 1 ]; do sleep 0.5; done; tmux set status off"