visual gvim from enable all vim clipboard

gvim - ¿Cómo copiar al portapapeles en Vim?



vim enable clipboard (26)

¿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?


  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 .

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


El * registro hará esto. En Windows, + y * son equivalentes. En Unix hay una diferencia sutil entre + y * :

Bajo Windows, los registros * y + son equivalentes. Para los sistemas X11, sin embargo, difieren. Para los sistemas X11, * es la selección, y + es el búfer de corte (como el portapapeles). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

* es probablemente lo que más deseas el tiempo, así que lo uso * porque funciona como lo espero en ambos entornos.

En las distribuciones de Linux, por alguna razón, primero debe instalar vim-gtk para obtener la funcionalidad del portapapeles.

Y para aquellos confundidos acerca de cómo usar los registros al tirar o poner, simplemente escriba " luego el nombre del registro. Así que para copiar algo en el registro del portapapeles, escriba "*y y luego escriba "*p


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


En su archivo vimrc puede especificar utilizar automáticamente el portapapeles del sistema para copiar y pegar.

En el conjunto de Windows:

set clipboard=unnamed

En el conjunto de Linux (vim 7.3.74+):

set clipboard=unnamedplus

NOTA: Es posible que necesite usar una versión actualizada de Vim para que funcionen.

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


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


Nada de arriba me funcionó en mi computadora portátil con Windows

Ctrl + C estaba bien para copiar ... ¡pero necesitaba Shift + Insertar para pegar!

(Una buena razón para obtener siempre una computadora portátil donde siempre se puede acceder a Insertar sin presionar una tecla secundaria)


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


Puedes encontrar las respuestas aquí Arch Wiki

Para Linux: primero debe habilitar el Portapapeles en su versión vim instalando gvim .

Luego tienes que poner esta línea en tu archivo .vimrc .

set clipboard=unnamedplus


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



Método actualizado :

Nunca estuve satisfecho con el método del portapapeles durante años. El mayor inconveniente es que arruinará el historial de tu portapapeles, incluso cuando usas x para eliminar. Aquí hay una solución mejor y más elegante.

  1. Copie el texto [rango] de vim en el portapapeles del sistema. (Sugerencia: use v o V para seleccionar el rango primero, y luego escriba los dos puntos : para activar el comando Ex):
    :[range]yank +
    p.ej,
    :5,10y * (copiar / tirar líneas 5-10 al registro del portapapeles del sistema * )

  2. Pegue el contenido del portapapeles del sistema en vim en una nueva línea:
    :put +


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 su vim se compila sin la opción +xterm_clipboard como está por defecto en Debian y supongo que en Ubuntu, puede canalizar la selección o el búfer completo a un programa externo que maneje el portapapeles del escritorio. Para xclip (que puede necesitar instalar previamente), el comando será :w !xclip -sel clip


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! :-)


Tal vez alguien lo encontrará útil. Quería mantenerme independiente del portapapeles de X, y aún así poder copiar y pegar un poco de texto entre dos versiones en ejecución. Este pequeño código guarda el texto seleccionado en el archivo temp.txt para copiar. Pon el código de abajo en tu .vimrc. Use CTRL-c CTRL-v para hacer el trabajo.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt


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


para OSX, como se aclaró claramente en las 10342 respuestas anteriores, debe asegurarse de que vim sea compatible con la función del portapapeles, dijo que el que viene pre-enviado con OSX NO es compatible con el portapapeles, y que si ejecuta brew install vim funcionaría .

Excepto que la ejecución de vi aún te hará ejecutar la versión OSX preshipped, no la que instalaste desde brew.

Para superar esto, simplemente asigné un alias a mi comando vim a la versión Brew, no al predeterminado de OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

y ahora estoy de oro


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.