tmux

What's tmux?

tmux’s authors describe it as a terminal multiplexer. Behind this fancy term hides a simple concept: Within one terminal window you can open multiple windows and split-views (called “panes” in tmux lingo). Each pane will contain its own, independently running terminal instance. This allows you to have multiple terminal commands and applications running visually next to each other without the need to open multiple terminal emulator windows.

On top of that tmux keeps these windows and panes in a session. You can exit a session at any point. This is called “detaching”. tmux will keep this session alive until you kill the tmux server (e.g. when you reboot)2. This is incredibly useful because at any later point in time you can pick that session up exactly from where you left it by simply “attaching” to that session. -- Ham Vocke, in the Quick And Easy Guide to Tmux linked below.

I've been using tmux for a couple months, and I recommend it to anyone who does lots of terminal work.1 I'm in the position where I use just a fraction of the features, and still find it quite useful, so you shouldn't be worried by the quantity of options.

Introductions

A Quick and Easy Guide to tmux

Introduction, with some links to other resources

dayid's tmux & screen cheat-sheet

Purely a list of commands.

A minimalist guide to tmux – Actualize – Medium

Makes the suggestion that you should start using tmux without panes. I came from emacs, which also has support for panes, so I found them easy to use, but it might be good advice for people who find tmux overwhelming.

Tips

tmux Integration - Documentation

iTerm2 has tmux integration using

tmux -CC

which maps tmux panels to iTerm tabs, with the effect that you can properly select text. In hindsight, this is obvious, but this command didn't do what I originally hoped, which was let me use tmux commands to split panels, and have text selection work naturally.

Running Specs from Vim, Sent to tmux via Tslime

Sending a subset of tests to a tmux pane. Uses rspec and vim, neither of which I use, but I assume that you could create something similar for other editors/testing environments.

Configuration

Making tmux Pretty and Usable - A Guide to Customizing your tmux.conf

Customizing tmux. I have done none of this.

A Minimalist Guide to tmux (HN Comments)

Comments on an article recomended earlier, but it contains a lot of people's opinions on key bindings.

More Sources

A tmux Crash Course

Heap

tmuxinator

Unused, for creating complex sessions

tmux-Resurrect

Unused, plugin to let you persist tmux sessions across reboots


  1. There is also GNU Screen, which predates tmux by 20 years. I've never tried it, and for all I know, it's as good or better.