Mientras uso WSL / Bash para Windows, quiero poder usarlo y
yy
3y
y de p
la misma manera que siempre funcionan en vim, pero conectando al portapapeles del sistema compartido por todas las aplicaciones, no al portapapeles interno de vim ... Ya tengo lo mismo para administrar el portapapeles historia.
Parece que Vim ya tiene una opción integrada para sincronizar el búfer de copiar / pegar con el portapapeles del sistema ... Sin embargo, el problema al ejecutar WSL es que realmente necesita usar /mnt/c/Windows/System32/clip.exe
para acceder al portapapeles ... Entonces, aunque me gustaría para poder usar:
set clipboard^=unnamed
Parece que todavía no tiene soporte para WSL.
Entiendo que los neovim tienen esto como una opción, pero realmente no quiero experimentar con neovim en este momento ...
Por ahora, lo más parecido a una solución alternativa que he encontrado es:
nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
Pero esta es una solución realmente horrible en mi opinión ... Hace que copiar un proceso de dos pasos ...
Por supuesto, puedo copiar y pegar con el mouse / shift + ins, pero creo que debe haber una manera de hacer que esta sincronización funcione correctamente en Vim.
fuente
Respuestas:
Soy consciente de que esta es una pregunta muy antigua, pero recientemente encontré una buena solución. Después de mucha frustración, encontré estas formas de acceder al portapapeles del sistema de Windows copiando y pegando.
Al copiar, con la versión vim> = 8.0.1394, como se señaló en otra respuesta https://vi.stackexchange.com/a/15190
Pegar, asignar a comandos de registro falsos, es decir, "= p o" + p o lo que sea.
El pegado con el botón derecho funciona, pero no es satisfactorio si no desea usar el mouse
fuente
vi
he agregadonnoremap <S-Insert> :r !powershell.exe -Command "& {Get-Clipboard}"<Enter>
noremap "+y :exe 'norm a'.system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | clip.exe')<CR>
(que no funciona ...)¿Qué hay de esto?
uname
es un comando de terminal de Linux que devuelve información del sistema operativo, de modo que volveráLinux
para WSL. Mientras que con el-r
indicador, el comando devuelve información de lanzamiento del sistema operativo, por lo tanto, debe incluir "Windows".TextYankPost
es un evento vim (ver:h TextYankPost
envim
), que detecta su actividad de extracción de texto.clip.exe
es un comando del símbolo del sistema de Windows en WSL (consulte elCLIP /?
símbolo del sistema) que copiatext
o regresa de uncommand
clipbord a través detext | clip.exe
ocommand | clip.exe
. Aquíclip.exe
se ejecuta desde vim por la función vimsystem
.fuente
has('wsl')
lugar desystem('uname -r') =~ "Microsoft"
.Hice un PR para el soporte de WSL para fakeclip hace algún tiempo.
Vea vimawesome sobre cómo instalarlo;
help fakeclip
para usofuente