tmux.conf에서 window_index가 0이면 다른 옵션을 설정하시겠습니까?

tmux.conf에서 window_index가 0이면 다른 옵션을 설정하시겠습니까?

다음은 중간 옵션의 기본 설정입니다 ~/.tmux.conf.

set -gw window-status-format " #I:#W#{?window_flags,#{window_flags}, } "

문제는 첫 번째 창이 활성화되지 않은 경우 다른 모든 창과 달리 첫 번째 창 이름(상태 표시줄의 창 목록)에 값 시작 부분의 공백 문자가 적용되지 않는다는 것입니다. 독립적으로 적용됩니다. 따라서 첫 번째 창으로 전환할 때마다(나중에 추가되는 공백 문자로 인해) 창 목록에 매우 혼란스러운 움직임이 있습니다. 이런 일은 일어나서는 안 됩니다.

그래서 제가 원하는 것은 다음과 같이 설정하고 싶습니다 window-status-format.

  • "#I:#W#{?window_flags,#{window_flags}, } "if window_indexis 0(즉, 대상 첫 번째 창 이름)입니다.
  • " #I:#W#{?window_flags,#{window_flags}, } "window_index다른 것이 있다면 .

다음과 같습니다.

set -gw window-status-format "#{?window_index=0,"#I:#W#{?window_flags,#{window_flags}, } "," #I:#W#{?window_flags,#{window_flags}, } "}"

그러나 이것은 여러 가지 이유로 인해 올바른 tmux 명령이 아닙니다(분명히 작동하지 않습니다).

  1. 물론 이는 window_index동등성을 확인하는 올바른 구문 이 아닙니다 0.
  2. 동일한 tmux 구성에 여러 조건이 있을 수 있나요? 주문하다?

그러면 어떻게 해야 올바르게 수행할 수 있나요?

답변1

이는 여러 조건을 사용하는 대신 특이성을 사용하여 수행할 수 있는 것처럼 보입니다. 내가 해야 할 일은 다음을 내 파일에 추가하는 것뿐이었습니다 ~/.tmux.conf.

set -gw window-status-format " #I:#W#{?window_flags,#{window_flags}, } "
set -w -t :0 window-status-format "#I:#W#{?window_flags,#{window_flags}, } "

아직 명확하지 않은 경우:

  • 첫 번째 tmux 명령은 세션에 관계없이 모든 창에 대한 전역 값을 설정합니다. (이 역시 기본값이므로 이 줄은 전혀 필요하지 않습니다.)

  • 다음 명령은 대상 창의 값을 지정합니다(역시 세션에 관계 없음). 우리의 경우 대상 창의 인덱스가 (즉, 대상 창이 세션의 첫 번째 창이기도 하면) 해당 값이 적용된다는 의미 window_index입니다 0.

    흥미롭게 -t도 (target-window) 옵션은 상태 표시줄에 있는 해당 창의 이름도 대상으로 합니다. 그렇지 않다면 이 솔루션은 하나가 아닐 것입니다.

노트:

  • 예를 들어 로 시작되지 않도록 set -g base-index 1다른 기본 인덱스를 사용하는 경우 위 명령에서 해당 인덱스를 사용해야 합니다 .10:1

  • 해결책이 필요해새 세션을 생성하면 오류가 표시되기 때문에 물론 거기에서 설명한 대로 수정할 수 있습니다.

답변2

다른 해결책을 찾았습니다.

is_first="#([ $(tmux display-message -p '#I') = $(tmux show-options -gqv base-index) ] && echo true)"
set -gw window-status-format "#{?$is_first,First is active,}"

관련 정보