Tmux 2.4+ con enlaces de modo de copia vi y xclip :
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"
Para versiones anteriores de tmux, enlaces de modo de copia emacs (el valor predeterminado) o plataformas que no son X (es decir, sin xclip), consulte la explicación a continuación.
Explicación: Primero debemos habilitar la opción del mouse para que tmux capture el mouse y nos permita vincular los eventos del mouse:
set-option -g mouse on
Gnome-terminal no admite la configuración del portapapeles utilizando secuencias de escape xterm, por lo que debemos asegurarnos de que la set-clipboard
opción esté desactivada:
set-option -s set-clipboard off
Esta opción podría ser compatible y habilitada de forma predeterminada en iTerm2 (consulte set-clipboard
el manual de tmux), lo que explicaría el comportamiento allí.
Luego podemos vincular la MouseDragEnd1Pane
"clave" del modo de copia , es decir, cuando se suelta el primer botón del mouse después de hacer clic y arrastrar en un panel, a un comando tmux que toma la selección del modo de copia actual (realizada por el enlace predeterminado para MouseDrag1Pane
) y la canaliza a un comando de shell. Este comando tmux era copy-pipe
anterior a tmux 2.4 y desde entonces ha cambiado a send-keys -X copy-pipe[-and-cancel]
. En cuanto al comando de shell, simplemente necesitamos algo que establezca el contenido del portapapeles del sistema a lo que se canaliza a él; xclip se usa para hacer esto en los siguientes comandos. Algunos reemplazos equivalentes para las "xclip -selection clipboard -i"
siguientes en plataformas que no son X son "wl-copy"
(Wayland), "pbcopy"
(macOS), "clip.exe"
(Windows, WSL) y "cat /dev/clipboard"
(Cygwin, MinGW).
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"
Tmux 2.2 a 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"
Antes de tmux 2.2:
Copiar después de que el soporte de arrastre del mouse se agregó originalmente en Tmux 1.3 al configurar la nueva mode-mouse
opción en on
. Tmux 2.1 cambió el soporte del mouse a los enlaces de teclas familiares del mouse, pero no tenía DragEnd
enlaces, que se introdujeron en 2.2. Por lo tanto, antes de 2.2, creo que el único método para configurar el portapapeles del sistema al arrastrar el mouse fue a través del uso incorporado de secuencias de escape xterm (la set-clipboard
opción). Esto significa que es necesario actualizar al menos a tmux 2.2 para obtener el comportamiento de arrastrar y copiar para terminales que no son compatibles set-clipboard
, como el Terminal GNOME.