접두사 키를 보낸 후에만 tmux의 상태 표시줄을 표시하시겠습니까?

접두사 키를 보낸 후에만 tmux의 상태 표시줄을 표시하시겠습니까?

접두사 키를 보낸 후에만 상태 표시줄이 표시되도록 하고 싶습니다. 예상되는 명령을 보낸 후 막대가 다시 사라지기를 원합니다.

나는 그것이 다음과 같이 작동할 것이라고 상상한다:

  1. C-b(접속사 보내기)를 누릅니다 .
  2. 상태 표시줄이 나타납니다
  3. 언론 c(예를 들어)
  4. 상태 표시줄이 사라집니다&새창이 생성되었습니다

이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? 감사합니다!

답변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"

관련 정보