Postei isso como uma edição e recebi esta resposta:
You could rebind all your keys to add
switch-client -Tprefix
to the end of each command sequence, but there is no automated way to do this.
O problema aqui é que ele não funcionará se o comando lançar um erro, mas você pode contorná-lo usando
Yes error will cancel the command sequence you could get around this by using run-shell eg
run "tmux mycmd; tmux switch-client -Tprefix"
But that might hide the error from being displayed.
Minha configuração atual é assim:
bind c new-window \; switch-client -T prefix
bind . command-prompt \; switch-client -T prefix
bind , copy-mode \; switch-client -T prefix
# Vim style splits
bind s split-window -v \; switch-client -T prefix
bind v split-window -h \; switch-client -T prefix
# Double tab to cycle panes
bind C-a select-pane -t :.+ \; switch-client -T prefix
Pelo que entendi, o tmux usa diferentes contextos para diferentes ligações. Para especificar em qual contexto usar uma ligação, use bind <key> -T <context>
, em que prefixo é o padrão. Você pode mudar o contexto usando switch-client -T <context>
, então o que fazemos é reaplicar o prefixo após cada comando.
As desvantagens desse método são:
- você terá que fazer isso explicitamente em todas as ligações
- ele retornará ao modo normal se algo resultar em erro (por exemplo, tentar mudar para a próxima sessão quando houver apenas uma sessão em execução)
- ele será encerrado em qualquer tecla não vinculada, não apenas em Esc.
Bônus! Você pode adicionar um indicador interessante, que é bastante útil quando você está no modo prefix por um longo tempo usando algo como
set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"