Como copiar texto da "tela" do programa para a minha área de transferência?

13

Quero copiar algum texto da tela para a minha área de transferência. Sei como entrar no modo de copiar e colar na tela, mas quero que o texto vá para a minha área de transferência para que eu possa colá-lo no navegador, por exemplo.

Como eu faço isso? Obrigado!

Ramon Tayag
fonte

Respostas:

8

Na maioria dos programas, você selecionaria o texto e pressione Ctrl+ Cpara copiá-lo. A colagem do texto seria feita pressionando Ctrl+ V. No programa emulador de terminal, Ctrl+ Ctem um significado especial, interrompe (para) os programas por padrão.

Seu programa emulador de terminal pode ter outros atalhos definidos. Por exemplo, o Konsole e o Gnome Terminal usam Ctrl+ Shift+ Cpara copiar o texto selecionado. Como alternativa, selecione o texto e copie-o usando a opção Copiar no menu Editar ou no menu de contexto.

Se a saída do seu programa for grande, convém ativar o buffer de rolagem de screen. Isso pode ser feito adicionando a linha abaixo ao ~/.screenrcarquivo:

termcapinfo xterm ti@:te@
Lekensteyn
fonte
2
Isso não funcionará se o texto que você está tentando copiar do GNU Screen exceder o espaço real da tela
Marco Ceppi
Normalmente, rolo para trás na época (ou continuo rolando enquanto seleciono).
precisa saber é o seguinte
Você quer dizer enquanto está no modo de cópia na tela?
Marco Ceppi
3
Não, ao selecionar texto no modo regular usando o mouse. Para que isso funcione, você precisa colocar termcapinfo xterm ti@:te@seu arquivo ~ / .screenrc para permitir a rolagem. Se você não tem nenhuma .screenrc, buscar o meu screenrc de lekensteyn.nl/files/screenrc
Lekensteyn
Ah, é isso então, obrigado pelo esclarecimento. Você pode adicionar isso à sua resposta.
Marco Ceppi
10

Para uma implementação bruta e suja, instale o pacote xsel, que permita a interação da linha de comando com a área de transferência do X e, em seguida, coloque essas linhas em seu~/.screenrc

bind > eval writebuf "exec sh -c 'xsel -nbi </tmp/screen-exchange'"
bind y eval "exec sh -c 'xsel -bo >/tmp/screen-exchange'"

depois reinicie screen.

Agora, quando você seleciona algo no modo de screencópia / rolagem e grava o buffer de colagem em um arquivo com C- a >, pode ir para o navegador e colar o conteúdo da área de transferência como de costume (por exemplo, com Ctrl- V).

Para o contrário, copie algo no seu navegador com Ctrl- C, vá para screene leia a área de transferência com o novo comando C- a y, depois leia o arquivo de troca de tela no buffer de colar com C- e a <, finalmente, cole onde quiser C- a ].

Para que isso funcione, a variável DISPLAYdeve estar configurada corretamente e você deve ter acesso ao servidor X. Isso não é um problema quando você está em um terminal executando no mesmo servidor X, mas se você executa screenem um terminal virtual, por exemplo, tty1, pode ser necessário executar xhost +no lado X export DISPLAY=:0ou similar no terminal antes de iniciar screen.

Como você vê, não é simples e não é à prova de balas, mas espero que possa ajudar.

Esta resposta é parcialmente inspirada na sincronização do buffer de colagem da tela GNU e na seleção X

enzotib
fonte
O xhost +conselho é terrível. Ele permite que qualquer pessoa na Internet sequestrar sua sessão do X, capturar suas teclas, tirar capturas de tela etc. Nunca faça isso. Existem maneiras corretas de fazer a mesma coisa; contanto que você esteja no mesmo host e use o mesmo homedir, apenas a configuração $DISPLAYdeve funcionar.
R .. GitHub Pare de ajudar o gelo
0

Basta usar a operação de cópia em seu aplicativo de terminal. Se você estiver usando o gnome-terminal, por exemplo, selecione teste e use o menu de contexto -> copiar.

Michał Šrajer
fonte
1
E se o aplicativo do terminal não tiver um menu de contexto? E se ele não tiver uma operação de cópia? Não votei porque não acredito que mereça mais de um.
precisa saber é o seguinte