Como copiar e colar com o mouse com tmux

Como copiar e colar com o mouse com tmux

Estou usando tmuxe OSX. Ao copiar e colar do terminal, tmuxconsigo manter pressionado Optione selecionar o texto. No entanto, não consigo fazer com que o texto permaneça dentro do painel. Portanto, quando desejo copiar texto, preciso alternar o painel para a esquerda ou ampliar o painel, conforme mostrado abaixo.

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

insira a descrição da imagem aqui insira a descrição da imagem aqui

Responder1

Coloque esse bloco de código no seu arquivo ~/.tmux.conf. Isso permitirá a integração do mouse, permitindo que você copie de um painel com o mouse sem precisar aplicar 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 tmux. Destaque algum texto com o mouse, mas não solte o mouse. Agora, enquanto o texto ainda está destacado 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 interessantes que você pode fazer com o mouse, como rolar para cima e para baixo, selecionar o painel ativo, etc.

Se você estiver usando umversão mais recente do tmuxno macOS, tente o seguinte em vez do acima:

# 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"

Se estiver usando o iTerm no macOS, vá para iTerm2 > Preferências > guia “Geral” e na seção “Seleção”, marque “Aplicativos no terminal podem acessar a área de transferência”.

E se você estiver usandoLinuxe uma versão mais recente do tmux, então

# 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"

Em distros Debian e baseadas em Debian (Ubuntu, Kali), pode ser necessário instalar xclip:

sudo apt-get install -y xclip

(Você também pode conferirhttps://github.com/gpakosz/.tmuxpara muitas outras opções do tmux.)

Responder2

Adicione estas 2 linhas em ~/.tmux.conf

set -g @plugin 'tmux-plugins/tmux-yank'
set -g mouse on

e então instale o plugin funciona para mim.

https://github.com/tmux-plugins/tmux-yank

Responder3

O que funcionou para mim no Ubuntu 20.04

  • Eu tenho o modo mouse ativado
  • Selecionou o texto enquanto segurava Shift+ Selecionando com o cursor
  • Solte Shifte passe o mouse depois de selecionar o texto
  • Copie o texto Ctrl+ Shift+c
  • Cole em qualquer lugar (fora de tmuxsi) Ctrl+ v, pois isso copia o texto na área de transferência do sistema

Responder4

No FreeBSD você pode usar ya tecla (estilo vi) para copiar o texto selecionado enquanto segura o botão esquerdo do mouse no texto selecionado quando mouse onestiver definido em ~/tmux.conf:-)

set -g mouse on
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

Apenas lembre-se de instalar o pacote (como root) xclipcom pkg install xclip:-)

Mais algumas dicas úteis:

  • O uso set -g repeat-time 0desabilitará as seguintes teclas de comando tmux quando você tiver um editor em um painel e shell ou outros aplicativos operados por cursor nos outros painéis. Normalmente, seguir as teclas do cursor alternará entre os painéis por algum tempo e isso pode ser uma distração e irritante em alguns casos, se você quiser usar o cursor rapidamente no painel para o qual mudou.
  • Use set -g status-style fg=white,bg=greenpara diferenciar facilmente entre diferentes sessões em diferentes máquinas remotas. Definir bgvalores diferentes em máquinas diferentes ajudará você a identificar rapidamente a máquina na qual deseja trabalhar :-)

informação relacionada