Comment copier et coller avec une souris avec tmux

47

J'utilise tmuxet OSX. Lors de la copie et du collage à partir du terminal, tmuxje peux maintenir Optionet sélectionner du texte. Cependant, je ne parviens pas à laisser le texte dans le volet. Ainsi, lorsque je veux copier du texte, je dois faire défiler le volet tout à gauche ou zoomer sur celui-ci, comme indiqué ci-dessous.

Cela en plus d'avoir à maintenir la Optiontouche enfoncée est une douleur. Je sais que je peux entrer en mode visuel et utiliser les mouvements de vim pour y arriver, mais je préférerais pouvoir utiliser ma souris. Quelqu'un at-il trouvé une solution de contournement pour cela?

entrez la description de l'image ici entrez la description de l'image ici

Mbigras
la source
"Cependant, je ne parviens pas à faire en sorte que le texte reste dans le volet." Que veux-tu dire par là?
Blaszard

Réponses:

38

Mettez ce bloc de code dans votre ~/.tmux.conf. Cela activera l'intégration de la souris en vous permettant de copier à partir d'un volet avec votre souris sans avoir à zoomer.

set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -t vi-copy    C-WheelUpPane   halfpage-up
bind -t vi-copy    C-WheelDownPane halfpage-down
bind -t emacs-copy C-WheelUpPane   halfpage-up
bind -t emacs-copy C-WheelDownPane halfpage-down

# To copy, drag to highlight text in yellow, press Enter and then release mouse
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "pbcopy"

Après cela, redémarrez votre session tmux. Mettez en surbrillance du texte avec la souris, mais ne lâchez pas la souris. Maintenant que le texte est en surbrillance et que la souris est enfoncée, appuyez sur la touche Retour. Le texte en surbrillance disparaîtra et sera copié dans votre presse-papiers. Maintenant relâchez la souris.

En dehors de cela, il y a aussi des choses sympas que vous pouvez faire avec la souris, comme le défilement vers le haut ou le bas, la sélection du volet actif, etc.

Si vous utilisez un version plus récente de tmux sur macOS, essayez ce qui suit au lieu de celle ci-dessus:

# macOS only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

Si vous utilisez iTerm sur macOS, accédez à iTerm2> Préférences> onglet "Général", et dans la section "Sélection", cochez la case "Les applications du terminal peuvent accéder au Presse-papiers".

Et si vous utilisez Linux et une version plus récente de tmux, alors

# Linux only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

(Vous pouvez également consulter https://github.com/gpakosz/.tmux pour de nombreuses autres options tmux.)

GMaster
la source
1
Enfin quelque chose qui fonctionne réellement! Copier-coller est la chose la plus ennuyante à essayer de tmux, je l'ai déjà abandonné et les extraits de configuration que j'essayais se comportaient de manière incohérente, merci beaucoup.
Breno Salgado
1
J'utilisais iterm sous mac et devais activer iTerm2> Préférences> onglet "Général", et dans la section "Sélection", "Les applications du terminal peuvent accéder au Presse-papiers". Référence: rushiagr.com/blog/2016/06/16/…
Rujoota Shah le
@RujootaShah Oui, c'est bien ça. Vous devez faire ça. Merci d'avoir partagé.
GMaster
3
Merci! Fonctionne comme un charme. J'avais besoin d'installer sudo apt-get install -y xclip(Ubuntu Linux) cependant.
Petr
fonctionne parfaitement, merci @GMaster
Luja Shrestha