Como equilibrar igualmente os painéis divididos do tmux (1)?

217

Estou procurando um comportamento semelhante ao modo como o vim (1) lida com suas janelas divididas ^w =. Eu sei que o tmux (1) possui layouts predefinidos ^b Meta[1-5], mas isso provavelmente não tem o layout que estou usando no momento.

Ao dividir uma janela, ela reduz pela metade a janela atual para os dois painéis. Divida novamente e divide esse painel em dois novos. Combine divisões verticais e horizontais e elas continuam se dividindo pela metade, cada novo painel ficando cada vez menor.

Como posso manter o novo layout que acabei de criar, mas com todas as divisões verticais e horizontais igualmente equilibradas, como o vim (1) faz ^w =?

Aaron Toponce
fonte
A descrição do layout "lado a lado" diz "Os painéis estão espalhados o mais uniformemente possível sobre a janela em linhas e colunas". Você poderia explicar como o que você quer é diferente disso, por favor?
Lars Kotthoff
1
Certo. Isso a descreve muito bem: gist.github.com/1942422
Aaron Toponce 2/12/12

Respostas:

284

Verticalmente

select-layout even-vertical
Geralmente atribuído a: Ctrl+ b, Alt+2

Horizontalmente

select-layout even-horizontal
Geralmente atribuído a: Ctrl+ b, Alt+1

blackd
fonte
70
Para outras pessoas que estão se perguntando: C-b M-2significa Control-b e M-2alt + 2.
Christophe De Troyer
29
M-2 significa ESC + 2 para mim no Debian usando o Gnome Terminal. Provavelmente depende da configuração.
arcyqwerty
7
C-...e M-...são emacs-ims M- significa "meta" que é [Alt] combinado com ou [Esc] seguido pela tecla referenciada, ambas as opções têm a mesma aparência, mas existe a possibilidade de sua GUI estar bloqueando o [ Alt] sequência
Jasen
3
Só para colocar isso aqui, caso isso ajude alguém, porque estou constantemente confuso, "vertical" e "horizontal" são a direção do espaçamento - ou seja, escolher a vertical vertical criará um layout onde os três painéis serão empilhados verticalmente, igual em altura, onde ainda vai-horizontal criar uma disposição em que os três painéis estão lado-a-lado, igual em largura
A. Wilson
Como executar o M-2 no macOS com um teclado em que "2" exige pressionar Shift (como o teclado francês)? I não teve sucesso, com várias combinações de alt, controle, comando, escape e Shift + 2 ...
Eric O Lebigot
95

Você pode ctrl-b spacealternar entre layouts com espaçamento uniforme, mas isso não preservará necessariamente o layout que você tinha.

Issac Trotts
fonte
2
A idéia por trás do truque (se você quiser mapeá-lo para outra coisa ou adaptá-lo): bind-key -r Space next-layout. Então C-b Space Space Space...
BenC 24/11
3
Existe uma maneira de saber qual layout eu selecionei e como pular rapidamente para ele novamente?
Hughes
20

Na linha de comando, você pode usar

tmux select-layout tiled

para fazer com que suas divisões tenham tamanho aproximadamente igual. Você pode vincular isso a um comando de chave também.

Mnebuerquo
fonte
3
Geralmente atribuído a:C-b M-5
minipif 17/01/19
7

Não conheço nenhum atalho de tecla única, mas talvez isso ajude você:

Você pode tentar escrever algum script para fazer o layout e vincular uma chave ao script. Você pode fazer isso usando o tmuxcomando pipe-pane [-o] [-t target-pane] [shell-command]para gravar o layout atual no script. Em seguida, você precisa ler um layout elaborado pelo script usando tmuxcomando select-layout.

digital_infinity
fonte
1

Eu estava tendo dificuldade em encontrar o encantamento mágico para se dividir em quatro quadrantes iguais, então aqui está:

# Split session into FOUR EQUAL quadrants
tmux selectp -t 0    # select the first (0) pane
tmux splitw -h -p 50 # split it into two halves
tmux selectp -t 0    # select the first (0) pane
tmux splitw -v -p 50 # split it into two halves

tmux selectp -t 2    # select the new, second (2) pane
tmux splitw -v -p 50 # split it into two halves
tmux selectp -t 0    # go back to the first pane
Daevid Vincent
fonte
1

ctrl be então :resize-pane -Me então apenas use o mouse! (requer mouse-modehabilitação)

sarink
fonte