Como copiar e colar com um mouse com tmux

21

Estou usando tmux e OSX. Ao copiar e colar do terminal com tmux , posso manter pressionado Option e selecionar texto. No entanto, não consigo que o texto fique dentro do painel. Então, quando eu quero copiar o texto, eu preciso alternar o painel para a esquerda, ou ampliar o painel, como mostrado abaixo.

Isso, além de ter que manter pressionada a tecla Option , é uma dor. Eu sei que posso entrar no modo visual e usar movimentos de vim para chegar lá, mas eu prefiro ter uma maneira de usar meu mouse. Alguém encontrou uma solução para isso?

    
por mbigras 23.10.2016 / 10:02

1 resposta

14

Coloque este bloco de código no seu ~/.tmux.conf . Isso permitirá a integração do mouse, permitindo que você copie de um painel com o mouse, sem precisar fazer zoom.

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"

Depois disso, reinicie sua sessão do tmux. Realce algum texto com o mouse, mas não solte o mouse. Agora, enquanto o texto estiver realçado e o mouse pressionado, pressione a tecla Enter. O texto destacado desaparecerá e será copiado para a área de transferência. Agora solte o mouse.

Além disso, há também algumas coisas legais que você pode fazer com o mouse, como rolar para cima e para baixo, selecionar o painel ativo, etc.

Se você estiver usando uma versão mais nova do tmux, tente o seguinte em vez do acima

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"
    
por 23.10.2016 / 11:24