Aqui está uma tentativa de uma resposta abrangente.
Primeiro um pouco de história
Quando esta pergunta foi feita pela primeira vez (Junho de 2011), copiar texto do Tmux para a área de transferência tinha que ser um processo de duas etapas, primeiro copiar o texto selecionado para o buffer do Tmux e copiar o texto do buffer do Tmux para a área de transferência do sistema .
Na versão 1.8 (março de 2013), o comando copy-pipe
foi adicionado, permitindo que você copie o texto selecionado diretamente para a área de transferência do sistema (ou outro destino).
Em seguida, em 2.4 (abril de 2017), as tabelas de chaves foram significativamente alteradas tornando obsoletas muitas das respostas nesta página.
Respondendo a pergunta original
Linux :
bind-key C-y run-shell "tmux save-buffer - | xclip -i -r > /dev/null" \; display-message "Copied tmux buffer to selection"
bind-key C-Y run-shell "tmux save-buffer - | xclip -i -r -selection clipboard > /dev/null" \; display-message "Copied tmux buffer to clipboard"
bind-key C-p run-shell "xclip -o | tmux load-buffer - ; tmux paste-buffer"
Mac :
Se você estiver usando o homebrew , instale o reattach-to-user-namespace
executando o seguinte comando em um terminal:
brew install reattach-to-user-namespace
Em seguida, no seu ~ / .tmux.conf:
bind-key C-y run-shell "tmux save-buffer - | reattach-to-user-namespace pbcopy" \; display-message "Copied tmux buffer to clipboard"
bind-key C-p run-shell "reattach-to-user-namespace pbpaste | tmux load-buffer - ; tmux paste-buffer"
O Método Shorter (copie e cole uma seleção diretamente de e para a área de transferência para o tmux > 2.4)
Nota: existem duas versões para o Linux porque o Linux possui uma área de transferência primária e secundária (também conhecida como seleção).
Linux :
bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip -r" \; display-message "Copied to selection"
bind-key -T copy-mode-vi Y send-keys -X copy-pipe "xclip -r -selection clipboard" \; display-message "Copied to clipboard"
bind-key C-p run-shell "xclip -o | tmux load-buffer - && tmux paste-buffer"
Mac :
bind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy" \; display-message "Copied to clipboard"
Personalizando esses comandos
Se você não quiser que o comando diga o que ele fez na linha de status, basta remover o display-message
(assim como o \;
que vem antes dele).
Se você estiver usando o modo de cópia do estilo Emacs em vez de vi, substitua qualquer instância de copy-mode-vi
apenas por copy-mode
Se você estiver executando o Linux e desejar usar xsel
em vez de xclip
replace xclip -r
com xsel -i -p
e xclip -o
com xsel -o -p
O -r
em xclip -r
é opcional e remove a última nova linha. É útil para copiar comandos e, quando você colá-los, eles não serão executados imediatamente.
Se você estiver realizando um tunelamento sobre o SSH, consulte o link
Referências:
-
link
- Sem
> /dev/null
, a cópia do buffer do tmux para a área de transferência fará com que o tmux não responda a atalhos
-
link