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?
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.)