Use system clipboard in vi-copy mode in tmux
This was also answered here, but it took me a while to understand how to use it, so I'll explain for anyone else that was confused.
This is basically the setting you're going for:
(for tmux versions <2.5)
bind -t vi-copy y copy-pipe 'xclip -in -selection clipboard'
(for tmux versions >=2.5)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
Then hit Ctrl+b
[
to enter copy mode. Then hit Space
followed by whatever vi movement keys to make a selection. Then, instead of hitting Enter
, hit y
and the selection will be copied to the clipboard.
Note: this assumes you're using tmux's default bindings with vi keys.
Tmux has different key binding tables for different modes. So, bind-key -t vi-copy y
sets the action for the y
key in copy mode. Initially, I was confused because I was used to hitting Enter
after making a selection. Enter
is actually just the default key binding for the copy-selection
command (when in copy mode). The copy-pipe
command allows us to bind a new key to pipe the selection to a command, which in this case is xclip
.
You can see all key bindings for copy mode by running list-keys -t vi-copy
.
The updated version to Ben Davis answer
compatible with tmux 2.4
bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"
Take a look at the tmux-yank plugin for tmux. https://github.com/tmux-plugins/tmux-yank
It provides an automated way to copy/paste from tmux to the system clipboard. It works on OSX/Linux/Cygwin systems.