Yep, this is the one. You can stop searching now. Just bookmark this page and come back here when you wanna remember some basic tmux keystroke or to setup a basic tmux config in a fresh Linux/Unix box 😉
🤔 Wait a minute, what the hell is tmux?
Tmux is a terminal multiplexer. Wait, what? Why I need that?
- You just connected to a Linux box through SSH, but hey, I want to run more than one command at a time! One shell is just not enough! Use tmux and you can have any number of terminals you want!
- You connected to a Linux box through SSH, but hey, I want to run this command forever! Use tmux and you can run any command you want, detach from the terminal and it will keep running. For-eh-vah!
- You love the good and old terminal, but you want more power to switch between shells really freaking fast. Use tmux!
- You love both the terminal and Vim. Use tmux!
🤘 Cool! How I install it?
sudo apt install tmux
brew install tmux
Download this minimal config file I created at your home sweet home. It has the minimal required to improve your UX on tmux:
wget https://gist.githubusercontent.com/automata/2a3e8a276b2fd05ae13d086422dc4140/raw/b09631ed5255d32a93cd2e1f396ef52631409fcd/tmux.conf -O ~/.tmux.conf
🤓 OK it was easy… how can I use it now?
First, some basic concepts you'll become familiar with:
- Tmux runs sessions where we can attach clients to
- Each session can have many windows (listed on the bottom)
- Each window can have many panes (the split panes you'll see)
- Each new pane is a new bash prompt/terminal
To create a new session:
Now you can type
C-b dand you'll dettach from the session. It's still running there, but you can exit you're SSH session now and attach again later… and all your beloved terminals will still be running 😍
To attach to a session you just created:
To list existing sessions:
To attach to a specific session (see the first column from previous command, that's the id you need to use here. I'm using session zero):
tmux a -t 0
🤸🏻♀ That's super cool! But how can I move around?!
All commands start with
C is the
command key on Mac and the
ctrl key on Linux). So, basically always type the
C-b prefix before almost every keystroke.
And here are the commands I use all the time and they should be enough for you to use tmux for weeks without having to worry much about it:
C-b c Create a new window
C-b | Split window vertically
C-b - Split window horizontally
C-b <arrow keys> Move between panes
C-b <h,j,k,l> Move between panes Vim-style
C-b <number> Go to window number n (listed at bottom)
C-b [ Enter in "scroll mode".
- Use arrows and page-down/up to move
- Type Enter to exit the mode.
C-b d Detach from session (to get back: tmux a)
😎 That's it?
Yep… and nope 😉 Tmux is an awesome piece of software with many, many more possibilities. Check its official Git repos for more and follow me on Twitter, I'll keep sharing tools and tricks I use daily as a Machine Learning engineer and CTO that can probably help you too! 👋