Cómo copiar líneas seleccionadas al portapapeles en vim


Respuestas:


105

SHIFTVte pone en modo de seleccionar líneas. Luego "*ytira de las líneas actualmente seleccionadas al *registro que es el portapapeles. Hay bastantes registros diferentes, para diferentes propósitos. Consulte la sección sobre selection and drop registerspara obtener detalles sobre las diferencias entre los registros *y +en Windows y Linux.


10
En Linux, + es el portapapeles global, * es el portapapeles de selección, mientras que en Windows ambos se asignan al portapapeles global.
Mohnish

74

Si está en Linux y está usando una versión de VIm 7.3.74 o superior (la versión que se instala en Ubuntu 11.10 en adelante lo cumple), puede hacerlo

set clipboard=unnamedplus

que colocará el texto extraído en el portapapeles global y le permitirá pegar desde el portapapeles global, sin tener que utilizar ningún registro especial. A diferencia de la solución de ldigas, esto también funcionará en versiones sin interfaz gráfica de usuario de VIm.


8
Esto solo funciona si instalo el vim-gnomepaquete en lugar de vim.
dan-klasson

4
@ dan-klasson: esta opción requiere un vim compilado con soporte para portapapeles. Puede comprobar si este es el caso escribiendo vim --version | grep "+xterm_clipboard".
BenC

Esto parece funcionar para copiar en otros programas que no son de vim, pero cuando entro en el modo de inserción en vim y uso "shift + insert" para pegar desde el portapapeles, solo se pegan las dos primeras líneas ... Instalé vim-gnome ; ¿Me estoy perdiendo algo más?
t2k32316

1
Si está en macOS, probablemente necesitará usar clipboard=unnameden su lugar ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
streof

13
set guioptions+=a

Will, ... uhmm, en resumen, cada vez que seleccione / tire de algo, colóquelo en el portapapeles también (no en Vim, sino en el teclado global del sistema de ventanas). De esa manera, no tendrá que pensar en guardar cosas en un registro especial.


2
//, ¿A qué sistemas operativos y / o versiones de Vim se aplica este consejo?
Nathan Basanese

10

Para GVIM, presione vpara entrar en modo visual; seleccione el texto y presione Ctrl+Insertpara copiar la selección en el portapapeles global.

En el menú puede ver que la tecla de método abreviado es, por "+yejemplo, mantener presionada la tecla Shift, luego presionar ", luego +y luego soltar Shift y presionar y(engorroso en comparación con Shift + Insert).


¿Por qué esta respuesta no es popular? :(
Ankit Shubham

6

Si está utilizando vim en MAC OSX, desafortunadamente viene con una versión anterior y no cumple con las opciones del portapapeles. Afortunadamente, el homebrew puede resolver este problema fácilmente.

instalar vim:

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

instalar la versión de interfaz gráfica de usuario de vim:

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

reinicie el terminal para que surta efecto.

agregue 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.


//, acabo de probar esto en OSX 10.12.3, y funcionó correctamente después de instalar tanto la última versión de Vim como la última versión de GUI de Vim, como recomendó aquí. Gracias, @anónimo.
Nathan Basanese

4

Instale "xclip" si no lo ha hecho ...

sudo apt-get install xclip

Xclip coloca los datos en el portapapeles "selección / resaltado" en el que hace clic con el botón central para pegar en lugar de "ctrl + v"

Mientras está en vim, use los comandos ex:

7w !xclip

o

1,7w !xclip

o

%w !xclip

Luego, haga clic con el botón central para pegar en cualquier otra aplicación ...


4

Si vim está compilado con soporte para portapapeles, entonces puede usar el "*ysignificado: coloque el texto seleccionado visualmente en el registro *('*' es para el portapapeles)

Si no hay soporte para el portapapeles, creo que la única forma es usarlo Ctrl+Insertdespués de seleccionar visualmente el texto en vim.


3

He agregado la siguiente línea a mi .vimrc

vnoremap <F5> "+y<CR>

Esto le permite copiar el texto seleccionado al portapapeles presionando F5. Debe estar en modo visual para que esto funcione.


1
Agregar a ~/.vimrcGracias, esto es mucho mejor.
jaggedsoft

2

Agrega el siguiente código en tu .vimrc:

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.