Copia todas las líneas al portapapeles

¿Hay alguna manera de copiar todas las líneas del archivo abierto al portapapeles en el editor VI? Intenté y G pero no está usando el portapapeles para almacenar esas líneas.

Entonces, ¿es posible?

Debe tirar el texto a los registros * o + :

g g " * y G

Explicación:

  • gg para llevar el cursor al primer caracter del archivo
  • "*y para iniciar un comando de extracción en el registro * desde la primera línea, hasta …
  • G para ir al final del archivo

Utilizar:

: % y +

para tirar todas las líneas

Explicación:

  • % para referir el siguiente comando para trabajar en todas las líneas
  • y para tirar esas líneas
  • + para copiar al portapapeles del sistema

NB : en Windows, + y * son equivalentes, mira esta respuesta.

en Mac

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

  • Copie todo el archivo :%w !pbcopy

  • pasado desde el portapapeles :r !pbpaste

El portapapeles es buffer + . Para copiar al portapapeles, haga " + y y [movimiento].

Entonces, g g " + y G copiará todo el archivo.

Del mismo modo, para pegar desde el portapapeles, " + p

Otra forma fácil de copiar todo el archivo si tiene problemas al usar VI, es simplemente escribiendo “nombre de archivo de gato”. Se repetirá el archivo a la pantalla y luego puede desplazarse hacia arriba y hacia abajo y copiar / pegar.

Esto es lo que hago para tirar todo el archivo:

 ggVGy 

(en respuesta a @rshdev, y para evitar tener que volver a comstackr vim con + xterm_clipboard por @nelstrom en los comentarios de OP)

hay un progtwig llamado xclip que funciona como putclip en Ubuntu 11:

 :%!xclip -sel clip u 

no está instalado por defecto. para instalar, use:

 sudo apt-get install xclip 

En Ubuntu 12

Puede intentar instalar el paquete vim-gnome :

 sudo apt-get install vim-gnome 

Lo probé, porque vim --version me dijo que tendría el indicador xterm_clipboard desactivado (indicado por ), que es necesario para usar la funcionalidad del portapapeles.

-> la instalación del paquete vim-gnome en Ubuntu 12 también instaló una versión de vim basada en consola, que tiene esta opción habilitada (indicada por un + antes del indicador xterm_clipboard)

En Arch Linux

usted puede instalar vim-clipboard por la misma razón.

Intenté algunos de los comandos que la gente mencionó anteriormente. Ninguno funcionó. Luego conseguí la más simple de todas.

Paso 1: vi
Paso 2: haga clic con el botón derecho en la barra de título de la ventana Putty
Paso 3: selecciona “Borrar desplazamiento” (para evitar copiar el rest de tu sesión SSH)
Paso 4: haz clic derecho y selecciona “Copiar todo en el portapapeles”.

puede presionar gg para ubicar su cursor al comienzo del archivo, luego presione yG para copiar todo el contenido desde el principio hasta el final (G ubicado) para almacenar el búfer. ¡Buena suerte!

Si está utilizando Vim en modo visual, las claves estándar de cortar y pegar también se aplican, al menos con Windows.

  • CTRL A significa “Marcar el archivo completo.
  • CTRL C significa “Copiar la selección”.
  • ESC significa “De-select, por lo que su siguiente pulsación de tecla no reemplaza todo el archivo 🙂

Debajo de la terminal de Ubuntu (Gnome) al menos, la copia estándar también funciona ( CTRL SHIFT C , aunque no parece haber un atajo de teclado estándar para select all (que no sea ALT E seguido de A ).

:%ya conecta todo el contenido al buffer de vim, presionando p en el modo comando pegará el contenido extraído después de la línea en la que se encuentra el cursor.

gVim:

 :set go=a 

g g V G

Ver :help go-a :

 'a' Autoselect: If present, then whenever VISUAL mode is started, or the Visual area extended, Vim tries to become the owner of the windowing system's global selection. This means that the Visually highlighted text is available for pasting into other applications as well as into Vim itself. When the Visual mode ends, possibly due to an operation on the text, or when an application wants to paste the selection, the highlighted text is automatically yanked into the "* selection register. Thus the selection is still available for pasting into other applications after the VISUAL mode has ended. If not present, then Vim won't become the owner of the windowing system's global selection unless explicitly told to by a yank or delete operation for the "* register. The same applies to the modeless selection. 

Puede usar el comando “cat” para abrir el archivo y usar el mouse para copiar

No había un concepto de “portapapeles” en la vi de Bill Joy, así que no creo que haya una forma incorporada de hacerlo.

La función de copia automática de gVim, cualquier cosa resaltada, es más fácil o utiliza un progtwig externo a través de:!

Para el vim de Cygwin lo uso

 :%!putclip u 

¿Tal vez Ubuntu tiene una aplicación CLI como Putclip?

Bueno, todos estos enfoques son interesantes, sin embargo, como progtwigdor perezoso utilizo tirar toda la línea mediante el uso de combinación de número + y

por ejemplo, tiene un archivo de código fuente con un total de 78 líneas, puede hacer lo siguiente:

  1. gg para obtener el cursor en la primera línea
  2. inserte 78 + y -> tira 78 líneas debajo del cursor y la línea actual

Si sus dedos son predeterminados para CTRL-A CTRL-C , entonces intente las asignaciones desde $VIMRUNTIME/mswin.vim .

 " CTRL-C and CTRL-Insert are Copy vnoremap  "+y " CTRL-A is Select all noremap  gggHG inoremap  gggHG cnoremap  gggHG onoremap  gggHG snoremap  gggHG xnoremap  ggVG 

Los he mapeado a y .

Aquí hay un comando de mapa para seleccionar todo en el portapapeles usando CTRL + a :

 " " select all with control-a " nnoremap  ggmqvG"+y'q 

Agrégalo a tu .vimrc y estás listo para ir …

Copie todo el archivo dentro del vim o sus tabs

 y G 

luego mueve a una pestaña y pega por

 p 

y para cortar todo el uso del archivo

 d G 

No pude copiar archivos usando las respuestas anteriores, pero tengo masilla y encontré una solución alternativa para Quora.

  1. Cambie la configuración de su sesión PuTTY, vaya al registro y cámbiela a “caracteres imprimibles”. Establecer el archivo de registro
  2. Hacer un gato del archivo respectivo
  3. Vaya al archivo que estableció en el paso 1 y tendrá su contenido en el archivo de registro.

Nota: copia todos los caracteres impresos de esa sesión en el archivo de registro, por lo que se hará grande con el tiempo. En ese caso, elimine el archivo de registro y cat el archivo de destino para que pueda copiar el contenido de ese archivo en particular en su máquina.

He creado una función para realizar esta acción, colóquela en su ~/.vimrc .

 fun! CopyBufferToClipboard() %y+ endfun nnoremap y :call CopyBufferToClipboard() command! -nargs=0 CopyFile :call CopyBufferToClipboard() 

OBS: si usas neovim también necesitas algún administrador de portapapeles como xclip. para obtener más información escriba en neovim :h checkhealth

También es importante mencionar que no siempre se copiará una y simple en el portapapeles, para hacer que cada copia de entrada + que es “Registro de Portapapeles” intente establecer :set clipboard=unnamed,unnamedplus . Para más información, ver :h unnamed .

Aquí más información sobre vim wikia.

Haga clic con el botón izquierdo del mouse, arrastre por la sección que desea copiar y liberar. El código se copia automáticamente en el portapapeles.