342

I'm looking for a behavior that is similar to how vim(1) handles its split windows with ^w =. I know tmux(1) has predefined layouts with ^b Meta[1-5], but this likely does not have the layout that I am currently using.

When splitting a window, it halves the current window for both panes. Split again, and it halves that pane into two new. Combine vertical and horizontal splits, and they continue to halve each other, each new pane getting smaller and smaller.

How can I keep the new layout I've just created, but have all vertical and horizontal splits equally balanced, like vim(1) does with ^w =?

  • The description for the "tiled" layout says "Panes are spread out as evenly as possible over the window in both rows and columns." Could you explain how what you want is different from this please? – Lars Kotthoff Feb 29 '12 at 18:56
  • 1
    Sure. This describes it very well: https://gist.github.com/1942422 – Aaron Toponce Mar 02 '12 at 19:39

7 Answers7

474

Vertically

select-layout even-vertical
Usually assigned to: Ctrl+b, Alt+2

Horizontally

select-layout even-horizontal
Usually assigned to: Ctrl+b, Alt+1

Chris
  • 140
blackd
  • 4,756
  • 87
    For other people who are wondering: C-b M-2 means Control-b, and M-2 means alt+2. – Christophe De Troyer Jun 21 '14 at 20:49
  • 40
    M-2 means ESC+2 for me on Debian using Gnome Terminal. Probably depends on setup. – arcyqwerty Nov 24 '14 at 05:06
  • 9
    C-... and M-... are emacs-ims M- means "meta" which is [Alt] in combination with or [Esc] followed by the referenced key both options look the same over the wire, but there is the possibility that your GUI may be trapping the [Alt] sequence – Jasen Jul 17 '15 at 03:56
  • 11
    Just to put this here in case it helps someone else, because I am constantly confused, "vertical" and "horizontal" are the direction of the spacing--that is, choosing even-vertical will create a layout where the three panes are stacked vertically, equal in height, where even-horizontal will create a layout where the three panes are side-by-side, equal in width – A. Wilson Mar 22 '16 at 16:20
  • 1
    How to do M-2 on macOS with a keyboard where "2" requires pressing shift (like the French keyboard)? I didn't succeed, with various combinations of alt, control, command, escape and shift + 2… – Eric O. Lebigot Apr 07 '18 at 09:05
  • Kind of silly but the way I remember which Alt+? key to use is "1" looks like a horizontal pane and "2" looks like 2 panes on top of each other. – Manny D Jun 28 '19 at 14:20
  • Any way to use Alt+1 in wsl.exe? – walnut_salami Mar 06 '20 at 20:48
  • 350th from me! cheers! – IamMashed Feb 25 '21 at 12:43
  • alt+n switches to the n'th terminal tab. – Erik Vesterlund Mar 12 '21 at 21:29
  • on macOS, there is an Edit menu item "Use Option as Meta" in the Terminal app. Enable that, and you can hold the Option key to type the Meta keys. – stux Jun 17 '21 at 04:14
164

You can use ctrl-b space to cycle through layouts with even spacing, but that won't necessarily preserve the layout you had.

Issac Trotts
  • 1,641
  • 1
  • 9
  • 2
44

From the command line you can use

tmux select-layout tiled

to make your splits all roughly equal size. You can bind that to a key command as well.

8

I don't know any single key shortcut, but maybe this helps you:

You can try to write some script to do the layout, and bind a key to the script. You can do this by using tmuxcommand pipe-pane [-o] [-t target-pane] [shell-command] to write the current layout to the script. Next you need to read a layout prepared by the script using tmuxcommand select-layout .

5

I was having a hard time finding the magic incantation to split into 4 equal quadrants, so here it is:

# 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
5

tmux provides with some pre defined layouts, do tmux select-layout and you will have some options:

even-horizontal even-vertical main-horizontal main-vertical tiled

  • 1
    Perhaps you could explain what the different layouts do, and how they address the original question (in ways that haven’t already been covered). – Stephen Kitt Nov 18 '21 at 17:53
3

ctrl b and then :resize-pane -M and then just use your mouse! (requires mouse-mode to be enabled)