Copy / Paste Text Selections Between Tmux And The Clipboard


Answer :

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.



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable