Usando chaves existentes
Talvez você não precise adicionar nada à sua configuração. Aqui estão as ligações padrão para redimensionar os painéis (de :list-keys
):
bind-key -r -T prefix M-Up resize-pane -U 5
bind-key -r -T prefix M-Down resize-pane -D 5
bind-key -r -T prefix M-Left resize-pane -L 5
bind-key -r -T prefix M-Right resize-pane -R 5
bind-key -r -T prefix C-Up resize-pane -U
bind-key -r -T prefix C-Down resize-pane -D
bind-key -r -T prefix C-Left resize-pane -L
bind-key -r -T prefix C-Right resize-pane -R
Essa opção -r
para bind-key
significa que eles suportam repetição - você pode continuar pressionando C-Arrow ou M-Arrow até terminar de redimensionar, sem inserir a sequência de prefixo novamente. A quantidade de tempo antes que esse tempo de repetição seja excedido é controlado pela opção repeat_time
(padrão 500ms).
Ligação sem prefixo
Se você quiser evitar totalmente a chave de prefixo, você pode usar uma tabela bind
diferente. Na seção bind-key da página de manual:
By default (without -T), the key is bound in the prefix key table. This table is used for keys pressed after the prefix key (for example, by default 'c' is bound to new-window in the prefix table, so 'C-b c' creates a new window). The root table is used for keys pressed without the prefix key: binding 'c' to new-window in the root table (not recommended) means a plain 'c' will create a new window. -n is an alias for -T root.
Para ligar diretamente à tabela raiz:
bind-key -n C-Up resize-pane -U 5
bind-key -n C-Down resize-pane -D 5
bind-key -n C-Left resize-pane -L 5
bind-key -n C-Right resize-pane -R 5
Ligação no modo de cópia
Você sugeriu um modo dedicado para redimensionamento. tmux
não tem suporte para esses modos personalizados, mas já tem modo de cópia (por padrão, inserido com prefixo- [
e deixado com q
) no qual os pressionamentos de tecla podem ter diferentes vinculações normalmente sem o prefixo. Infelizmente, a ligação de comandos multiword (incluindo comandos com argumentos) neste modo não é suportada (veja questão do tmux 215 ) . No entanto, há uma solução alternativa para testar #{pane_in_mode}
antes de fazer qualquer coisa. Com base nos comentários sobre esse problema e na solução "ligar sem prefixo" acima:
bind-key -n C-Up if-shell -F "#{pane_in_mode}" "resize-pane -U 5" "send-keys C-Up"
bind-key -n C-Down if-shell -F "#{pane_in_mode}" "resize-pane -D 5" "send-keys C-Down"
bind-key -n C-Left if-shell -F "#{pane_in_mode}" "resize-pane -L 5" "send-keys C-Left"
bind-key -n C-Right if-shell -F "#{pane_in_mode}" "resize-pane -R 5" "send-keys C-Right"