Skip to content

Instantly share code, notes, and snippets.

@jottr
Forked from andreyvit/tmux.md
Last active August 29, 2015 14:08

Revisions

  1. @andreyvit andreyvit created this gist Jun 13, 2012.
    158 changes: 158 additions & 0 deletions tmux.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,158 @@
    # tmux cheat sheet

    (C-x means ctrl+x, M-x means alt+x)


    ## Prefix key

    The default prefix is C-b. If you (or your muscle memory) prefer C-a, you need to add this to `~/.tmux.conf`:

    # remap prefix to Control + a
    set -g prefix C-a
    # bind 'C-a C-a' to type 'C-a'
    bind C-a send-prefix
    unbind C-b

    I'm going to assume that C-a is your prefix.


    ## Sessions, windows, panes

    Session is a set of windows, plus a notion of which window is current.

    Window is a single screen covered with panes. (Once might compare it to a ‘virtual desktop’ or a ‘space’.)

    Pane is a rectangular part of a window that runs a specific command, e.g. a shell.


    ## Getting help

    Display a list of keyboard shortcuts:

    C-a ?

    Navigate using Vim or Emacs shortcuts, depending on the value of `mode-keys`. Emacs is the default, and if you want Vim shortcuts for help and copy modes (e.g. j, k, C-u, C-d), add the following line to `~/.tmux.conf`:

    setw -g mode-keys vi

    Any command mentioned in this list can be executed as `tmux something` or `C-a :something` (or added to `~/.tmux.conf`).


    ## Managing sessions

    Creating a session:

    tmux new-session -s work

    Create a new session that shares all windows with an existing session, but has its own separate notion of which window is current:

    tmux new-session -s work2 -t work

    Attach to a session:

    tmux attach -t work

    Detach from a session: `C-a d`.

    Switch between sessions:

    C-a ( previous session
    C-a ) next session
    C-a L ‘last’ (previously used) session
    C-a s choose a session from a list

    Other:

    C-a $ rename the current session
    C-a


    ## Managing windows

    Create a window:

    C-a c create a new window

    Switch between windows:

    C-a 1 ... switch to window 1, ..., 9, 0
    C-a 9
    C-a 0
    C-a p previous window
    C-a n next window
    C-a l ‘last’ (previously used) window
    C-a w choose window from a list

    Switch between windows with a twist:

    C-a M-n next window with a bell, activity or
    content alert
    C-a M-p previous such window


    Other:

    C-a , rename the current window
    C-a & kill the current window


    ## Managing split panes

    Creating a new pane by splitting an existing one:

    C-a " split vertically (top/bottom)
    C-a % split horizontally (left/right)

    Switching between panes:

    C-a left go to the next pane on the left
    C-a right (or one of these other directions)
    C-a up
    C-a down
    C-a o go to the next pane (cycle through all of them)
    C-a ; go to the ‘last’ (previously used) pane

    Moving panes around:

    C-a { move the current pane to the previous position
    C-a } move the current pane to the next position
    C-a C-o rotate window ‘up’ (i.e. move all panes)
    C-a M-o rotate window ‘down’
    C-a ! move the current pane into a new separate
    window (‘break pane’)
    C-a :move-pane -t :3.2
    split window 3's pane 2 and move the current pane there

    Resizing panes:

    C-a M-up, C-a M-down, C-a M-left, C-a M-right
    resize by 5 rows/columns
    C-a C-up, C-a C-down, C-a C-left, C-a C-right
    resize by 1 row/column

    Applying predefined layouts:

    C-a M-1 switch to even-horizontal layout
    C-a M-2 switch to even-vertical layout
    C-a M-3 switch to main-horizontal layout
    C-a M-4 switch to main-vertical layout
    C-a M-5 switch to tiled layout
    C-a space switch to the next layout


    Other:

    C-a x kill the current pane
    C-a q display pane numbers for a short while


    ## Other config file settings

    Force a reload of the config file on C-a r:

    unbind r
    bind r source-file ~/.tmux.conf

    Some other settings that I use:

    setw -g xterm-keys on