
Por padrão, o Tmux é exibido -
após o título da janela para indicar a última janela visitada. Existe uma maneira de personalizar este marcador e configurá-lo como um símbolo personalizado? Obrigado,
Responder1
man 1 tmux
diz:
Por padrão, a lista de janelas mostra o índice, o nome e (se houver) o sinalizador das janelas presentes na sessão atual em ordem numérica crescente. Pode ser personalizado com as opções
window-status-format
ewindow-status-current-format
. A bandeira é um dos seguintes símbolos anexados ao nome da janela: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.
Sobre set-window-option window-status-format
:
window-status-format string
Defina o formato no qual a janela será exibida na lista de janelas da linha de status. […] O padrão é#I:#W#F
.
Então FORMATS
você aprende #F
que significa "sinalizadores de janela". Não encontrei nenhum vestígio de capacidade de alterar diretamente os símbolos associados às bandeiras. Ainda assim você pode usar isto:
Além disso, a primeira linha da saída de um comando shell pode ser inserida usando
#()
.
Isso significa que você pode usar tr
ou sed
mudar -
para outra coisa. Você pode ficar alarmado com isso:
Ao construir formatos,
tmux
não espera#()
o término dos comandos; em vez disso, é usado o resultado anterior da execução do mesmo comando ou um espaço reservado se o comando não tiver sido executado antes.
Ainda em meus testes, substituições simples tr
ou sed
parecem funcionar imediatamente, então provavelmente não há nada com que se preocupar. De dentro, tmux
execute isto:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
ou isto:
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/</')"
Eu recomendo tr
porque é mais simples e menor que o sed
, deve ter um desempenho melhor (se for importante). Mas se você quiser substituir por alguma string *-
com vários caracteres, essa é a sua ferramenta. Exemplo:sed
tmux set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | sed 's/-/<--/')"
Notas:
%%
em vez de%
é por causa dotmux
analisador.tmux set-window-option window-status-format …
(sem-g
) especifica o formato para uma única janela; isso terá precedência sobre o formato global desta janela específica.- Há também
window-status-current-format
qual especifica o formato usado quando a janela é a janela atual. O sinalizador "última janela" obviamente nunca se aplica à janela atual, mas se você quiser personalizar os sinalizadores que podem ser aplicados, vocêwindow-status-current-format
também precisará alterar. Uma linha para adicionar
/etc/tmux.conf
ou~/.tmux.conf
é como:set-window-option -g window-status-format "#I:#W#(printf '%%s\n' '#F' | tr '-' '<')"
* Ou melhor, multibyte. Compararesse.
Responder2
Não sei quando isso foi adicionado, mas você pode realizar a substituição de regex pelo formato tmux, o que torna mais simples conseguir isso. Na 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’.
Portanto, para o seu caso de uso, você pode substituir o window_flags
conteúdo da variável assim:
set-window-option -g window-status-format " #{s/-/>>/:window_flags} #I #W"