Copy / paste text selections between tmux and the clipboard

Use the following tmux.conf with copy-pipe in the new versions of tmux (1.8+):

set -g mouse on
# To copy:
bind-key -n -t emacs-copy M-w copy-pipe "xclip -i -sel p -f | xclip -i -sel c "

# To paste:
bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
  1. prefix+[ into copy-mode
  2. select content with mouse(hold)
  3. M-w to copy that part into system clipboard
  4. C-y the paste it inside tmux, C-v to paste it inside other regular application like web browser.

Please note that, with Tmux 2.4 (since this commit), the binding syntax has changed. I paraphrase this Github comment to summarise the change briefly:

  1. replace -t with -T
  2. replace vi-<name> with <name>-mode-vi
  3. prefix the command with send-keys -X

I had:

bind-key -n -t vi-copy Enter copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'
bind-key -n -t vi-copy MouseDragEnd1Pane copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'

which I needed to change to:

bind-key -n -T copy-mode-vi Enter send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'
bind-key -n -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'

From the changelog:

Key tables have undergone major changes. Mode key tables are no longer separate from the main key tables. All mode key tables have been removed, together with the -t flag to bind-key and unbind-key.

The emacs-edit, vi-edit, emacs-choose and vi-choose tables have been replaced by fixed key bindings in the command prompt and choose modes. The mode-keys and status-keys options remain.

The emacs-copy and vi-copy tables have been replaced by the copy-mode and copy-mode-vi tables. Commands are sent using the -X and -N flags to send-keys. So the following:

bind -temacs-copy C-Up scroll-up
bind -temacs-copy -R5 WheelUpPane scroll-up

Becomes:

bind -Tcopy-mode C-Up send -X scroll-up
bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up

These changes allows the full command parser (including command sequences) and command set to be used - for example, the normal command prompt with editing and history is now used for searching, jumping, and so on instead of a custom one. The default C-r binding is now:

bind -Tcopy-mode C-r command-prompt -p'search up' "send -X search-backward-incremental '%%'"

There are also some new commmands available with send -X, such as copy-pipe-and-cancel.


While other answers may help, here's how I do the same:

  • Shift + select the text with the cursor.
  • Ctrl + Shift + C to copy the text to clipboard.