No se puede copiar desde vim al portapapeles del sistema

54

Como se dijo en el título, no puedo copiar de vim al portapapeles del sistema. Viceversa funciona, copiar desde fuera vim y pegar con pestá bien.

He instalado soporte para portapapeles, la versión vim es 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Yo tengo:

set clipboard=unnamedplus

en mi .vimrcy se establece cuando hago:

set clipboard?

o

:echo has('clipboard')

Estoy usando Ubuntu 12.04 LTS y vim dentro gnome-terminal(pero también GVim tiene el mismo problema). ¿Alguna idea?

Gracias

gc5
fuente
stackoverflow.com/questions/11489428/… Esto puede ayudarte un poco.
coteyr
¿Salió de vim entre escribir "+ y en la selección visual e intentar pegar fuera de vim? No funcionará si lo hace
Samuel Peter
@SamuelPeter No, no dejé vim
gc5
1
Me encontré con este problema porque estaba configurando clipboard+=unnamedplusalgo en la configuración predeterminada que lo desactivaba. Cambiar a clipboard=unnamedplus(por ejemplo, eliminar otras configuraciones) funcionó para mí.
JonnyRaa
Como @JonnyLeeds mencionó. La configuración set clipboard+=unnamed& set clipboard+=unnamedplusno funciona mientras se usa y y p para compartir el portapapeles del sistema. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Después de que eliminé el primero +, que es set clipboard=unnamedy set clipboard+=unnamedplus, ¡y funciona! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo

Respuestas:

87

Esto es lo que funciona para mí (Ubuntu 13.10):

Vuelva a instalar vim como vim-gtk:

sudo apt-get install vim-gtk

seleccione lo que desee con el mouse y luego escriba para copiar al portapapeles :

"+y

pegar a vim desde el tipo de portapapeles :

"+p

No sé por qué, pero comparando el resultado de vim --versionmuestra que la instalación habitual de vim es bastante restringida en comparación con vim-gtk. Reemplazar vim con vim-gtk no afectó ningún tapón.


Más información:

Raffael
fuente
1
No puedo expresar cuánto me ayudaste y cuánto estoy feliz ahora: D
7hi4g0
1
Curiosamente, el 14.04 tanto VIM regular como VIM-GTK tienen xterm_clipboardsoporte, pero "+pno funcionan en VIM regular. En lugar de recortar en el portapapeles, aumenta la cantidad de líneas seleccionadas.
dotancohen
1
La instalación vim-gtkfinalmente funcionó para mí en 14.04.4, pero experimenté las cosas un poco diferente a lo que otros comentaban. Antes de haber vim-gtkinstalado, vim se mostraba -xterm_clipboard(es decir, no habilitado). Después de instalarlo vim-gtkmuestra (+ xterm_clipboard). Estoy comprobando esto con vim --version | grep clip. De todos modos, tiene sentido que lo necesites +xterm_clipboard!
pensar demasiado
Esta es una gran solución. En realidad, he hecho esto lo primero que debo hacer después de instalar un nuevo sistema operativo Ubuntu.
linbianxiaocao
Instalar vim-gtk funcionó para mí. Gracias
Miguel Mota
6

Voy a dejar la respuesta original a continuación porque puede ser importante para otros que buscan esta pregunta.

En resumen, no parece haber una respuesta única para todos, pero con 'set clipboard = unnamedplus' uno de '* p' o '+ p' debería funcionar desde el portapapeles "system".

'* p' es casi seguro el que desea. ( desde aquí )


vim es un programa cli. Cuando se usa dentro de gnome-terminal (o cualquier emulador de terminal), crtl + c (o cualquier combinación de teclas) es manejado primero por el emulador de terminal, luego el shell, luego finalmente por el programa (vim en este caso). vim y ctrl + c casi nunca funcionarán porque ctrl + c envía una señal SIGINT a la tarea en ejecución. vim usa SIGINT para detener otras cosas como abortar el modo de inserción o detener las funciones de búsqueda.

En otras palabras. Ctrl + C nunca se pasa realmente a VIM. SIGINT se pasa a VIM. SIGINT tiene otros usos en vim, por lo que usarlo para copiar probablemente no funcionará (e incluso si puede forzarlo, no es una buena idea).

En su lugar, trate de seguir con Ctrl + Shift + C y Ctrl + Shift + V (hay otros, pero creo que esos ponen texto en el portapapeles del sistema)

Para ser justos, no sé mucho sobre gvim.

coteyr
fuente
Tal vez te confundí ... Dije usando ctrl-cOUTSIDE vim y pegando con p, pero en vim sé que tengo que usar y...
Editaré
1
LOL todavía no ha tomado mi cafeína, lo siento.
coteyr
5

Use en su vimrc:

set mouse=a

Le permitirá seleccionar y copiar manualmente con el mouse.

Sergio Abreu
fuente
3

Además de la respuesta aceptada , si está trabajando de forma remota a través de SSH (por ejemplo, tmuxcon varios paneles con diferentes vimprocesos entre los que desea copiar), también debe exportar su pantalla X, ya que se vimestá utilizando xterm-clipboardpara interactuar entre diferentes procesos. Puede configurar la pantalla X ejecutando

export DISPLAY=:0.0

Esto debe ejecutarse antes de que vim se inicie, y bajo cualquier otro shell que tenga.

Yusuf Gören
fuente
1

He encontrado en Ubuntu 16.04 que necesito vim-gui-commoninstalar para "+ypoder trabajar.

Carlos Torchia
fuente