Standardmäßig wird Tmux -
nach dem Fenstertitel angezeigt, um das zuletzt besuchte Fenster zu kennzeichnen. Gibt es eine Möglichkeit, diese Markierung anzupassen und auf ein benutzerdefiniertes Symbol einzustellen? Danke,
Antwort1
man 1 tmux
sagt:
Standardmäßig zeigt die Fensterliste den Index, den Namen und (sofern vorhanden) das Flag der in der aktuellen Sitzung vorhandenen Fenster in aufsteigender numerischer Reihenfolge an. Sie kann mit den Optionen
window-status-format
und angepasst werdenwindow-status-current-format
. Das Flag ist eines der folgenden Symbole, das an den Fensternamen angehängt wird: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.
Um set-window-option window-status-format
:
window-status-format string
Legen Sie das Format fest, in dem das Fenster in der Statuszeilen-Fensterliste angezeigt wird. […] Der Standardwert ist#I:#W#F
.
Dann FORMATS
erfahren Sie unter #F
„Fensterflaggen“. Ich habe keine Spur von der Möglichkeit gefunden, mit Flaggen verknüpfte Symbole direkt zu ändern. Sie können trotzdem Folgendes verwenden:
Darüber hinaus kann die erste Zeile der Ausgabe eines Shell-Befehls mithilfe von eingefügt werden
#()
.
Das bedeutet, dass Sie es verwenden tr
oder in etwas anderes sed
umwandeln können -
. Das hier könnte Sie beunruhigen:
Beim Erstellen von Formaten
tmux
wird nicht gewartet, bis#()
Befehle beendet sind. Stattdessen wird das vorherige Ergebnis der Ausführung desselben Befehls verwendet oder ein Platzhalter, wenn der Befehl noch nicht ausgeführt wurde.
Bei meinen Tests scheinen einfache Ersetzungen durch tr
oder dennoch sed
sofort zu funktionieren, also besteht wahrscheinlich kein Grund zur Sorge. tmux
Führen Sie von innen Folgendes aus:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
oder dieses:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/</')"
Ich empfehle es tr
, weil es einfacher und kleiner als ist und eine bessere Leistung erbringen sollte (falls es darauf ankommt). Wenn Sie es jedoch durch eine mehrstellige * -Zeichenfolge sed
ersetzen möchten, ist dies Ihr Tool. Beispiel:-
sed
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/<--/')"
Anmerkungen:
%%
stattdessen%
liegt es amtmux
Parser.tmux set-window-option window-status-format …
(ohne-g
) gibt das Format für ein einzelnes Fenster an. Dies hat Vorrang vor dem globalen Format für dieses bestimmte Fenster.- Es gibt auch
window-status-current-format
das Format an, das verwendet wird, wenn das Fenster das aktuelle Fenster ist. Das Flag „letztes Fenster“ gilt natürlich nie für das aktuelle Fenster, aber wenn Sie Flags anpassen möchten, die gelten könnten, müssen Sie eswindow-status-current-format
ebenfalls ändern. Eine hinzuzufügende Zeile
/etc/tmux.conf
oder~/.tmux.conf
sieht etwa so aus:set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
* Oder besser gesagt Multibyte. VergleichenDas.
Antwort2
Ich weiß nicht, wann dies hinzugefügt wurde, aber Sie können Regex-Ersetzungen mit dem tmux-Format durchführen, was dies einfacher macht. Aus der Manpage:
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
Für Ihren Anwendungsfall können Sie den Variableninhalt folgendermaßen ersetzen :
set-window-option -g window-status-format " #{s/-/>>/:window_flags} #I #W"