Posso fazer o Tmux ficar no 'prefix mode' até eu pressionar escape?

3

Semelhantemente aos modos do Vim, eu gostaria que o Tmux permanecesse no 'modo de prefixos' (o que você realmente chama isso?) até eu atingir o Escape, então eu seria capaz de fazer algo como

Prefix h j + +

em vez de

Prefix h Prefix j Prefix + Prefix +

e não precisa se preocupar com cronômetros ou gravação excessiva.

    
por Jakob 09.10.2017 / 12:44

1 resposta

1

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]}"

    
por 13.10.2017 / 23:43

Tags