vim / gvim falhando em colocar a área de transferência do X11 nos registros “+ ou” *?

15

Devido à falta de segurança com o servidor vino padrão , mudei para usar o x11vnc na minha caixa do linux (com o Xubuntu 14.04) e o SSVNC no lado do windows.

Com o vino, recortar e colar do windows para o Linux e o windows, nas duas direções, era esquisito (1), mas quando funcionava, funcionava para todos os programas; Eu poderia usar o vimregistro "+sem problemas. Eu corro (2)

autocutsel -fork 

normalmente para que as seleções "clique do meio" e ctrl-c / v sejam as mesmas.

Agora que eu uso o x11vnc (chamado com:) x11vnc -forever -repeat -safer -usepw -ssl -autoport 6000para ter uma conexão segura e criptografada, surgiu um problema:

  1. Posso copiar no Windows e colar nos terminais Linux remotos, no libreoffice etc. sem nenhum problema, em ambas as direções.

  2. Em vim, ou gvim, qualquer tentativa de colar "+pou "*pdizerE353: Nothing in register *

  3. Novamente em vimou gvim, ao contrário, funciona: se "+yyeu puder colar a coisa no lado do Windows.

Como alguém tem alguma pista sobre este problema? O estranho é que colar funciona em todos os lugares que eu verifiquei, mas vim...

Package                 Installed       Previous        Now             State
=======================-===============-===============-===============-=====
vim                     2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install
vim-gnome               2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install

Notas de rodapé:

(1) não é possível encontrar o bug agora --- é relatado. Ele pára de funcionar depois de um tempo.

(2) Eu tentei com e sem. Sem alterações.

Rmano
fonte
Eu tive muitos problemas com o x11vnc relacionados a diferentes localidades do idioma no host e no cliente, especialmente ao controlar convidados vmware por meio do vnc no servidor. Finalmente 'resolvi' instalando um servidor nomachine no sistema host. Sei que essa provavelmente não é a solução que você tem em mente, mas nomachine e nxclient são seguros, muito rápidos e tudo é encaminhado através do ssh.
Floyd
2
Eu não uso o vnc, mas corrigi todos os meus problemas com a interoperabilidade da área de transferência entre o vim e os sistemas operacionais: (1) usando set clipboard=unnamedplusem todos os linux que uso (2) alias vim='gvim -v'nos meus .bashrcs (para solucionar determinadas distribuições compilando o vim sem o suporte da área de transferência do X) (3) set clipboard=unnamednas janelas. Espero que ajude.
precisa
@ PatrykObara tentará ... da próxima vez eu tenho que usar um PC com Windows. Eu tenho uma instalação apenas para Linux agora e sem problemas ... Obrigado.
Rmano 26/11

Respostas:

1

Como não sei qual x11vnc você está usando (tenho três versões diferentes, existem outras), este é um tutorial para solucionar esse problema específico.

Primeiro é entender as pranchetas envolvidas. Na maioria dos casos, há quatro deles envolvidos. (Mais é possível se você usar as ferramentas de gerenciamento da área de transferência.) O X11 define três áreas de transferência: Primária, Secundária e Área de Transferência. O secundário raramente é usado (e quase certamente não é seu problema), por isso vamos ignorá-lo. Os aplicativos que usam o clique do meio para colar (xterm, et al) normalmente usam a área de transferência principal. Os aplicativos que colam no estilo do Windows (clique em editar, clique em colar ou controlam V) às vezes usam apenas a área de transferência da área de transferência. Alguns aplicativos fazem as duas coisas (o Google Chrome cola do primário com um clique do meio e da área de transferência com um controle V). Em seguida é a área de transferência do VNC (apenas uma) e a área de transferência do Windows. (Se você estiver usando um visualizador vnc executando o X11, as coisas ficarão mais complicadas, mas isso fará sentido depois de pensar nisso. ), a área de transferência do VNC é especial, pois mantém o controle de várias atualizações das outras áreas de transferência para mantê-las atualizadas. Se você ignorar a área de transferência principal, isso é bastante simples, pois a área de transferência atualizada mais recentemente é copiada para todas as outras. O desafio é que o comportamento desejado da área de transferência primária não está bem definido. Eu vi os seguintes comportamentos de várias implementações de vnc:

  1. Ignore o primário, use apenas a área de transferência.
  2. Ignore a área de transferência, use apenas o primário.
  3. Use o mais recente para cópias do unix para windows, copie para ambos para cópias do windows para unix.
  4. Tente ser inteligente: use o primário apenas até que a área de transferência seja usada e use apenas a área de transferência.
  5. Tente ser mais inteligente: use o primário até que a área de transferência seja alterada, depois ignore o primário até que haja uma alteração nas janelas, depois use a próxima alteração, novamente ignorando o primário após o uso da área de transferência.
  6. Tente ser ainda mais inteligente. (Eu nunca descobri o que eles estavam tentando fazer com este, mas geralmente fazia a coisa certa)

A seguir estão as ferramentas. Existem duas ferramentas que considero essenciais para depurar problemas da área de transferência: um editor de texto (o bloco de notas funciona bem para isso) e o xclip. Um visualizador da área de transferência do Windows é bom, mas não essencial.

Agora, o procedimento: Em cada aplicativo do grupo em que você está solucionando problemas, selecione e copie algum texto, verificando o status das três áreas de transferência acessíveis. (A área de transferência do vnc é muito difícil de visualizar diretamente e não é útil, pois normalmente não armazena os dados, apenas os metadados.) Responda a estas perguntas: qual área de transferência é usada por cada aplicativo? em que ordem eles são usados?

Espero que seja informação suficiente para você começar.

hildred
fonte
Obrigado! Infelizmente, não posso testar agora, quase abandonei as janelas dos meus PCs ;-). Vai tentar alguma investigação, logo eu sou forçado a usar o Windows de novo ...
Rmano