Tmux 2.4+ avec les liaisons en mode copie vi et 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"
Pour les anciennes versions de tmux, les liaisons en mode copie emacs (par défaut) ou les plates-formes non X (c'est-à-dire sans xclip), voir l'explication ci-dessous.
Explication: Nous devons d'abord activer l'option souris afin que tmux capture la souris et nous permette de lier les événements de souris:
set-option -g mouse on
Gnome-terminal ne prend pas en charge la définition du presse-papiers à l'aide de séquences d'échappement xterm, nous devons donc nous assurer que l' set-clipboard
option est désactivée:
set-option -s set-clipboard off
Cette option peut être prise en charge et activée par défaut sur iTerm2 (voir set-clipboard
dans le manuel tmux), ce qui expliquerait le comportement là-bas.
Nous pouvons ensuite lier la MouseDragEnd1Pane
"clé" du mode copie , c'est-à-dire, lorsque le premier bouton de la souris est relâché après avoir cliqué et fait glisser dans un volet, à une commande tmux qui prend la sélection actuelle du mode copie (faite par la liaison par défaut pour MouseDrag1Pane
) et la redirige à une commande shell. Cette commande tmux était copy-pipe
antérieure à tmux 2.4 et a depuis changé en send-keys -X copy-pipe[-and-cancel]
. Quant à la commande shell, nous avons simplement besoin de quelque chose qui définira le contenu du presse-papiers du système sur ce qui lui est acheminé; xclip est utilisé pour ce faire dans les commandes suivantes. Certains remplacements équivalents "xclip -selection clipboard -i"
ci-dessous sur les plates-formes non X sont "wl-copy"
(Wayland), "pbcopy"
(macOS), "clip.exe"
(Windows, WSL) et "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 à 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"
Avant tmux 2.2:
La copie après la prise en charge de la souris a été initialement ajoutée dans Tmux 1.3 en définissant la nouvelle mode-mouse
option sur on
. Tmux 2.1 a changé la prise en charge de la souris pour les liaisons de touches de souris habituelles, mais n'avait pas de DragEnd
liaisons, qui ont été introduites dans 2.2. Ainsi, avant la version 2.2, je crois que la seule méthode pour définir le presse-papiers du système sur la souris était par l'utilisation intégrée de séquences d'échappement xterm (l' set-clipboard
option). Cela signifie qu'il est nécessaire de mettre à jour au moins tmux 2.2 pour obtenir le comportement de glisser-copier pour les terminaux qui ne prennent pas en charge set-clipboard
, tels que GNOME Terminal.