Tmux 2.4+ com ligações no modo de cópia vi e xclip :
set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"
Para versões mais antigas do tmux, ligações do modo de cópia do emacs (o padrão) ou plataformas não-X (ou seja, sem xclip), consulte a explicação abaixo.
Explicação: Primeiro, precisamos ativar a opção do mouse para que o tmux capture o mouse e vamos vincular os eventos do mouse:
set-option -g mouse on
O Gnome-terminal não suporta a configuração da área de transferência usando sequências de escape xterm, portanto, devemos garantir que a set-clipboard
opção esteja desativada:
set-option -s set-clipboard off
Esta opção pode ser suportada e ativada por padrão no iTerm2 (consulte set-clipboard
o manual do tmux), o que explicaria o comportamento lá.
Podemos então vincular a MouseDragEnd1Pane
"chave" do modo de cópia , ou seja, quando o primeiro botão do mouse é liberado após clicar e arrastar em um painel, para um comando tmux que pega a seleção atual do modo de cópia (feita pela ligação padrão para MouseDrag1Pane
) e o canaliza para um comando shell. Este comando tmux era copy-pipe
anterior ao tmux 2.4 e desde então foi alterado para send-keys -X copy-pipe[-and-cancel]
. Quanto ao comando shell, precisamos simplesmente de algo que defina o conteúdo da área de transferência do sistema para o que for canalizado para ela; O xclip é usado para fazer isso nos seguintes comandos. Algumas substituições equivalentes "xclip -selection clipboard -i"
abaixo em plataformas não-X são "wl-copy"
(Wayland), "pbcopy"
(macOS), "clip.exe"
(Windows, WSL) e "cat /dev/clipboard"
(Cygwin, MinGW).
Tmux 2.4+:
# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
Tmux 2.2 a 2.4:
# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
Antes do tmux 2.2:
O suporte para copiar após arrastar o mouse foi adicionado originalmente no Tmux 1.3, configurando a nova mode-mouse
opção para on
. O Tmux 2.1 alterou o suporte do mouse para as ligações de teclas familiares do mouse, mas não tinha DragEnd
ligações, que foram introduzidas na 2.2. Portanto, antes da versão 2.2, acredito que o único método de definir a área de transferência do sistema ao arrastar o mouse era através do uso interno de sequências de escape xterm (a set-clipboard
opção). Isso significa que é necessário atualizar para pelo menos o tmux 2.2 para obter o comportamento de arrastar e copiar para terminais que não suportam set-clipboard
, como o GNOME Terminal.
xclip...
declaração com um simplespbcopy
faz o truque.Unknown key: MouseDragEnd1Pane
DragEnd
chaves.Como uma extensão da resposta aceita, as pessoas geralmente acham que perturbador ao soltar o botão do mouse sai do modo de cópia (é o que acontece com
copy-pipe-and-cancel
). Consulte: https://github.com/tmux/tmux/issues/140 . Portanto, no tmux mais recente (eu uso o 2.6), podemos usarcopy-pipe
junto comclear selection
para copiar para a seleção, mas não sair do modo de cópia:fonte
Estendendo as duas respostas para copiar do msys2 para a área de transferência do Windows (e limpe a seleção):
fonte
Ainda outra extensão é sobre o uso da
Shift
chave.Segure
Shift
enquanto seleciona o texto com o mouse. Agora você obtém um menu padrão com o botão direito do mouse (mantenha pressionado ou pressioneShift
novamente) e pode usarCtrl+Shift+C
eCtrl+Shift+V
para copiar e colar. O texto copiado também estará disponível na área de transferência do sistema .Testado
Ubuntu 18.04.1
comtmux 2.6
.Fonte: https://forum.upcase.com/t/tmux-ctrl-shift-c-and-ctrl-shift-v-bindings/1208 .
fonte