web-dev-qa-db-fra.com

Comment copier et coller avec une souris avec tmux

J'utilise tmux et OSX. En copiant et collant depuis le terminal avec tmux je peux maintenir Option et sélectionner le texte. Cependant, je ne parviens pas à faire en sorte que le texte reste dans le volet. Donc, lorsque je veux copier du texte, je dois soit faire défiler le volet vers la gauche, soit zoomer le volet, comme indiqué ci-dessous.

Ceci, en plus d'avoir à maintenir la touche Option enfoncée, est pénible. Je sais que je peux entrer en mode visuel et utiliser les mouvements vim pour y arriver, mais je préfère avoir un moyen d'utiliser ma souris. Quelqu'un a-t-il trouvé une solution pour cela?

enter image description hereenter image description here

56
mbigras

Mettez ce bloc de code dans votre ~/.tmux.conf. Cela permettra l'intégration de la souris 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 du texte en surbrillance avec la souris, mais ne lâchez pas la souris. Maintenant, alors que le texte est toujours en surbrillance et appuyé sur la souris, appuyez sur la touche Retour. Le texte en surbrillance disparaîtra et sera copié dans votre presse-papiers. Relâchez maintenant la souris.

En dehors de cela, il y a aussi des choses intéressantes que vous pouvez faire avec la souris comme faire défiler vers le haut et vers le bas, sélectionner le volet actif, etc.

Si vous utilisez une version plus récente de tmux sur macOS, essayez ce qui suit au lieu de celui 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, allez à iTerm2> Préférences> onglet "Général" et dans la section "Sélection", cochez "Les applications dans le 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.)

48
GMaster