Subsistema de Windows Linux: ¿Hacer que VIM use el portapapeles?

Subsistema de Windows Linux: ¿Hacer que VIM use el portapapeles?

Para eliminar esto ahora y evitar cualquier confusión... Esto es para Linux que se ejecuta en Windows 10 (ubunutu), también conocido como WSL. No es lo mismo que Cygwin y Windows o Linux independiente. Es su propia bestia.

Así que tenga en cuenta lo anterior antes de que se me haga referencia en todos los artículos que ya he leído o comente que esto se ha preguntado antes.

¿Alguien sabe cómo hacer que copiar y pegar funcione desde el portapapeles de Windows O desde la emulación WSL Ubuntu Linux? Estoy usando conjunto clipboard=unnamedplus. No funciona, no importa qué combinaciones use como yy, "+yyetc.

Sí, es vim-gtkcon +xterm_clipboardapoyo.

Respuesta1

(Edición: abril de 2024) Con lo último, WSL version: 2.1.5.0simplemente Win11tener set clipboard+=unnamedplusahora parece ser suficiente neovim, al menos con las últimas versiones de Ubuntu de Microsoft Store.

(Edición: octubre de 2020) Para el portapapeles bidireccional neovim, he estado usandowin32yankdurante varios meses sin problemas. Colóquelo win32yank.exeen algún lugar de su ruta en Linux (cualquier lugar debería estar bien) y agregue lo siguiente a su archivo 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,
          \ }

(Respuesta original) Si solo desea pasar de VIM a Windows, para WSL2 y Ubuntu 20.04,esta respuestaen Reddit funcionó perfectamente para mí con VIM estándar y WSL2 Ubuntu estándar.

Ponga lo siguiente en su .vimrc(en la parte inferior, por ejemplo):

" 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

Respuesta2

Esta soluciónfuncionó para mí, gracias al usuario de githubrobbiev.

Para completar, esto es un extracto de su respuesta:

  1. InstalarVcXsrv (si comienza después de la instalación, deténgalo).
  2. Inícielo usando el programa recién instalado.Lanzamiento XL(buscar en el menú inicio).
  3. Elija todas las opciones predeterminadas y asegúrese de queopciones del portapapelesestán comprobados.

  4. Al final, guarde la configuración en un archivo, config.xlaunch(Úsalo para iniciarlo de ahora en adelante.).

  5. Coloque export DISPLAY=localhost:0.0en su .bashrcbash para Windows y ejecútelo source ~/.bashrcen cualquier terminal abierta.

  6. Asegúrese de que vim esté instalado utilizando el soporte del portapapeles. vim --version | grep clipboarddebería decir +clipboardque no -clipboard. Además, si ejecuta el comando ex :echo has('clipboard')en vim y dice 0que no tiene soporte para portapapeles compilado.

  7. Si no tiene soporte para portapapeles, instale un paquete vim compilado con soporte para portapapeles, por ejemplo apt-get install vim-gtk.

  8. Ahora puede acceder al portapapeles del sistema de Windows a través de "*py "*y, o configurarlo de forma predeterminada ingresando set clipboard=unnamedsu .vimrcarchivo.

Comorobbievmenciona que ahora también debería poder usar el portapapeles de Windows desde máquinas remotas usando el reenvío SSH X.

Respuesta3

Puede hacer clic derecho en la terminal y luego, en el cuadro de opciones, marcar CTRL + MAYÚS + C/V para operaciones de copiar y pegar a través de la terminal.

Terminal WSL Ubuntu

Respuesta4

Si está utilizando vim (o neovim), tal vez debería saber ANSI OSC52que es un estándar que intenta resolver este problema de "copiar/pegar" (en casos específicos, por ejemplo, en una terminal SSH).

Entonces aquí tienes un complemento útil.vim-oscyankque implementa este estándar y lo que tienes que hacer es simplemente instalar este complemento y configurar un mapa de teclas para él. Definitivamente, usted debe darle una oportunidad.

información relacionada