tmux in 5 Minutes
If you work on projects that require you to open multiple terminal tabs, then tmux (and its super buddy, tmuxinator) will help you be more productive! tmux allows you to run multiple sessions in one terminal, and tmuxinator allows you to save tmux configurations.
For example, if you're a Rails developer, you could easily open separate terminal sessions for running a Rails server, a Rails console, and tailing logs. When working on a Clojure-based forum I have four terminal sessions running: a shell, a grunt server building the frontend, datomic, and a shell for deployments:
In order to start all this up, I only have to run one command:
ath. This is much more convenient than trying to remember which
services I need and manually starting each one up.
Below are instructions for getting started with tmux and tmuxinator.
- First, install tmux using the instructions (for mac users) in this gist.
- Next, install tmuxinator using
gem install tmuxinator
- Create your first tmuxinator config file under
~/.tmuxinator/sample.yml. Its contents should look like this, where the command under
serveris whatever's appropriate for your environment:
name: sample root: ~/path/to/your/project pre: git pull windows: - shell: - server: bundle exec rails s
pre option runs that command in the
root directory before
trying to open any "windows". (I think of windows as tmux's "virtual
tabs"). You can then start this tmux session with "mux sample". To
navigate back and forth between the windows, use
C-b n for "next
C-b p for "previous window".
C-b means "hold down
control and hit the 'b' key". To leave a tmux session, you use the
C-b d. If you leave the session, it's still actually
running; any process you started in your windows is still executing.
I rarerly ever use other commands, but if you need more, here's a
To completely end a tmux session, you have to kill it. To do that, you
run the command
tmux kill-session -t sample, where "sample" is the
name option in your tmuxinator config. I've created an alias for
alias "tmk"="tmux kill-session -t". That way I only have to
I hope you find this useful! For more information, you can check out tmuxinator's github repo. You can do some pretty crazy stuff, like split your terminal into multiple panes. There's also a a handy book on tmuxinator available from the Pragmatic Programmers if you want to really go nuts with it.
I hope you've found this tip useful!