---
title: How to Copy and Paste with tmux on Mac OS X
teaser:
tags: tmux,osx
author: Josh Clayton
published_on: 2012-03-20
---

**Update** (Jul1 19, 2013) - tmux 1.8 is out, and with it comes a simplified
integration with the OS X clipboard. Check out [tmux Copy and Paste on OS X: A
Better
Future](https://thoughtbot.com/blog/post/55885045171/tmux-copy-paste-on-os-x-a-better-future)
for or updated technique.

[tmux](http://tmux.sourceforge.net/) is [becoming pretty popular as of
late](http://www.google.com/trends/?q=tmux&geo=all&date=all), but as with any
new technology, there are skeptics. I'm here to quell some rumors and outline
how to start using tmux effectively.

Out of all the questions I get, the most common is, "Does copying and pasting
work in tmux? I heard it wasn't possible." Forget that noise; copying and
pasting works wonderfully with a couple of extra steps.

## Step 1: Install reattach-to-user-namespace

If you're using Homebrew, run:

    brew install reattach-to-user-namespace

If you're not, [head to the
repository](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard) and follow
the instructions to compile yourself. Be sure to check
out Chris Johnsen's [great
writeup](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/blob/master/README.md)
about what `reattach-to-user-namespace` is actually doing.

## Step 2: Configure tmux

Open up your tmux configuration (typically at ~/.tmux.conf) and throw this
line at the top of the file:

    set-option -g default-command "reattach-to-user-namespace -l zsh"

This assumes that you've installed reattach-to-user-namespace (and it's in
your `$PATH`) and that you're using zsh. Every time you open a new window or
pane, it'll run `reattach-to-user-namespace`, which digs into some of Apple's
inner-workings to enable pbcopy and pbpaste support.

## Step 3: Configure Other Applications

If you're using Vim in a terminal, set your clipboard to the unnamed clipboard
(make sure it's not wrapped in a conditional `has("gui_running")`).

    set clipboard=unnamed

If you want copying and pasting to work from your tmux buffers, you may want
to run something similar to this:

    #!/bin/sh

    while true; do
      if test -n "`tmux showb 2> /dev/null`"; then
        tmux saveb -|pbcopy && tmux deleteb
      fi
      sleep 0.5
    done

That'll look to see if there are any buffers in tmux; if there are, it'll copy
it into the system clipboard and delete the buffer. This is really handy if
you're trying to grab a backtrace or the output from a command.
