
Estou usando tmux
e OSX. Ao copiar e colar do terminal, tmux
consigo manter pressionado Option
e 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 Option
tecla, é 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?
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.
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
Shift
e passe o mouse depois de selecionar o texto - Copie o texto
Ctrl
+Shift
+c
- Cole em qualquer lugar (fora de
tmux
si)Ctrl
+v
, pois isso copia o texto na área de transferência do sistema
Responder4
No FreeBSD você pode usar y
a tecla (estilo vi) para copiar o texto selecionado enquanto segura o botão esquerdo do mouse no texto selecionado quando mouse on
estiver 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) xclip
com pkg install xclip
:-)
Mais algumas dicas úteis:
- O uso
set -g repeat-time 0
desabilitará 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=green
para diferenciar facilmente entre diferentes sessões em diferentes máquinas remotas. Definirbg
valores diferentes em máquinas diferentes ajudará você a identificar rapidamente a máquina na qual deseja trabalhar :-)