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.
How do I get started?
Install tmux, read the documentation, and fire it up.
brew install tmux man tmux tmux -u
Can I make the environment look good?
Yes. We have these lines in
# 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 ''
What’s a prefix?
The “prefix” namespaces tmux commands. By default it is
Ctrl+b. In our
thoughtbot/dotfiles, we bound it to
# act like GNU screen unbind C-b set -g prefix C-a
How can I scroll up to see my backtraces?
This was non-obvious to me.
Enter “copy mode”:
Use vim bindings to page up and down:
How can I copy text?
Add this to your
# enable copy-paste http://goo.gl/DN82E # enable RubyMotion http://goo.gl/WDlCy set -g default-command "reattach-to-user-namespace -l zsh"
How can I make tmux act more like vim?
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 :+
How do I name sessions?
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
How do I split and move between windows?
Create a window:
Move to window 1:
Move to window 2:
Kill a window:
I believe in setting my mouse free but it takes time for muscle memory to make this fast.
How do I reload
~/.tmux.conf, execute this from a shell:
tmux source-file ~/.tmux.conf
Give it a shot
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.