A few days ago, I wanted to copy text from my tmux shell.
Unfortunately, the defaults from your standard terminal and shell (kitty and fish) don’t work, as tmux has its own key bindings.
I came across an excellent blog post called Everything you need to know about Tmux copy paste - Ubuntu, which listed all the steps you need to take.
First, the default behavior:
- Enter ‘copy mode’ by pressing CTRL
+b, [.- Use the arrow keys to go to the position from where you want to start copying. Press CTRL
+SPACEto start copying.- Use arrow keys to go to the end of text you want to copy. Press ALT
+w or CTRL+w to copy into Tmux buffer.- Press CTRL
+b, ] to paste in a possibly different Tmux pane/window.
Please note that CTRL+B is the default tmux “prefix”. You can adjust it to a different key combination, if you want 1.
But you can customize your tmux configurations (works for tmux 2.4+):
## ~/.tmux.conf
## Use vim keybindings in copy mode
set-option -g mouse on
setw -g mode-keys vi
set-option -s set-clipboard off
bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X rectangle-toggle
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel 'xclip -se c -i'
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip -se c -i'
- Now you can enter copy mode normally with
CTRL+Band[. - Navigate the copy mode with vi-like-key bindings (
ufor up,dfor down, etc.) - Hit
vto start copying. - Press
yorEnterto copy the text into the tmux buffer. This automatically cancels copy mode. - Paste into the buffer with
<prefix>+P(make sure that it’s uppercase P).
Or alternatively, use the mouse to copy text after you’ve entered copy mode.
The above commands use xclip, a Linux command line tool for X11. You can replace xclip -se c -i with a platform-specific command like pbcopy (MacOS) or wl-copy (Wayland).