No se puede copiar al portapapeles desde Vim

28

Estoy ejecutando Vim 7.3 en Linux Mint 13 (usando MATE) y no puedo guardar texto en el portapapeles del sistema. Ejecuto Vim en la terminal y copio el texto desde la terminal con CTRLINSERT. Cuando selecciono texto en Vim (ya sea con el mouse o en modo visual), CTRLINSERTno copia ningún texto. Además, cuando hago clic derecho, Copiar aparece atenuado. Además, no puedo escribir en el búfer del sistema tirando al registro correspondiente usando los comandos vim. Sin embargo, puedo pegar mientras estoy en modo de inserción (usando SHIFTINSERTo haciendo clic con el botón derecho en pegar). También puedo copiar texto directamente desde el terminal usando la misma técnica, pero no texto de Vim.

Aquí está mi ~ / .vimrc actual . La parte relevante es muy probable set clipboard=autoselect,unnamed,exclude:cons\|linux. Si coloco finishen la parte superior de mi ~ / .vimrc, tengo el mismo problema, por lo que creo que la línea está mal, pero lo intenté set clipboard=unnamedy tuve el mismo comportamiento.

¿Podría haber otro archivo de configuración que afecte el comportamiento de Vim? ¿Cómo puedo cambiar mi ~ / .vimrc para permitirme copiar texto de Vim?

maksim
fuente

Respuestas:

55

Creo que su problema de copia es causado por:

mouse=a 

en su .vimrc Esto establece su vim en modo visual cada vez que selecciona algo con el mouse. Y por alguna loca razón, no se permite copiar cuando está en modo visual. Puede evitarlo manteniendo presionada la tecla Mayús al seleccionar texto para que no entre en modo visual, lo que le permite usar el menú de copia.

o podrías cambiar a:

:set mouse=v

y la copia funcionará nuevamente. agréguelo a su archivo ~ / .vimrc si desea que sea permanente


fuente
2
Si bien esto podría resolver su problema, una explicación de por qué funciona sería más útil. Sin ella, su respuesta es simplemente decirle a alguien que presione el botón verde dos veces : puede funcionar, puede que no, pero no lo ilumina.
voretaq7
Gracias, eso lo resolvió. ¡La explicación que agregó después del comentario de voretaq7 también ayudó mucho!
Esto también funciona para Cygwin.
Dave Jarvis el
1
Este modo resaltará todo, así que si quiero copiar algunas líneas, también estoy copiando los números de línea y todo el espacio vacío después de cada línea hasta el final de la pantalla. ¿Hay alguna manera de que solo seleccione el contenido relevante (que es cómo funciona el resaltado cuando mouse=a)?
Dennis
Buena respuesta. Solo una ventaja: más modos de mouse aquí:help mouse
Dr Beco
10

sudo apt-get install vim-gtk probablemente resolverá este problema para otros Googlers.

El buen vim de estilo terminal no tiene acceso al portapapeles, que es parte del sistema X windows. La instalación vim-gtkle da a vim el acceso que necesita para modificar y ver el portapapeles.

Cory Klein
fuente
2
¡Trabajos! En Debian Buster (ahora en pruebas) instalé vim-gtk y luego mi línea de comando vim en xterm me permitió usar los buffers *y +para acceder a los buffers de la ventana x. La instalación de vim-gtk utiliza las alternativas de Debian para establecer vim -> /usr/bin/vim.gtk.
RobertL
0

El terminal no sabe nada acerca de las selecciones vim, así que no esperes que sea de ayuda. Necesitará vim para construir contra X (por ejemplo gvim -v), y luego tirar y colocar desde el +registro.

Ignacio Vazquez-Abrams
fuente
3
El vim-gtkpaquete en Ubuntu contiene soporte para portapapeles (incluso cuando se ejecuta como vimen una terminal).
mgorven
De acuerdo y confirmado en Debian Buster (ahora en pruebas) instalé vim-gtk y luego mi línea de comando vim en xterm me permitió usar los buffers * y + para acceder a los buffers de la ventana x. La instalación de vim-gtk usa las alternativas de Debian para configurar vim -> /usr/bin/vim.gtk.
RobertL
0

solo gvimen Arch Linux si alguien quiere saberlo. Además, eche un vistazo a neovim(y python-neovim&& python2-neovimpara obtener asistencia completa, etc.).

dylnmc
fuente
Intenta usar gvim a través de ssh.
hopeseekr