Vim copiar y pegar en terminales

19

El vim habitual yanky pastefunciona solo en la misma ventana (pero funciona en archivos y comandos de cierre / guardado). ¿Es posible hacerlo funcionar a través de terminales (tirar de la ventana en una terminal y pegar en otra) y si es así, cómo?


fuente

Respuestas:

30

Probablemente la cosa más simple para que pueda probar es poner set clipboard=unnameden tu .vimrcy reiniciar sus sesiones de vim.

Esto le permite ejecutar yank(p yy. Ej. ) En una ventana y put(p p. Ej. ) En otra ventana simplemente funcionará, porque todas las sesiones vim compartirán el mismo búfer de selección X.

En el lado negativo, su búfer de extracción se sobrescribirá tan pronto como seleccione algún texto en cualquier otra ventana de cualquier aplicación.

Por el lado positivo, también significa que cualquier cosa que tire en vim ahora se puede pegar en cualquier aplicación haciendo clic con el botón central.

Si no te gusta de esa manera, puedes escribir "+o "*antes de tirar y poner comandos, por ejemplo, "+yypara tirar de una línea.

Las +formas interactúan con el portapapeles ( "+yes como Ctrl+ C, "+pes como Ctrl+ V).
Los *formularios interactúan con el búfer de selección ( "*yes como hacer clic izquierdo y arrastrar, "*pes como hacer clic en el medio).

Consulte Cómo realizar selecciones de GUI , compatibilidad con la selección X11 y las opciones del portapapeles y el mouse para obtener más información.

Mikel
fuente
3
Dios, amo el clic del medio. :)
Dan M.
set clipboard=unnamedno funciona para mí (lo puse en .vimrc y reinicié todas las sesiones de vim). Lamentablemente, tampoco lo hacen los otros métodos. Parece que mi vim no está compilado con x-support. Estoy usando VNC para conectarme a una máquina Linux desde una máquina Windows.
3
Sí, este método requiere soporte X11. Ejecutar :echo has('x11'), si el soporte X está habilitado, se imprimirá 1.
Mikel
0

Si desea copiar un archivo completo en su archivo de destino.

Abra su archivo de destino en vim.

Coloque el cursor donde lo desee y escriba lo siguiente:

:r /path_to_file/file.ext

Esto copiará un archivo completo donde está el cursor ...

no1uknow
fuente