You don't have to know a lot about tmux

I certainly don't, yet for the past 3 years it's been one of my favourite productivity tools.

Put simply, it's like a window manager for your terminal. No longer will you be burdened by 10 iterm tabs as you start up your local project, ssh to your server, keep webpack running, and download in the background.

Suddenly, as you ssh into your remote machine you have all the window management capabilities you have locally. Much like my opinions on vim, it doesn't take a lot for tmux to be really useful.

Get started?

Install, then run tmux. Well done, most of the way there. To run comamnds in tmux you use a pair of keyboard shortcuts. The default is Ctrl + B. This is often called the Leader. So you'll see things like "Do this thing by Leader + %". That means press Ctrl + B and then press %.

Window Pane Management

To rekindle your love of tabs use Leader + c (C for create). Congrats, on the bottom bar you'll see a new "Window". To close this window, you can simply exit your terminal. There is a keystroke for it, but i've never used it. Want to switch between windows? Just use Leader + <number> where number is the window index.

Splitting the window is great, to do this you want Leader + % or Leader + ". Want to know how to remember them? Me too. I've found this easier to learn by attrition. " creates a horizontal switch. % makes a vertical one.

Tmux is now useful

At this point in tmux we haven't covered plugins, tmuxconf, getting bloody copy and paste to work nicely on a mac. But you don't have to know a lot about tmux for it to be useful. With the above you're already able to jump onto your remote AWS machine and spin up a series of terminals like a pro. No longer creating 5 different ssh sessions, but just one and multiplexing the terminal instead.

Much like as mentioned in the vim post, the consistency that can be delivered to a developer by the use of tools like tmux and vim can mean that there's no discernable difference between you working on your local machine and when you're running something remotely.