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.
Introduction, with some links to other resources
Purely a list of commands.
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.
iTerm2 has tmux integration using
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.
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.
Customizing tmux. I have done none of this.
Comments on an article recomended earlier, but it contains a lot of people's opinions on key bindings.
Unused, for creating complex sessions
Unused, plugin to let you persist tmux sessions across reboots