Many at thoughtbot run their editor+shell combos inside of tmux. Some remote pair program with ssh, vim, and tmux.
Getting started with tmux, these are the questions I’ve had.
Install tmux, read the documentation, and fire it up.
brew install tmux
man tmux
tmux -u
Yes. We have these lines in tmux.conf in thoughtbot/dotfiles:
# improve colors
set -g default-terminal "screen-256color"
# soften status bar color from harsh green to light gray
set -g status-bg '#666666'
set -g status-fg '#aaaaaa'
# remove administrative debris (session name, hostname, time) in status bar
set -g status-left ''
set -g status-right ''
The “prefix” namespaces tmux commands. By default it is Ctrl+b. In our tmux.conf in thoughtbot/dotfiles, we bound it to Ctrl+a:
# act like GNU screen
unbind C-b
set -g prefix C-a
This was non-obvious to me.
Enter “copy mode”:
prefix+[
Use vim bindings to page up and down:
Ctrl+b
Ctrl+f
Add this to your tmux.conf:
# enable copy-paste http://goo.gl/DN82E
# enable RubyMotion http://goo.gl/WDlCy
set -g default-command "reattach-to-user-namespace -l zsh"
Add this to your tmux.conf to use vim’s home-row keys for movement between windows and panes:
# act like vim
setw -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind-key -r C-h select-window -t :-
bind-key -r C-l select-window -t :+
One day I might work on Airbrake. Another day, a client project. I’d like to name my tmux sessions so I can leave one, drop into another, and go back to the original with all my state maintained (files still open in my editor, console/logs I want open, etc.).
Create a new session:
tmux new -s airbrake
Attach to a session:
tmux attach -t airbrake
Create a window:
prefix c
Move to window 1:
prefix 1
Move to window 2:
prefix 2
Kill a window:
prefix x
I believe in setting my mouse free but it takes time for muscle memory to make this fast.
~/.tmux.conf?After editing ~/.tmux.conf, execute this from a shell:
tmux source-file ~/.tmux.conf
I’ve had a love-hate relationship with tmux in my first week using it, but the brief moments of flow I’ve experienced so far are enough to keep trying it.
Give tmux a shot and if you have any other tips, I’d love to hear them.
Written by Dan Croak.