Windows Subsystem Linux - Fazer o VIM usar a área de transferência?

2

Para tirar isso da mesa agora e evitar qualquer confusão ... Isso é para o Linux em execução no Windows 10 (ubunutu), também conhecido como WSL. Não é o mesmo que cygwin e windows ou linux independente. É a própria fera.

Portanto, tenha em mente o que precede antes de me referenciar com todos os artigos que já li ou comentar que já foi perguntado.

Alguém sabe como copiar e colar o trabalho da área de transferência do Windows OU a emulação do WSL Ubuntu Linux? Estou usando o conjunto clipboard=unnamedplus . Não está funcionando, não importa quais combinações eu uso como yy , "+yy , etc.

Sim, é vim-gtk com +xterm_clipboard support.

    
por dman 02.02.2018 / 16:27

4 respostas

2

Esta solução funcionou para mim, graças ao usuário do github robbiev .

Para completar, este é um resultado de sua resposta:

  1. Instale VcXsrv (se iniciar após a instalação, pare-o) .
  2. Inicie usando o programa recém-instalado XLaunch ( pesquisa no menu iniciar ).
  3. Vá com todas as opções de padrões e verifique se as opções da área de transferência estão marcadas.

  4. No final, salve a configuração em um arquivo, config.xlaunch ( use isso para iniciá-lo a partir de agora ).

  5. Coloque a exportação DISPLAY=localhost:0.0 no seu .bashrc no bash para o Windows e execute source ~/.bashrc em qualquer terminal aberto.

  6. Verifique se o vim está instalado usando o suporte da área de transferência. vim --version | grep clipboard deve dizer +clipboard , não -clipboard . Além disso, se você executar o comando ex :echo has('clipboard') no vim e disser 0 , ele não terá o suporte da área de transferência compilado.

  7. Se você não tem suporte à área de transferência, instale um pacote vim compilado com suporte a área de transferência, por exemplo, apt-get install vim-gtk .

  8. Agora, você pode acessar a área de transferência do sistema do Windows por meio de "*p e "*y ou defini-la como padrão, colocando set clipboard=unnamed no arquivo .vimrc .

Como robbiev menciona que você também deve poder usar a área de transferência do Windows a partir de máquinas remotas usando o encaminhamento SSH X.

    
por 01.08.2018 / 16:27
1

Se você tiver ativado o Modo de edição rápida , basta selecionar o texto com o mouse e clicar com o botão direito para copiá-lo na área de transferência.

Para ativar o Modo de Edição Rápida , clique com o botão direito nas janelas do console na parte superior e selecione Propriedades (e / ou Padrão ), então marque Modo de edição rápida .

EDIT: Out-of-the-box, não é possível copiar do VIM para a área de transferência do Windows atualmente. No entanto, em um problema do GitHub dentro do repositório do WSL, alguns caras parecem ter encontrado uma maneira de fazer isso usando Xming ou VcXsrv, respectivamente: link .

EDIT2: outra tentativa usando .vimbuffer : link

    
por 09.03.2018 / 10:10
1

Existem muitas peculiaridades com o terminal WSL, mas usar o copy / paste do Vim cruzado é um grande aborrecimento no meu livro. Nada do que eu tentei em abril de 2018 funcionou para colar no Vim ou em outras áreas (usando sanidade normal), então, vamos tentar contornar o problema, e outros relacionados como buffer, por enquanto. Esta não é uma solução direta de WSL, e sim uma solução alternativa usando um terminal + SSH melhor até que o MS forneça uma correção.

Putty , ou o garfo estendido Kitty oferece um terminal mais robusto comparado ao WSL. Podemos nos conectar ao WSL (ou qualquer um dos seus outros servidores) usando SSH via localhost, usando uma porta personalizada, e obter um terminal completo, incluindo quase todos os recursos do Vim para bi-direcional, nativo, scroll, etc. Você pode precisar ajustar o Vim conf para acionar todos os recursos].

O Putty / Kitty requer um servidor SSH disponível no WSL, em uma porta personalizada localhost. Se você ainda não configurou um servidor SSH localhost no seu WSL, aqui está uma visão geral rápida de como:

Passo 1) Abra o terminal Ubuntu WSL, faça um sudo su para auth como root, execute vim /etc/ssh/sshd_config para abrir o conf SSH server.

Passo 2) Procure por "Port" perto do primeiro punhado de linhas. Pode ser definido como 22. Precisamos definir uma porta personalizada para o SSH do WSL que não colida. Bata i para editar. Vamos usar a porta 9977 por exemplo.

Passo 3) Se você é um dev, ou não precisa se preocupar com as chaves do seu SSH WSL localhost, procure por autenticação de senha. Você pode definir PasswordAuthentication yes . Outros, chaves e maior segurança, ou acesso público através de firewall (s) na WSL, estão além do escopo desta resposta.

Passo 4) Quando terminar de editar, pressione esc para sair do modo de edição, depois salve + saia do arquivo :wq . Reinicie o serviço ssh usando service ssh restart . Deixe o WSL aberto neste ponto como um console principal.

Passo 5) Crie uma nova sessão Putty / Kitty, conecte-se ao localhost, usando sua porta personalizada (9977 em nosso exemplo). Faça login com suas credenciais do WSL, sudo su se você precisar de root. Agora você deve ter um shell muito mais robusto disponível. Repita ou screen quantas visualizações você precisar.

Eu sei que não é uma resposta direta, mas pelo menos é uma solução por enquanto:)

    
por 26.04.2018 / 04:30
0

Uma solução parcial através do ConEmu

Não sei porque ninguém mencionou o ConEmu. Pode, no mínimo, lidar com metade do problema da área de transferência:

  • Para colar coisas da área de transferência do Windows no WSL, o% normalCtrl + V fará as coisas funcionarem corretamente.

    • Um privilégio é o seguinte: se for para copiar um caminho absoluto no Windows, ao colar no ConEmu, c:/users/name será transcrito em /mnt/c/users/name . Isso é executável através do WSL nativamente.
  • Para copiar da WSL, por enquanto, ainda teria que usar o cursor da minha casa. Funciona mais de 90% das vezes.

Por meu caso de uso, não costumo copiar muito da WSL; e aproveite muito a ajuda de colas da ConEmu.

    
por 24.10.2018 / 23:50