Pregunta ¿Cómo hacer que vim paste de (y copiar a) el portapapeles del sistema?


A diferencia de otros editores, vim almacena el 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. Ocurre que tengo que abrir gedit o escribirlo manualmente.

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


614
2017-07-15 04:28


origen


Respuestas:


los "* y "+ los registros son para el portapapeles del sistema (:help registers) Dependiendo de su sistema, pueden hacer cosas diferentes. Por ejemplo, en sistemas que no usan X11 como OSX o Windows, el "* registrarse se usa para leer y escribir en el portapapeles del sistema. En los sistemas X11 ambos registros pueden ser utilizados. Ver :help x11-selection para más detalles, pero básicamente el "* es análogo a X11 PRIMARIO selección (que generalmente copia las cosas que selecciona con el mouse y pega con el botón central del mouse) y "+ es análogo a X11 PORTAPAPELES selección (que es el portapapeles adecuado).

Si todo eso pasó por tu cabeza, intenta usar "*yy o "+yy para copiar una línea al portapapeles de su sistema. Suponiendo que tiene las opciones de compilación apropiadas, una u otra debería funcionar. Es posible que desee reasignar esto a algo más conveniente para usted. Por ejemplo, podrías poner vnoremap <C-c> "*y en su ~ / .vimrc para que pueda seleccionar visualmente y presionar Ctrl+do para tirar al portapapeles de tu sistema.

Tenga en cuenta que copiar / pegar desde el portapapeles del sistema no trabajará Si :echo has('clipboard') devuelve 0. En este caso, vim no se compila con el +clipboard característica y tendrás que instalar una versión diferente o recompilarla. Algunas distribuciones de Linux proporcionan una instalación mínima de vim por defecto, pero en general si Instala el vim-gtk paquete puedes obtener las características adicionales.

También es posible que desee echar un vistazo a la 'clipboard' opción descrita en :help cb. En este caso puedes :set clipboard=unnamed o :set clipboard=unnamedplus para hacer que todas las operaciones de extracción / eliminación se copien automáticamente en el portapapeles del sistema. Esto podría ser un inconveniente en algunos casos en los que está almacenando algo más en el portapapeles ya que lo anulará.

Para pegar puedes usar "+p o "*p (nuevamente, dependiendo de su sistema y / o la selección deseada) o puede asignarlos a otra cosa. Los tipeo explícitamente, pero a menudo me encuentro en modo de inserción. Si está en el modo de inserción, puede pegarlos con la sangría adecuada mediante el uso de <C-r><C-p>* o <C-r><C-p>+. Ver :help i_CTRL-R_CTRL-P.

También vale la pena mencionar vim paste opción (:help paste) Esto pone a vim en un "modo de pegado" especial que desactiva muchas otras opciones, permitiéndole pegar fácilmente en vim utilizando el emulador de terminal o el atajo de pegado familiar del multiplexador. Simplemente escriba :set paste para habilitarlo, pegue su contenido y luego escriba :set nopaste para deshabilitarlo Alternativamente, puedes usar el pastetoggle opción para establecer un código clave que active el modo (:help pastetoggle) Recomiendo usar registros en lugar de estas opciones, pero si todavía son demasiado atemorizantes, puede ser una solución conveniente mientras perfecciona sus vim chops.

Ver :help clipboard para obtener información más detallada.


737
2017-07-15 04:31



Puedes copiar en vim. Haga el archivo en modo insertar y use Ctrl+Cambio+v. Recuerda de antemano a

 :set paste 

para evitar jugar con la identación ...


106
2017-07-15 15:46



Linux

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

Los detalles parecen ser un tanto dependientes de la configuración y del sistema, por lo que su kilometraje definitivamente variará. Sin embargo, definitivamente debería hacerlo apuntar en la dirección correcta.

Ver también

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


37
2017-07-15 04:38



Para mi esa configuración funciona para copiar y pegar

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa

36
2018-05-16 08:50



Estas serían las líneas que necesita en su vimrc para este propósito:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard

30
2018-05-15 21:02



portapapeles

Hay un registro especial para almacenar esta selección, es el "* registro. No se incluye nada aquí a menos que la información sobre qué texto sea está a punto de cambiar (por ejemplo, haciendo clic con el botón izquierdo del mouse en alguna parte) o cuando otra aplicación quiere pegar el texto seleccionado. Luego se pone el texto en el registro "*. Por ejemplo, para cortar una línea y convertirla en la corriente selección / ponerlo en el CLIPBOARD:

    "*dd

Del mismo modo, cuando desea pegar una selección de otra aplicación, por ejemplo, haciendo clic en el botón central del mouse, la selección se pone en el registro "* primero, y luego 'poner' como cualquier otro registro. Por ejemplo, para poner el selección (contenido del CLIPBOARD):

    "*p

registros  E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

Pegar desde el portapapeles

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

Verificación del soporte de X11-portapapeles en la terminal

Cuando desee ejecutar Vim en un terminal, debe buscar una versión de Vim compilada con soporte para el portapapeles. Compruebe si hay compatibilidad con X11-clipboard, desde la consola, escriba:

% vim --version

Si ve "+ xterm_clipboard", está listo para continuar.

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

El servidor X mantiene tres selecciones, llamadas:

PRIMARIO, SECUNDARIO y CLIPBOARD

La selección PRIMARY se usa convencionalmente para implementar la copia y   pegar con el botón central del mouse. El SECUNDARIO y el CLIPBOARD   las selecciones son utilizadas con menos frecuencia por los programas de aplicación.

http://linux.die.net/man/1/xsel


16
2017-07-21 08:55



Probé las sugerencias anteriores y ninguna de ellas funcionó en mi entorno. (Windows PuTTY clon sobre ssh)

Algunos Google adicionales aparecieron: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

Uno de los comentarios sugirió usar SHIFT+INSERT que hizo el truco para pegar desde el portapapeles de mi escritorio en el buffer de Vim. Ctrl-C ya estaba trabajando para copiar al portapapeles del escritorio desde Vim.


12
2017-08-22 18:36



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

Agregue a su ~ / .vimrc:

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


7
2018-01-06 23:55