Use a área de transferência do sistema no modo vi-copy no tmux

41

Estou executando o tmux 1.6 e estou tentando configurá-lo para usar atalhos de teclado no estilo vi, bem como usar a área de transferência do sistema ao copiar no modo interativo:

set-window-option -g mode-keys vi

bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' "copy-selection && run \"tmux save-buffer | xclip -selection clipboard\""

Simplificando, gostaria de poder fazer C + [ e então usar v para começar a selecionar texto para copiar, então quando y é pressionado, copie a seleção para a seleção do tmux e exporte-a para a área de transferência do sistema usando xclip .

Infelizmente, quando tento fazer isso, vejo o seguinte:

.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"

Existe uma maneira de fazer isso na configuração do tmux?

    
por Naftuli Kay 19.05.2014 / 21:27

6 respostas

74

Isso também foi respondido aqui , mas Levei um tempo para entender como usá-lo, então vou explicar para mais alguém que estava confuso.

Este é basicamente o cenário que você está procurando:

(para versões do tmux < 2.5 )

bind -t vi-copy y copy-pipe 'xclip -in -selection clipboard'

(para o tmux versões > = 2.5 )

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

Em seguida, pressione Ctrl+b [ para entrar no modo de cópia. Em seguida, pressione Space seguido por qualquer tecla de movimento vi para fazer uma seleção. Em seguida, em vez de pressionar Enter , pressione y e a seleção será copiada para a área de transferência.

Nota: isso pressupõe que você esteja usando as ligações padrão do tmux com as chaves vi.

O Tmux possui diferentes tabelas de atalhos de teclas para diferentes modos. Portanto, bind-key -t vi-copy y define a ação para a chave y no modo de cópia. Inicialmente, fiquei confuso porque estava acostumado a atingir Enter depois de fazer uma seleção. Enter é na verdade apenas a ligação de chave padrão para o comando copy-selection (quando no modo de cópia). O comando copy-pipe nos permite ligar uma nova chave para canalizar a seleção para um comando, que neste caso é xclip .

Você pode ver todas as combinações de teclas para o modo de cópia executando list-keys -t vi-copy .

    
por 20.05.2014 / 21:57
10

A versão atualizada para Ben Davis answer

compatível com o tmux 2.4

bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"
    
por 26.04.2017 / 11:33
6

Você está enfrentando alguns problemas técnicos:
As ligações do "modo especial" (por exemplo, vi-copy )…

  1. use um conjunto diferente de comandos (por exemplo, run-shell a.k.a. run não está disponível) e
  2. não tem a capacidade de vincular vários comandos (que normalmente podem ser separados por ; - o separador de comando && do shell não está disponível).

tmux 1.8 tem copy-pipe , o que pode ajudar:

bind-key -t vi-copy y copy-pipe 'xclip -selection clipboard >/dev/null'

(Existe uma ligação como esta listada em o FAQ .)

    
por 20.05.2014 / 09:31
5

Dê uma olhada no plugin tmux-yank para o tmux. link

Ele fornece uma maneira automatizada de copiar / colar do tmux para a área de transferência do sistema. Funciona em sistemas OSX / Linux / Cygwin.

    
por 17.04.2016 / 20:16
2

Para o macOS, você pode adicionar essa linha a .tmux.conf

bind -t vi-copy y copy-pipe 'pbcopy'

    
por 15.06.2016 / 09:15
0

Isso foi o que acabou funcionando para mim usando o tmux 2.2 e tendo instalado o xclip. Para copiar o estilo Vim, adicione o seguinte a .tmux.conf

bind Escape copy-mode
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
# Vim style copy to clipboard
bind-key -t vi-copy y copy-pipe "xclip -selection c > /dev/null"
bind-key p run "xclip -o -sel clip | tmux load-buffer - ; tmux paste-buffer"

Aqui, quando no modo de cópia PREFIXO v inicia a seleção e o PREFIXO y copia para a área de transferência. O PREFIXO p pode ser usado para colar no terminal.

    
por 02.02.2017 / 17:04

Tags