기본적으로 Tmux는 -
창 제목 뒤에 마지막으로 방문한 창을 표시합니다. 이 마커를 사용자 정의하고 사용자 정의 기호로 설정하는 방법이 있습니까? 감사해요,
답변1
man 1 tmux
말한다:
기본적으로 창 목록에는 현재 세션에 있는 창의 인덱스, 이름 및 플래그(있는 경우)가 숫자 오름차순으로 표시됩니다.
window-status-format
및 옵션을 사용하여 사용자 정의할 수 있습니다window-status-current-format
. 플래그는 창 이름에 추가되는 다음 기호 중 하나입니다.Symbol Meaning * Denotes the current window. - Marks the last window (previously selected). # Window is monitored and activity has been detected. ! A bell has occurred in the window. ~ The window has been silent for the monitor-silence interval. M The window contains the marked pane. Z The window's active pane is zoomed.
에 대한 set-window-option window-status-format
:
window-status-format string
상태 표시줄 창 목록에 창이 표시되는 형식을 설정합니다. [...] 기본값은 입니다#I:#W#F
.
그런 다음 "창 플래그"를 의미하는 것을 FORMATS
배우십시오 #F
. 나는 플래그와 관련된 기호를 직접 변경하는 기능의 흔적을 찾지 못했습니다. 그래도 이것을 사용할 수 있습니다:
또한 셸 명령 출력의 첫 번째 줄은 를 사용하여 삽입할 수 있습니다
#()
.
이는 다른 것을 사용 tr
하거나 sed
변경할 수 있음을 의미합니다 . -
당신은 다음과 같은 사실에 놀랄 수도 있습니다:
형식을 구성할 때 명령이 완료될 때
tmux
까지 기다리지 않습니다 .#()
대신 동일한 명령을 실행한 이전 결과가 사용되거나 명령이 이전에 실행되지 않은 경우 자리 표시자가 사용됩니다.
여전히 내 테스트에서는 간단한 교체가 즉시 작동하거나 tr
즉시 sed
작동하는 것처럼 보이므로 걱정할 것이 없습니다. 내부에서 tmux
다음을 실행하세요.
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
아니면 이거:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/</')"
tr
보다 간단하고 작기 때문에 권장합니다 sed
. (중요하다면) 더 나은 성능을 발휘할 것입니다. 그러나 -
다중 문자 * 문자열 로 바꾸고 싶다면 이것이 sed
바로 도구입니다. 예:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/<--/')"
노트:
%%
대신 파서%
때문입니다tmux
.tmux set-window-option window-status-format …
( 없이-g
) 단일 창의 형식을 지정합니다. 이는 이 특정 창의 전역 형식보다 우선합니다.window-status-current-format
창이 현재 창일 때 사용되는 형식을 지정하는 것도 있습니다 . "마지막 창" 플래그는 분명히 현재 창에 적용되지 않지만 적용할 수 있는 플래그를 사용자 정의하려면 변경window-status-current-format
도 필요합니다.추가할 줄은
/etc/tmux.conf
다음과~/.tmux.conf
같습니다.set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
* 또는 오히려 멀티바이트입니다. 비교하다이것.
답변2
이것이 언제 추가되었는지는 모르겠지만 tmux 형식으로 정규식 대체를 수행하면 이를 더 간단하게 수행할 수 있습니다. 맨페이지에서:
A prefix of the form ‘s/foo/bar/:’ will substitute ‘foo’ with ‘bar’ throughout.
The first argument may be an extended regular expression and a final argument may be ‘i’ to ignore case, for example:
‘s/a(.)/\1x/i:’ would change ‘abABab’ into ‘bxBxbx’.
따라서 사용 사례에 따라 window_flags
다음과 같이 변수 내용에 대해 교체를 수행할 수 있습니다.
set-window-option -g window-status-format " #{s/-/>>/:window_flags} #I #W"