De forma predeterminada, Tmux se muestra -
después del título de la ventana para indicar la última ventana visitada. ¿Hay alguna manera de personalizar este marcador y configurarlo como símbolo personalizado? Gracias,
Respuesta1
man 1 tmux
dice:
De forma predeterminada, la lista de ventanas muestra el índice, el nombre y (si corresponde) la bandera de las ventanas presentes en la sesión actual en orden numérico ascendente. Se puede personalizar con las opciones
window-status-format
ywindow-status-current-format
. La bandera es uno de los siguientes símbolos añadidos al nombre de la ventana: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.
Acerca de set-window-option window-status-format
:
window-status-format string
Establezca el formato en el que se muestra la ventana en la lista de ventanas de la línea de estado. […] El valor predeterminado es#I:#W#F
.
Luego, debajo FORMATS
aprenderá #F
que significa "banderas de ventana". No he encontrado ningún rastro de capacidad para cambiar los símbolos asociados con las banderas directamente. Aún así puedes usar esto:
Además, la primera línea de la salida de un comando de shell se puede insertar usando
#()
.
Esto significa que puedes usar tr
o sed
cambiarte -
a otra cosa. Quizás te alarme esto:
Al construir formatos,
tmux
no espera a que#()
finalicen los comandos; en su lugar, se utiliza el resultado anterior de ejecutar el mismo comando, o un marcador de posición si el comando no se ha ejecutado antes.
Aún en mis pruebas, los reemplazos simples con tr
o sed
parecen funcionar de inmediato, por lo que probablemente no haya nada de qué preocuparse. Desde dentro tmux
ejecuta esto:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
o esto:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/</')"
Lo recomiendo tr
porque es más simple y más pequeño que sed
, debería funcionar mejor (si es que importa). Pero si desea reemplazar con alguna cadena *-
de varios caracteres, entonces esta es su herramienta. Ejemplo:sed
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/<--/')"
Notas:
%%
en lugar de%
es debido altmux
analizador.tmux set-window-option window-status-format …
(sin-g
) especifica el formato para una sola ventana; esto tendrá prioridad sobre el formato global para esta ventana en particular.- También hay
window-status-current-format
un formato que especifica el formato utilizado cuando la ventana es la ventana actual. Obviamente, el indicador de "última ventana" nunca se aplica a la ventana actual, pero si desea personalizar los indicadores que pueden aplicarse,window-status-current-format
también debe modificarlos. Una línea para agregar
/etc/tmux.conf
o~/.tmux.conf
es como:set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
* O más bien multibyte. Comparareste.
Respuesta2
No sé cuándo se agregó esto, pero puede realizar el reemplazo de expresiones regulares con el formato tmux, lo que hace que sea más sencillo lograrlo. Desde la página de manual:
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’.
Entonces, para su caso de uso, puede realizar un reemplazo en el window_flags
contenido variable de esta manera:
set-window-option -g window-status-format " #{s/-/>>/:window_flags} #I #W"