デフォルトでは、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 形式で正規表現の置換を実行すると、より簡単にこれを実現できます。man ページから:
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"