Tmux

tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal.
—  tmux Wiki

Tmux is my daily driver for terminals, CLI and code [[Neovim|editors].

Cheat sheet

  • List shortcuts: ?
  • Copycat search: /
  • Reload config (without killing server): r
  • Save environment:^s, be careful, it will overwrite your current environment
  • Restore environment:^r
  • List paste buffers: b
  • Choose which buffer to paste from, and paste from it: B
  • Paste from the top paste buffer: p
  • Paste into current buffer from clipboard: C-S-v (without prefix)
  • Documentation search (cheat.sh): i
  • Big clock: t
  • Prompt for command: :

Sessions and windows

Sessions are the independent workspaces of Tmux.

  • Rename window (tab): , (comma)
  • Rename session: $
  • New tmux session: tmux from command line or :new<CR> from tmux session.
  • New tmux session with name: tmux new -s myname or :new -s myname<CR>
  • Attach: tmux a (or at, or attach) or use tma alias. Optionally you can use session name (tma -t myname).
  • List sessions: tmux ls or use tml alias.
  • Kill specific session: tmux kill-session -t myname.
  • You can use ==tmux kill-server== to cleanly and gracefully kill all tmux open sessions (and server). Alternative is Q keybinding.
  • You can force kill all tmux processes with ==pkill -f --bind=enter:replace-query+print-querytmux==.
  • If you are inside a tmux session you would like to keep, use ==tmux kill-session -a== to close all other sessions.
  • Jump next and previous session: ), (
  • Interactive window/session list.

w, S. Use j and k to navigate, and switch by hitting <CR>.

  • Find window (changed to tmux-sessionizer): ^a

  • Create window (tab) with current path if configured: c

  • Previous window (custom binding, last-window): C-6

  • Next window (tab): C-n

  • Previous window (tab): C-p

  • Move window to the left: P

  • Move window to the right: N

  • Kill window (tab): X

  • Kill server: q

  • Detach: d

  • List and terminate clients: :list-clients, to terminate select and press q

Panes

  • Swap pane up, right, left, down: k, l, h, j

  • Select up, right, left, down pane: C-k, C-l, C-h, C-j

  • Move the current pane left: {

  • Move the current pane right: }

  • Open tmux context menu (RMB): C->

  • Split horizontally/vertically: s, v

  • Make panes vertical, select layout even-vertical: +

  • Make panes horizontal, select layout even-horizontal: =

  • Last pane (back and forth): C-w

  • Toggle pane zoom (maximize current pane, other panes are hidden): o or z

  • Toggle between layouts: space

  • Swap window left: C-S-h, :swap-window -t -1; select-window -t -1

  • Swap window right: :swap-window -t +1; select-window -t +1

  • Do I need always use prefix to resize panes?


No, if you strike key fast enough (to hold you need to configure repeat-time option).

  • Resize pane up (by 5): M-Up

  • Resize pane down (by 5): M-Down

  • Resize pane left (by 5): M-Left

  • Resize pane right (by 5): M-Right

  • Resize pane up (by 1): C-Up

  • Resize pane down (by 1): C-Down

  • Resize pane left (by 1): C-Left

  • Resize pane right (by 1): C-Right

  • Join pane: _ TODO: not actually working, need to investigate

  • Kill pane: x

  • Break pane into a window: -

Commands

  • Sync panes (show same text in all panes): :setw synchronize-panes

Copy mode

  • With this option set, we can use h, j, k, l, w, e, ^, $, etc. to move

  • around our buffer.

  • Enter copy mode: Enter

  • To get out of Copy mode, we just press the ==Enter== key (or y to yank

  • and exit).

  • Jump to character on same line: f

  • Back to indentation: ^

  • Clear selection: Escape

  • Copy selection: Enter

  • Cursor down: j

  • Cursor left: h

  • Cursor right: l

  • Cursor to bottom line: L

  • Cursor to middle line: M

  • Cursor to top line: H

  • Cursor up: k

  • End of line: $

  • Goto line: :

  • Half page down: C-d

  • Half page up: C-u

  • Next page: C-f

  • Next word: w

  • Previous page: C-b

  • Previous word: b

  • Quit mode: q

  • Scroll down: C-Down or J

  • Scroll up: C-Up or K

  • Search again: n

  • Search backward: ?

  • Search forward: /

  • Start of line: 0

  • Start selection: Space