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

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

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

Portanto, tenha em mente o que foi dito acima antes de ser referenciado em todos os artigos que já li ou comentar que isso foi solicitado antes.

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

Sim, é vim-gtkcom +xterm_clipboardsuporte.

Responder1

(Editar: abril de 2024) Com o que há WSL version: 2.1.5.0de mais recente, Win11simplesmente ter set clipboard+=unnamedplusagora parece ser suficiente para neovim, pelo menos com as versões mais recentes do Ubuntu na Microsoft Store.

(Editar: outubro de 2020) Para a área de transferência bidirecional neovim, tenho usadowin32yankpor vários meses sem problemas. Coloque win32yank.exeem algum lugar no seu caminho no Linux (qualquer lugar deve servir) e adicione o seguinte ao seu arquivo init.vim.

set clipboard+=unnamedplus
let g:clipboard = {
          \   'name': 'win32yank-wsl',
          \   'copy': {
          \      '+': 'win32yank.exe -i --crlf',
          \      '*': 'win32yank.exe -i --crlf',
          \    },
          \   'paste': {
          \      '+': 'win32yank.exe -o --lf',
          \      '*': 'win32yank.exe -o --lf',
          \   },
          \   'cache_enabled': 0,
          \ }

(Resposta original) Se você deseja apenas migrar do VIM para o Windows, para WSL2 e Ubuntu 20.04,esta respostano Reddit funcionou perfeitamente para mim com VIM padrão e WSL2 Ubuntu padrão.

Coloque o seguinte no seu .vimrc(na parte inferior, por exemplo):

" WSL yank support
let s:clip = '/mnt/c/Windows/System32/clip.exe'  " change this path according to your mount point
if executable(s:clip)
    augroup WSLYank
        autocmd!
        autocmd TextYankPost * if v:event.operator ==# 'y' | call system(s:clip, @0) | endif
    augroup END
endif

Responder2

Esta soluçãofuncionou para mim, graças ao usuário do githubRobiev.

Para completar, esta é uma conclusão de sua resposta:

  1. InstalarVcXsrv (se começar após a instalação, pare).
  2. Inicie-o usando o programa recém-instaladoXLaunch(procure no menu iniciar).
  3. Vá com todas as opções padrão e garanta oopções da área de transferênciasão verificados.

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

  5. Coloque export DISPLAY=localhost:0.0no seu .bashrcbash para Windows e execute source ~/.bashrcem qualquer terminal aberto.

  6. Certifique-se de que o vim esteja instalado usando o suporte à área de transferência. vim --version | grep clipboarddeveria dizer +clipboard, não -clipboard. Além disso, se você executar o comando ex :echo has('clipboard')no vim e ele disser 0que não há suporte para área de transferência compilado.

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

  8. Agora você pode acessar a área de transferência do sistema Windows via "*pe "*you configurá-la como padrão inserindo set clipboard=unnamedseu .vimrcarquivo.

ComoRobievmenciona que agora você também deve poder usar a área de transferência do Windows em máquinas remotas usando o encaminhamento SSH X.

Responder3

Você pode clicar com o botão direito no terminal e, na caixa de opções, marcar CTRL + SHIFT + C/V para operações de copiar e colar através do terminal.

Terminal Ubuntu WSL

Responder4

Se você estiver usando o vim (ou neovim), talvez você deva saber ANSI OSC52que é um padrão que tenta resolver esse problema de "copiar/colar" (em casos específicos, por exemplo, em um terminal SSH).

Então aqui está um plugin útilvim-oscyankque implementa este padrão e o que você precisa fazer é apenas instalar este plugin e definir um mapeamento de teclado para ele. Você definitivamente deveria tentar.

informação relacionada