vim - una - welcome copiar y pegar




¿Cómo hacer pegar vim desde(y copiar en) el portapapeles del sistema? (16)

Linux

En mi sistema Linux, los registros + y * asignan a una selección X11, que se puede pegar con el botón central del mouse. Cuando se usan :set clipboard=unnamed y :set clipboard=unnamedplus , los registros se asignan al portapapeles y se pueden pegar con CTRL-V.

Los detalles específicos parecen depender de la configuración y del sistema, por lo que su millaje definitivamente variará. Sin embargo, definitivamente debería hacer que apuntes en la dirección correcta.

Ver también

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

A diferencia de otros editores, vim almacena texto copiado en su propio portapapeles. Por lo tanto, es muy difícil para mí copiar un texto de una página web y pegarlo en el archivo de trabajo actual. Sucede que tengo que abrir gedit o escribirlo manualmente.

¿Puedo hacer pegar vim desde y hacia el portapapeles del sistema?


Basado en la respuesta de @ lis2, uso una configuración más simple que no forzará el modo Insertar al final:

" Copy and paste
if has('clipboard') && !has('gui_running')
  vnoremap <C-c> "+y
  vnoremap <C-x> "+d
  vnoremap <C-v> "+p
  inoremap <C-v> <C-r><C-o>+
endif

Tenga en cuenta que todas estas asignaciones de Vim predeterminadas anulan:

  • v_CTRL-C : detener modo Visual
  • v_CTRL-X : restar [cuenta] del número
  • v_CTRL-V : modo visual en bloque
  • i_CTRL-V : inserte literalmente el siguiente no-dígito, que también se asigna a i_CTRL-Q

Como alternativa, se pueden usar teclas inspiradas en el "yank", "delete" y "put" Vim verbos: <Cy> , <Cd> y <Cp> respectivamente. Estos solo anularían una asignación predeterminada:

  • i_CTRL-P : búsqueda hacia atrás para completar la palabra clave

Cuando uso mi vim de Debian que no está integrado con Gnome (vim --version | grep clip # no muestra compatibilidad con el portapapeles), puedo copiar al portapapeles después de mantener presionada la tecla Mayús y seleccionar el texto con el mouse, como con cualquier Otro programa de curses. Como pensé a partir de un comentario de @Conner, es el terminal (gnome-terminal en mi caso) el que desactiva el informe de eventos del mouse cuando detecta la pulsación de Shift. Supongo que los programas basados ​​en curses pueden recibir eventos del mouse después de enviar una determinada secuencia de Escape al terminal.


En la parte superior de la configuración :set clipboard=unnamed , debe usar mvim -v que puede obtener con brew install macvim si está usando vim en Terminal.app en Mac OS X 10.9. El vim predeterminado no admite la opción del portapapeles.


Esto funciona para mí: Ctrl + Shift + V


Hay dos formas simples de hacer esto. Haga su archivo en modo de inserción y 1) presione el botón central (la rueda de desplazamiento) en su mouse, o 2) Ctrl + Shift + V


Las otras soluciones son buenas si desea cambiar su vimrc, etc ... Sin embargo, quería una forma sencilla de copiar desde vim a mi teclado de sistema. Esto es lo que se me ocurrió.

  • Seleccione el texto que desea copiar con el modo visual v
  • Presione : (se expandirá automáticamente para mostrar :'<,'> )
  • Escriba y * o y + (dependiendo de su sistema) para jalar el texto seleccionado al portapapeles del sistema

Lo que realmente necesitas es EasyClip . Hará eso y mucho más ...


No tenía + portapapeles, así que se me ocurrió esta solución alternativa utilizando xsel:

Añadir a tu ~ / .vimrc:

vnoremap <CC> :w !xsel -b<CR><CR>


Para algunos teclados internacionales, es posible que deba presionar " + Espacio para obtener " .

Entonces, en ese caso, tendrías que presionar " Espacio + yo " Espacio * y para copiar.

Y " Space + p o " Space * p para pegar.



Puedes copiar en vim mediante el acceso directo de gnome-terminal para pegar. Hacer el archivo en modo insertar y usar.

Ctrl + Shift + v .

Recuerda de antemano a

 :set paste 

Para evitar meterse con la hendidura.


Si está usando vim en MAC OSX, desafortunadamente viene con la versión más antigua y no cumple con las opciones del portapapeles. Por suerte, Homebrew puede resolver fácilmente este problema.

instalar vim:

brew install vim --with-lua --with-override-system-vim

instalar gui verion de vim:

brew install macvim --with-lua --with-override-system-vim

reinicia el terminal para que surta efecto.


añada la siguiente línea a ~/.vimrc
set clipboard=unnamed

ahora puede copiar la línea en vim con yy y pegarla en todo el sistema.


Si está utilizando un ratón primero haga

 :set paste 

Luego right click mouse y los contenidos en el búfer se pegarán.


También puede valer la pena mencionar que, en OSX con Vim, puede seleccionar texto con el mouse, Cmd-C para copiar al portapapeles del sistema OSX, y el texto copiado estará disponible en el portapapeles fuera de Vim.

En otras palabras, OSX lo trata como si fuera una ventana normal, y aquí es donde el muy mal presionado botón "Comando" de Apple es muy útil.

B-30


Una nota rápida para las personas cuya instalación de vim no admite los registros * y +. No es necesario descargar una nueva instalación de vim para pegar desde el portapapeles. Aquí hay un método alternativo:

1) Instale parcellite (un administrador de portapapeles con una huella de memoria baja);

2) En su archivo .vimrc, agregue lo siguiente:

command Clip r !parcellite -c

3) Reinicie vim.

Ahora, cuando escribe: Clip como un comando ex, los contenidos del portapapeles se pegarán en el cursor. También puede asignar el nuevo comando a una tecla de función para poder hacer esto con solo presionar una tecla.





clipboard