Tmux 2.4 +:
set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"
Antes do tmux 2.4:
set-option -g mouse on
set-option -s set-clipboard off
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -se c -i"
Explicação: Primeiro, precisamos ativar a opção do mouse para que o tmux capture o mouse e nos permita vincular os eventos do mouse:
set-option -g mouse on
O terminal Gnome não suporta a configuração da área de transferência usando seqüências de escape xterm, portanto, devemos garantir que a opção set-clipboard
esteja desativada:
set-option -s set-clipboard off
Esta opção pode ser suportada e ativada por padrão no iTerm2 (veja set-clipboard
no manual do tmux), o que explicaria o comportamento lá.
Podemos, então, vincular o modo de cópia MouseDragEnd1Pane
"key", ou seja, quando o primeiro botão do mouse é liberado depois de clicar e arrastar em um painel, para um comando tmux que usa a seleção atual do modo de cópia ligação para MouseDrag1Pane
) e canaliza para um comando shell. Este comando tmux era copy-pipe
antes do tmux 2.4, e desde mudou para send-keys -X copy-pipe[-and-cancel]
. Quanto ao comando shell, simplesmente precisamos de algo que defina o conteúdo da área de transferência do sistema para qualquer coisa que seja canalizada para ele; O xclip é usado para fazer isso nos seguintes comandos.
Tmux 2.4 +:
# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
Antes do tmux 2.4:
# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"