Copie o texto de um painel tmux para outro (usando vim)

100

Eu tenho dois arquivos abertos no vim, cada um em um painel tmux. Eu gostaria de copiar digamos 10 linhas de um arquivo para outro.

Como posso conseguir isso sem usar o Copy - > Paste ?

    
por Patryk 18.12.2012 / 12:06

7 respostas

151

Você terá que usar os atalhos do tmux. Assumindo que seu atalho de comando do tmux é o padrão: Ctrl + b , então:

  1. Ctrl + b , [ Entre no modo de cópia (?).

  2. Mova para o início / fim do texto para realçar.

  3. Ctrl espaço

    Comece a destacar o texto (no Arch Linux). Quando eu compilei o tmux a partir do código-fonte no OSX e em outros Linux's, apenas o Espaço por si só funciona normalmente. O texto selecionado altera as cores, então você saberá se o comando funcionou.

  4. Mova para o final oposto do texto a ser copiado.

  5. Alt + w Copia o texto selecionado na área de transferência do tmux. (No Mac, use Esc + w .)

  6. Mova o cursor para o painel tmux oposto ou a janela tmux completamente diferente. Coloque o cursor onde você deseja colar o texto que você acabou de copiar.

  7. Ctrl + b , ] Cole o texto copiado da área de transferência do tmux.

O tmux é muito bom em mapear comandos para atalhos de teclado personalizados.

Veja Ctrl + b , ? para a lista completa de atalhos de teclado definidos.

    
por 18.12.2012 / 12:37
28

Infelizmente, ainda não posso adicionar um comentário à resposta de Alex Leach, por isso vou incluir um adendo aqui para usuários do Mac OS X:

  1. Enter Copia o texto selecionado
por 29.07.2015 / 18:37
8

Se você estiver usando o vim e o tmux no macOS (testado no macOS 10.12.2, tmux 2.3):

(Suponha que a combinação de prefixo do tmux seja prefixo . O prefixo é ctrl + b no padrão.)

  • Copiar:
    1. Pressione o prefixo + [ para entrar no modo de cópia.
    2. Use as teclas de seta para ir ao início / fim da seleção de texto.
    3. Pressione ctrl + espaço (Se você definiu ctrl + espaço como prefixo, Pressione ctrl + espaço + espaço em vez disso)
    4. Use as teclas de seta para ir para o outro lado da seleção.
    5. Pressione ctrl + w .
  • Colar:
    1. Pressione o prefixo + ] no modo de inserção.
por 28.12.2016 / 16:37
1

Você pode usar a placa de clipes do sistema com "* y" * p ao invés do normal y e p.

    
por 20.12.2012 / 07:17
1

Se você tem vim open, é melhor usar a pasta de cópia do vim para copiar o texto.

A pasta de cópia do tmux funcionará, no entanto, existem várias desvantagens.

Primeiro, ao copiar várias linhas de texto, você terá que selecionar várias linhas. Tmux copy paste normalmente não entende que vim tem números de linha ou há marcações na calha de vim (como números relativos / números absolutos). Como resultado, os copiará também.

Em segundo lugar, descobri que, se o texto tiver uma formatação específica para determinados idiomas, e você tentar copiá-los diretamente usando o tmux para o vim, isso atrapalha a formatação. Isso pode ser evitado usando set paste! . No entanto, isso requer muito mais trabalho.

Use "+y para copiar e "+p para colar

Vim nativamente fornece um método para copiar e colar entre o buffer vim e a área de transferência do sistema, usando "+y ou "*y . Em seguida, colando usando "+p ou "*p . Isto irá evitar copiar os números relativos na medianiz ou outras marcas aleatórias que não são relevantes para o vim

    
por 12.04.2018 / 17:13
1

Estou conectando-me ao meu servidor CentOS em uma máquina Windows usando o terminal ZOC do cliente ssh. Aqui está o que funciona para mim:

  • Entre no modo de cópia: <prefix> + [
  • Iniciar cópia: <Space>
  • Copiar texto: <Enter>
  • Colar texto: <prefix> + ]
por 22.10.2018 / 11:29
0

Algumas opções para o uso do vim desde a sequência de atalhos do tmux são um pouco longas e eu acho difícil lembrar

Como as respostas acima, você pode usar "+y e "*y para copiar e, em seguida, "+p e "*p para colar. Se você quiser que o vim use a área de transferência por padrão, você pode usar apenas y/p diretamente.

set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +
Comando

source for clipboard: link

    
por 02.12.2018 / 04:40