Skip to content

Stage 2 — Daily Driver

You can survive in tmux. Now learn to live in it. This stage covers the day-to-day skills: organising work across windows, splitting panes deliberately, naming things sensibly, resizing on the fly, and scrolling through history with copy mode.


After this stage you will be able to:

  • Use windows as tabs to separate roles within a project (dev, logs, db, git).
  • Split, navigate, zoom, and kill panes without thinking about it.
  • Name sessions and windows so a glance at the status bar tells you where you are.
  • Resize panes to taste, including with the mouse.
  • Scroll through scrollback and copy text without leaving tmux.

  • Stage 1 complete — you can create sessions, split panes, and detach.
  • Comfortable with the prefix-key pattern (Ctrl+a, release, next key).

A window is the tmux equivalent of a browser tab. One session, many windows, each running its own shells. The status bar shows the list at the bottom:

[nafbi] 1:dev* 2:logs 3:claude 4:git

The asterisk marks the active window.

KeystrokeAction
Ctrl+a cCreate a new window
Ctrl+a nSwitch to next window
Ctrl+a pSwitch to previous window
Ctrl+a 09Jump straight to window number
Ctrl+a ,Rename current window
Ctrl+a wShow interactive window picker (nice for many sessions)
Ctrl+a &Kill current window (confirms first)

The pattern that scales: one session per project, multiple windows per role.

Session: nafbi (the project)
├── 1:dev (editor, dev server)
├── 2:logs (tail -f on whatever log)
├── 3:db (psql shell or db tool)
├── 4:git (git status, git log, commits)
└── 5:claude (claude code running here)

This keeps each window single-purpose and means switching roles is a single keystroke (Ctrl+a 2 to look at logs, Ctrl+a 1 to come back to the editor).


Panes are for things you want to see at the same time. Editor next to a test runner. Server output next to a curl command. Use windows for things you switch between; use panes for things you watch together.

KeystrokeAction
Ctrl+a %Split pane vertically (creates a left/right split)
Ctrl+a "Split pane horizontally (creates a top/bottom split)
Ctrl+a arrow keysMove focus to the pane in that direction
Ctrl+a zToggle zoom — make the current pane fill the window, press again to restore
Ctrl+a qBriefly flash pane numbers (press the number while flashing to jump to that pane)
Ctrl+a xKill current pane (confirms first)
Ctrl+a {Swap current pane with the previous one
Ctrl+a }Swap current pane with the next one
Ctrl+a !Promote the current pane into its own window

When you’re in a 4-pane layout but need to focus on one for a moment — Ctrl+a z. The pane fills the window. Press again to come back to the layout. No re-splitting required.


🏷️ Naming — make the status bar useful

Section titled “🏷️ Naming — make the status bar useful”

Default session and window names are numbers. That tells you nothing. Name them.

KeystrokeAction
Ctrl+a ,Rename the current window
Ctrl+a $Rename the current session

You can also create a session with a name from the start:

Terminal window
tmux new -s nafbi

And rename windows from inside tmux’s command prompt:

Ctrl+a :

Then type:

rename-window logs
  • Sessions = project names. nafbi, thrivesend, parallelself, ras-kruger. Lowercase, kebab-case, short.
  • Windows = roles. dev, logs, db, git, claude, tests. One word. The window list is read at-a-glance, so brevity wins.
  • Avoid generic names. session1, temp, work — fine for a one-off, terrible if you have three running at once.

Default splits are 50/50. Most of the time you want something else — bigger editor, smaller log pane.

KeystrokeAction
Ctrl+a Alt+arrowResize current pane in that direction by 5 cells
Ctrl+a Ctrl+arrowResize current pane in that direction by 1 cell (fine adjustment)
Ctrl+a SpaceCycle through built-in layouts

The built-in layouts (cycle with Ctrl+a Space):

  • even-horizontal — equal-width columns
  • even-vertical — equal-height rows
  • main-horizontal — one big pane on top, equal panes below
  • main-vertical — one big pane on the left, equal panes on the right (great for IDE-style coding)
  • tiled — even grid

main-vertical is the IDE feel: editor on the left, stacked terminals on the right.

If you enable mouse on (Stage 3 covers this), you can drag pane borders directly with the mouse, click panes to focus them, and scroll with the wheel. For pure terminal purists this is heresy. For everyone else, turn it on.


📋 Copy mode — scrollback and selection

Section titled “📋 Copy mode — scrollback and selection”

Default tmux behaviour: the mouse wheel does nothing, you can’t scroll up. That’s because tmux owns the screen. To look at output that has scrolled off, you enter copy mode.

KeystrokeAction
Ctrl+a [Enter copy mode
arrow keys / h j k lMove the cursor
Page Up / Page DownScroll a page at a time
Ctrl+u / Ctrl+dScroll half a page
g / GJump to top / bottom of scrollback
/Search forward
?Search backward
n / NNext / previous match
vStart selection (vi-style)
yCopy selection (and exit copy mode)
q or EscExit copy mode without copying
Ctrl+a ]Paste the most recently copied buffer

This tutorial assumes vi-style keys in copy mode, set via set -g mode-keys vi in ~/.tmux.conf — Stage 3 wires this up.

By default the y keystroke copies to tmux’s internal buffer, not the macOS clipboard. To get the selection into your Mac clipboard so you can paste anywhere with Cmd+V, you need:

  1. set -g set-clipboard on in ~/.tmux.conf.
  2. A terminal that supports OSC 52 — iTerm2, Ghostty, and modern Terminal.app all do.

Stage 3 sets this up.


This is what a fluent tmux session looks like in practice, end to end:

Terminal window
# 1. Start the day
tmux new -s nafbi
# Inside the session:
# Window 1 named 'dev', split into two panes — editor + shell
Ctrl+a , # rename window to 'dev'
Ctrl+a % # split vertically
# (left pane runs 'nvim .', right pane runs the dev server)
# 2. Add a logs window
Ctrl+a c # new window
Ctrl+a , # rename to 'logs'
tail -f /var/log/syslog
# 3. Add a git window
Ctrl+a c
Ctrl+a , # rename to 'git'
# 4. Add a claude window
Ctrl+a c
Ctrl+a , # rename to 'claude'
claude
# 5. Switch back to dev
Ctrl+a 1
# 6. End of day — just detach
Ctrl+a d

Tomorrow:

Terminal window
tmux attach -t nafbi

Everything is exactly as you left it.


You can drive tmux. Now make it yours. Stage 3 walks through ~/.tmux.conf, the recommended config additions, Mac terminal setup, multi-session workflow, and the iPad/Termius polish.

Continue to Stage 3 — Customisation.