Como copiar texto da linha de comando para a área de transferência sem usar o mouse?

9

Estou tentando descobrir uma maneira de copiar o texto atual em uma linha de comando para a área de transferência SEM tocar no mouse. Em outras palavras, preciso selecionar o texto apenas com o teclado. Eu encontrei uma solução intermediária que pode levar à solução completa:

Ctrl + a - mova para o início da linha.

Ctrl + k - corta a linha inteira.

Ctrl + y - puxa o texto recortado para trás.

Como alternativa, também posso usar Ctrl + u para executar as duas primeiras etapas.

Isso, claro, funciona, mas estou tentando descobrir onde exatamente o texto cortado é salvo. Existe uma maneira de acessá-lo sem usar Ctrl + y ? Estou ciente de xclip e até utilizo para enviar texto direto para a área de transferência, por isso estava pensando em canalizar os dados salvos por Ctrl + k para xclip , mas não sei como para fazer isso.

O método que obtive até agora é escrever um script que use xdotool para adicionar echo ao início da linha e | zxc ao final da linha e, em seguida, pressione Enter ( zxc sendo um alias personalizado que basicamente canaliza para xclip ). Isso também funciona, mas não é uma solução realmente "limpa".

Estou usando o Cshell se isso faz alguma diferença.

EDIT: Eu não quero usar screen como uma solução, esqueci de mencionar isso.

Obrigado!

    
por Sancho Pancho 08.01.2017 / 14:42

1 resposta

7

Se estiver usando xterm ou um derivado, você pode configurar as combinações de teclas para iniciar e encerrar uma seleção de texto e salvá-la como a seleção principal X11 ou um cutbuffer. Veja man xterm . Por exemplo, adicione ao seu ~/.Xdefaults :

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Você só pode ter uma entrada XTerm*VT100.Translations . Atualize o servidor X11 com o novo conteúdo do arquivo com xrdb -merge ~/.Xdefaults . Inicie um novo xterm .

Agora, quando você tiver alguma entrada no prompt de comando, digitar 1 no teclado numérico começará a selecionar o texto na posição atual do cursor de texto, bem como o botão 1 pressionado no mouse. Mova o cursor com as teclas de setas e, em seguida, pressione 2 no teclado numérico e o texto intermediário será realçado e copiado para a seleção principal e cutbuffer0. Obviamente, outras chaves e ações mais adequadas podem ser escolhidas. Você também pode colar a seleção com ligações como insert-selection(PRIMARY) .

    
por 08.01.2017 / 16:16