
Da mesma forma que os modos do Vim, gostaria que o Tmux permanecesse no 'modo prefixo' (como você realmente o chama?) até eu clicar em Escape, para poder fazer algo como
Prefix h j + +
em vez de
Prefix h Prefix j Prefix + Prefix +
e não precisa se preocupar com temporizadores ou acordes excessivos.
Responder1
Eu postei isso como umemitire recebi esta resposta:
Você pode religar todas as suas chaves para adicioná-las
switch-client -Tprefix
ao final de cada sequência de comandos, mas não há uma maneira automatizada de fazer isso.
O problema aqui é que não funcionará se o comando gerar um erro, mas você pode contornar isso usando
Sim, o erro cancelará a sequência de comandos que você pode contornar usando run-shell, por exemplo
run "tmux mycmd; tmux switch-client -Tprefix"
Mas isso pode impedir que o erro seja exibido.
Minha configuração atual está 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 contextos diferentes para ligações diferentes. Para especificar em qual contexto usar uma ligação, use bind <key> -T <context>
, onde prefixo é o padrão. Você pode mudar de contexto usando switch-client -T <context>
, então o que fazemos é reaplicar o prefixo após cada comando.
As desvantagens deste 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 sairá em qualquer chave não vinculada, não apenas em Esc.
Bônus!Você pode adicionar um indicador interessante, que é bastante útil quando você permanece no modo prefixo por mais tempo, usando algo como
set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"