O Linux não-X possui uma área de transferência?

3

Eu sei que o Linux Desktops com um gerenciador de janelas, como sistemas baseados em X11, tem uma área de transferência do sistema, mas se não estiver usando um gerenciador de janelas, existe alguma área de transferência?

Por exemplo, no Vim, a área de transferência do sistema pode ser acessada pelo registrador +, mas isso só funciona na versão GUI do Vim em execução no X-windows, pois está usando a área de transferência do gerenciador de janelas. Se você estiver usando uma versão baseada em texto do Vim, como de um terminal ou de um console virtual, isso não funcionará. Por exemplo, se você abrir duas instâncias diferentes do Vim em diferentes consoles virtuais, como copiar e colar entre elas?

    
por Tyler Durden 02.01.2018 / 14:54

3 respostas

4

screen e tmux suportam buffers de copiar e colar, por isso essa é uma abordagem possível (consulte a outra resposta para obter detalhes).

Usando apenas consoles virtuais do Linux, você pode executar gpm (ou sua libinput de substituição, consolation ) para fornecer copiar e colar com base no mouse: selecione o texto com o botão esquerdo do mouse, cole-o com o botão do meio do mouse.

Nenhum deles tem integração direta com o Vim, tanto quanto eu sei, então você está limitado a copiar o que é visível na tela ou nos buffers de rolagem, se houver alguma coisa.

    
por 02.01.2018 / 15:38
2

tmux tem "buffers de colagem" que são semelhantes à área de transferência do X e podem ser acessados em diferentes sessões em execução no mesmo host. Inicie cada vim instance em uma sessão tmux (seja em uma única sessão ou em cada uma delas - não importa para essas finalidades), e você pode copiar e colar texto entre elas com facilidade:

Assumindo as combinações de teclas padrão para tmux , você pode entrar no modo de cópia pressionando CTRL + B [. Navegue até o início do texto que você deseja copiar e pressione CTRL + ESPAÇO , mova o cursor para destacar o texto desejado e pressione ENTER . Isso copia a seleção para um buffer de colar. Agora você pode mudar para a outra vim session (ou qualquer outro programa rodando sob tmux ), e pressionar CTRL + B ] para colar o conteúdo do buffer no painel atual.

tmux mantém vários buffers de colagem; você pode pressionar CTRL + B # para ver todos, ou CTRL + B = para selecionar visualmente um buffer de colar e inserir seu conteúdo no painel atual.

    
por 02.01.2018 / 15:33
0

Quando o X está rodando, o Vim está apenas puxando do xclip. Isso significa copiar e colar entre aplicativos que a maioria das pessoas está pensando realmente é um recurso X.

Embora muitos aplicativos tenham funções de copiar e colar ou buffers para realmente ser uma área de transferência, ela precisa ser uma função compartilhada entre aplicativos por meio de alguma forma de IPC.

Ambos os grandes kits de ferramentas realmente suportam isso de uma maneira pelo dbus. Mesmo que no fundo eles estejam usando o X de qualquer maneira, o ponto é que estas são interfaces que outras aplicações podem usar.

link

link

Ambas as interfaces abstraem a área de transferência subjacente dos sistemas Windowing, de modo que isso inclua o trabalho com Wayland, que é um conceito mais genérico de "compartilhamento de dados"

link

No console, tecnicamente, copiar e colar é o mesmo que salvar e carregar qualquer buffer, portanto, basta redirecionar o que você precisa. Então, isso é copiar e colar no nível do sistema operacional:

mkfifo clipboard && (echo -e "$copy" > clipboard && rm clipboard) &
paste=$(<clipboard)

No nível do intérprete do bash / command, copiar e colar é apenas:

copy="some text"
echo $copy

Também percebo que o primeiro também usa variáveis. Mas é usando recursos do sistema operacional como demonstração.

    
por 02.01.2018 / 19:02

Tags