vim - visual - yank to clipboard linux




¿Cómo copiar al portapapeles en Vim? (18)

  1. Ponga set clipboard=unnamed en su vimrc .
  2. Seleccione lo que desea copiar en el modo Visual (Presione v para ingresar).
  3. Volver al modo Normal (Presione escape [esc]), presione y para copiar.
  4. Si desea pegar algo del portapapeles del sistema operativo, presione p / P en el modo Vim Normal .

¿Es posible copiar al portapapeles directamente desde Vim? yy solo copia cosas al buffer interno de Vim. Quiero copiar al portapapeles del sistema operativo. ¿Hay algún comando de este tipo en Vim o solo puedes tirar cosas dentro de Vim?


@Jacob Dalton ha mencionado esto en un comentario, pero nadie parece haber mencionado en una respuesta que vim tiene que compilarse con el soporte del portapapeles para que cualquiera de las sugerencias mencionadas aquí funcione. El mío no estaba configurado de esa manera en Mac OS X por defecto y tuve que reconstruir vim. Use este comando para averiguar si lo tiene o no vim --version | grep 'clipboard' vim --version | grep 'clipboard' . +clipboard significa que eres bueno y las sugerencias aquí te servirán, mientras que -clipboard significa que tienes que recompilar y reconstruir vim.


En Mac OSX

  • copie la parte seleccionada: seleccione visualmente el texto (escriba v o V en modo normal) y escriba :w !pbcopy

  • Copie el archivo completo :%w !pbcopy

  • pegar desde el portapapeles :r !pbpaste

En la mayoría de las distribuciones de Linux , puede sustituir:

  • pbcopy arriba con xclip -i -sel c o xsel -i -b
  • pbpaste utilizando xclip -o -sel -c o xsel -o -b
    - Nota: En caso de que ninguna de estas herramientas ( xsel y xclip ) esté preinstalada en su distro, probablemente las pueda encontrar en los repositorios.

En caso de que no quiera usar ninguna interfaz gráfica para vim y prefiera quedarse con el emulador de terminal, puede haber un enfoque mucho más simple para este problema. En lugar de usar yank o algo como esto, primero eche un vistazo a la documentación del terminal que usa. He estado luchando con el mismo problema (tratando de usar + portapapeles y xclip y así sucesivamente) y al final resultó que en mi emulador de terminal es suficiente con presionar Mayús y seleccionar cualquier texto que quieras copiar. Eso es. Bastante simple y sin necesidad de meterse con la configuración. (Yo uso urxvt por cierto).


Escribí una línea simple en mi .vimrc para hacer funcionar la copia. Espero que esto ayude a alguien. Mi vim no está instalado con el soporte del Portapapeles, desafortunadamente, por lo que ninguna de estas sugerencias funcionó para mí. Básicamente, pega esta línea en tu .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Si desea leer detalles sobre lo que hace esto, puede leer sobre esto en mi blog


La solución para mí fue instalar vim adicional que incluye la opción del portapapeles:

sudo apt-get install vim-gnome

No pude copiar al sistema de mi portapapeles porque tenía esto en mi archivo ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Pero si agrega esta línea a continuación, le permitirá simplemente presionar Ctrl + c para obtener lo que haya seleccionado en su portapapeles.

vmap <C-c> "+y

Discusión original y más detalles: copie texto fuera de vim con el mouse configurado = a habilitado


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

Así que en esos casos tendrías que presionar " Espacio + y o " Espacio * y


Resumiendo y haciéndolo más fácil para los novatos,

Para copiar la línea actual, en el modo de comando escriba:

"*yy

Para copiar todo el archivo / búfer, en el modo de comando, primero vaya al principio con gg , luego escriba

"*yG

Como se indicó, esto requiere +clipboard fuera de vim --version , que indica la disponibilidad de soporte para portapapeles, -clipboard significa no.


Sólo en vim bajo el terminal de Ubuntu,

presione shift + drag mouse para seleccionar un texto en vim luego ctrl + shift + c en el terminal

luego ctrl + v en otro editor


Si está utilizando GVim, también puede set guioptions+=a . Esto activará la copia automática al portapapeles del texto que resaltes en modo visual.
Desventaja: tenga en cuenta que los administradores avanzados del portapapeles (con historial) en este caso obtendrán todo su historial de selección ...


Si se conecta al sistema Unix a través de Putty, siga los pasos a continuación para copiar el contenido de un archivo.

  • Resalte el texto que desea copiar (podrá copiar página por página)
  • presiona ctrl + c (copiará el texto al portapapeles
  • pegar en cualquier editor externo Hecho

Si tiene xclip, una forma fácil de copiar texto al portapapeles es la siguiente:

  1. Yank texto que desea copiar. ( y comando en vainilla vim)
  2. Escriba :call system("xclip -selection clipboard", @")

:call system() ejecuta un comando de terminal. Toma dos argumentos, el primero el comando, el segundo qué canalizar a ese comando. Por ejemplo :echom system("head -1", "Hello\nWorld") devuelve Hello (con algo de relleno). echom devuelve la salida de un comando, la llamada no lo hace.

xclip -selection clipboard simplemente copia el texto en el portapapeles del sistema en lugar del portapapeles X predeterminado, (acceso mediante el botón moue central).

@" devuelve el último texto cortado" es el registro predeterminado, pero puede usar cualquier registro. Para ver el contenido de todos los registros, escriba :registers .


Soy un Vim newby pero, para copiar todo el texto al portapapeles del sistema (por ejemplo, si desea pegarlo en un procesador de textos u otro editor de texto como gedit, mousepad, etc.), en modo normal:

ggVGy

o, más simplemente:

:% y

Como sugerí, también instalé vim-gtk y puse

establecer portapapeles = unnamedplus

en mi .vimrc

y todo funciona bien

Si desea copiar solo una parte del texto, use el modo visual (v) , seleccione el texto que desea copiar y presione y .

Finalmente, sugiero un programa de portapapeles como Clipman (mi favorito), Clipit, Parcellite o similar.

(Estoy usando vim 8.0 en Debian Stretch Xfce)

¡Perdóname por mi inglés! :-)


Tuve un problema porque mi vim no era compatible con el portapapeles :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Instalé vim-gnome (que es compatible con el portapapeles) y luego lo comprobé de nuevo:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Ahora puedo copiar y pegar usando "+ y y" + p respectivamente.


Utilice el registro "+ para copiar al portapapeles del sistema (es decir, "+y lugar de y ).

Del mismo modo, puede pegar desde "+ para obtener texto desde el portapapeles del sistema (es decir, "+p lugar de p ).


selecting con la ayuda del mouse y la right-click copy funcionó en mi caso.

No quería que se incluyeran los números de línea, así que :set nonumber antes de copying .


Para Ubuntu - Julio 2018

Utilice el registro "+ para copiar al portapapeles del sistema (es decir, " + y en lugar de y ).

Del mismo modo, puede pegar desde "+ para obtener texto desde el portapapeles del sistema (es decir, " + p en lugar de p ).

También debe asegurarse de que vim esté compilado con soporte para el portapapeles. Tratar:

vim --version | grep .xterm_clipboard -o 

y si es -xterm_clipboard (un prefijo menos), entonces no tiene soporte.

Aquí hay algunas instrucciones para cambiar con una versión funcional de vim que tenga soporte para el portapapeles.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (elimina cualquier paquete de dependencias vim extrañas del sistema)
  • $ sudo apt-get install vim-gnome

Compruebe de nuevo con vim --version | grep .xterm_clipboard -o vim --version | grep .xterm_clipboard -o y puede confirmar que el portapapeles ya está disponible (es decir ,. + xterm_clipboard )

Buena suerte.





clipboard