Cómo copiar y pegar contenido en el editor vi

Intenté usar Ctrl + V para pegar contenido en un documento del editor vi, pero Ctrl + V no se interpreta como una pasta.

Primero, asegúrese de estar en modo de edición (presione i). Luego puedes pegar con Ctrl+Shift+V si estás en un emulador de terminal como gnome-terminal (o seleccione "Pegar" en el menú contextual).

También puede escribir :set paste en vim antes de pegar para deshabilitar la sangría automática, etc. Entonces :set nopaste después de pegar el contenido.

Compruebe también esta pregunta en stackoverflow.com para más información.

Si desea copiar/pegar líneas en vim (en lugar de pegar el contenido del portapapeles), querrá consultar el tirón comando. Aquí hay un hoja de trucos eso podría ayudar.

Vi (y Vim) funciona de manera muy diferente en comparación con un editor de texto normal como Gedit. También tiene una curva de aprendizaje bastante pronunciada. Si desea aprender algunos comandos básicos, comience con este tutorial interactivo.

Sin embargo, para responder a su pregunta. Se puede acceder al contenido del portapapeles del sistema a través del registro plus. Entonces, para pegar algo del portapapeles del sistema, puede, desde el modo normal, presionar: "+p (No al mismo tiempo, sino uno tras otro).

Siempre uso Shift+Insert cuando quiero pegar texto en el terminal, funciona en todos los programas de terminal.

(Que es también la razón por la que nunca consigo una computadora portátil donde no se puede presionar Insert sin presionar una tecla secundaria)

  1. Si desea copiar y pegar contenidos dentro del mismo archivo, utilizar yank y paste.

  2. Si desea copiar y pegar contenidos a través de terminales, abra el primer archivo, extraiga el texto que desee y, a continuación, abra el segundo archivo en vim (p. ej. :tabnew /path/to/second/file) y prensa p para pegarlo.

  3. Si desea copiar y pegar contenidos de vim a un programa externo, necesita acceder al portapapeles del sistema. Supongo que usas Ubuntu. La versión GUI de vim siempre tiene soporte para portapapeles, sin embargo, si desea usar Vim desde una terminal, deberá verificar si es compatible con X11-portapapeles.

    En la consola, escriba:

    $ vim --version | grep xterm

    Si encuentras -xterm_clipboard tienes dos opciones:

    1) Compile vim usted mismo, con el indicador xterm_clipboard activado

    2) Desinstalar vim, instalar gvim (vim-gtk o vim-gnome) en su lugar. Puede apegarse a vim que no sea de gui llamando a vim desde la terminal, de la misma manera que lo hizo antes. Esta vez, cuando revises, deberías encontrar +xterm_clipborad.

    Ahora, cuando extrae algún texto en el registro + dentro de su editor vim (por ejemplo, "+yy), también se copia en el portapapeles del sistema que puede recuperar de su programa externo como gedit editor, usando Ctrl+V.

  4. Si desea copiar y pegar contenidos de un programa externo a vim, primero copie su texto en el portapapeles del sistema a través de Ctrl+C, luego en el editor de vim modo de inserción, haga clic en el botón central del ratón (generalmente la rueda) o presione Ctrl+Shift+V pegar.

    Estos son 4 básicos copiar y pegar condiciones relacionadas con VIM. Espero que esto ayude.

Utilice el botón central del ratón para insertar texto que haya resaltado en otro lugar.

Es útil cuando no tiene acceso al portapapeles del sistema (por ejemplo, en una sesión SSH remota).

Debe estar en modo de edición / inserción para Vim.

Una vez que ingrese vi, presione i para entrar en el modo de inserción, haga clic con el botón derecho en terminal, haga clic en pegar.

Instrucciones detalladas para copiar y pegar líneas de texto en VI con yank y put

(utilice lo siguiente en el modo de comando de vi)

Copia (TIRÓN)

Para copiar una línea en vi:

  • En el modo de comando, mueva el cursor a la línea que necesita copiarse y escriba yy o tipo Y

Para copiar 2 líneas en vi:

  • En el modo de comando, mueva el cursor a la primera línea que debe copiarse y escriba 2yy o tipo 2Y

(del mismo modo, se puede copiar cualquier número de líneas)

Para copiar todas las líneas de la ubicación actual al final del archivo:

  • En el modo de comando, mueva el cursor a la primera línea que debe copiarse y escriba yG

Para copiar todo el texto de la ubicación actual al final de la palabra actual:

  • En el modo de comando, mueva el cursor a la ubicación desde la que se debe copiar el texto y escriba yw

Para copiar todo el texto desde la ubicación actual hasta el final de la línea:

  • En el modo de comando, mueva el cursor a la ubicación desde la que se debe copiar el texto y escriba y$

Pegar (PONER)

Para pegar texto en el portapapeles - despues la ubicación del cursor:

  • En el modo de comando, escriba p

Para pegar texto en el portapapeles - antes la ubicación del cursor:

  • En el modo de comando, escriba P

Con Vim 8+ en Linux o Mac, ahora puede simplemente usar el pegado nativo del sistema operativo (ctrl+shift+V en Linux, cmd+V en Mac). No presione i para el Modo de Inserción.

Pegará el contenido del portapapeles de su sistema operativo, conservando los espacios y las pestañas sin agregar autoindentado. Es equivalente a la antigua :set paste, i, ctrl+shift+V, esc, :set nopaste método.

Ni siquiera necesitas el +clipboard o +xterm_clipboard las funciones de vim ya no están instaladas. Esta característica se denomina "pegado entre corchetes". Para obtener más información, consulte https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

Tuve un problema, porque mi instalación de Vim no era compatible portapapeles:

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

Instalé vim-gnome (que admite el portapapeles) y luego lo verifiqué nuevamente:

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.

Primero, verifique si su vim tiene soporte para portapapeles instalado

:echo has('clipboard')

Si devuelve 1, tiene soporte para portapapeles

Para copiar al portapapeles, debe seleccionar su destino, digamos un párrafo vip y luego "+y, lo que significa para el registro + copie la parte seleccionada o simplemente puede escribir en modo normal: "+yip, lo que significa: al registro + copia el párrafo interior.

Para pegar desde el portapapeles en modo normal, puede:

"+p

En el modo de inserción, simplemente puede Ctrl-rCtrl-o+. Esto insertará el contenido del portapapeles y conservará toda la sangría tal como está en el portapapeles.

Si desea copiar todo el búfer al portapapeles, puede:

:%y+% ........ the whole filey ........ yank (copy)+ ........ to the clipboard

Para copiar el último comando en el portapapeles:

:let @+=@:

Para copiar la última búsqueda en el portapapeles:

 :let @+=@/

para copiar desde la marca " a "hasta la marca "b" en el portapapeles:

 :'a,'b y+

Para probar cualquier función que esté en el portapapeles, puede

:@+    (and then type Enter):call FunctionName() (and then type Enter)

Para ver lo que hay en el portapapeles:

:reg +

Para copiar todas las líneas que tienen "patrón" en el portapapeles, puede:

:let @a="":[range]g/pattern/y A:let @+=@a:let @a="" ............ cleanses the register 'a':[range]g/pattern/y A   append to the register A every line with pattern:let @+=@a ............ copy register 'a' to the clipboard

Solo una nota, la razón principal para usar Vi es porque Vim no está instalado. Si tiene Vim instalado, probablemente valga la pena usarlo en su lugar. En realidad, Vi no tiene ninguna ventaja, además de que ya está presente en todas las instalaciones de Unix. La mejor manera de aprender Vim en mi opinión es abrir su emulador de terminal (no desde Vim) y escribir vimtutor, lo pondrá al día hasta donde pueda usarlo en aproximadamente 45 minutos.

+1 @BenMordecai-Ya estaba familiarizado con vi (de la antigüedad), incluida su conveniente capacidad de subcapa, pero necesitaba esa actualización. Un poco de tutoría. Lo atravesé como una brisa. Gracias.

Revisa mi respuesta aquí How to copy selected lines to clipboard in vim - Stack Overflow