Pregunta

¿Hay alguna forma de copiar todas las líneas del archivo abierto al portapapeles en el editor VI?Lo intenté yGRAMO pero no utiliza el portapapeles para almacenar esas líneas.

Entonces ¿es posible?

¿Fue útil?

Solución

Debe tirar el texto a * o + registros :

gg"*y G

Explicación:

  • gg para colocar el cursor en el primer carácter del archivo
  • "*y para iniciar un comando de extracción al registro G desde la primera línea, hasta ...
  • <=> para ir al final del archivo

Otros consejos

Usar:

:%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

NÓTESE BIEN:En Windows, + y * son equivalentes ver esta respuesta.

en Mac

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

  • copia todo el archivo :%w !pbcopy

  • pasado del portapapeles :r !pbpaste

El portapapeles es el búfer + . Para copiar al portapapeles, haga "+ y y [movimiento].

Entonces, gg"+ 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 para usar VI, es simplemente escribiendo " cat filename " ;. Hará eco del archivo en la pantalla y luego puede desplazarse hacia arriba y hacia abajo y copiar / pegar.

Esto es lo que hago para tirar de todo el archivo:

ggVGy

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

hay un programa 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 intenté, porque vim --version me dijo que tendría el indicador xterm_clipboard deshabilitado (indicado por - ), que es necesario para usar el portapapeles funcionalidad.

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

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

Puede usar " cat " comando para abrir el archivo y usar el mouse para copiar

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

  • CTRL A significa " Marque todo el archivo.
  • CTRL C significa " Copie la selección.
  • ESC significa " Deseleccionar, por lo que su siguiente pulsación de tecla no reemplaza todo el archivo :-)

Al menos en el terminal de Ubuntu (Gnome), la copia estándar también funciona ( CTRL SHIFT C , aunque no parece ser un método abreviado de teclado estándar para select all (que no sea ALT E seguido de A ).

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

Probé algunos de los comandos que la gente ha mencionado anteriormente. Ninguno funcionó. Entonces conseguí el más simple de todos.

Paso 1: vi <filename>
Paso 2: haga clic derecho en la barra de título de la ventana Putty
Paso 3: Seleccione & Quot; Borrar scrollback & Quot; (para evitar copiar el resto de su sesión SSH)
Paso 4: haga clic derecho nuevamente y seleccione & Quot; Copiar todo al portapapeles & Quot ;.

:%y a Yanks todo el contenido en el búfer de vim, Al presionar p en el modo de comando, se pegará el contenido extraído después de la línea en la que se encuentra actualmente el cursor.

gVim:

:set go=a

ggVG

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.

No había un concepto de " portapapeles " en el vi de Bill Joy, así que no creo que haya una forma integrada de hacerlo.

La función de copia automática de todo lo resaltado en el portapapeles de gVim es más fácil o utiliza un programa externo a través de:!

Para el vim de Cygwin uso

:%!putclip
u

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

Bueno, todos estos enfoques son interesantes, sin embargo, como programador perezoso, utilizo tirar de todas las líneas mediante la 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 + <=> - > tira 78 líneas debajo del cursor y la línea actual

Si tus dedos por defecto CTRL-A CTRL-C, luego prueba las asignaciones de $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

los tengo mapeados a <Leader><C-a> y <Leader><C-c>.

Copie todo el archivo dentro del vim o sus pestañas

y G 

luego muévase a una pestaña y péguelo

p

y para cortar todo el archivo use

d G

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

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

Agréguelo a su .vimrc y estará listo para comenzar ...

Sé que diez años en esto deberían resolverse, pero las dos primeras respuestas no funcionaron para mí, así que seguí investigando. En un Redhat (servidor remoto) - Windows 10 (máquina local), si no puede seleccionar todo con un mouse, está atascado porque las copias habituales no funcionan entre el portapapeles de la máquina remota y local.

Entonces, para copiar en el Linux remoto y pegar en el Windows local, especifique el búfer primario con el * y haga un buen doble tirón

Use gg" * y y .

He agregado la siguiente línea a mi .vimrc

nnoremap <F5> :%y+<CR>

Esto me permite copiar todo el texto en Vim al portapapeles presionando F5 (en modo comando).

No pude copiar archivos usando las respuestas anteriores, pero tengo masilla y encontré una solución en 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 configuró 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 eventualmente se hará grande. En ese caso, elimine el archivo de registro y agregue el archivo de destino para que se copie 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 <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: si está utilizando neovim, también necesita un administrador de portapapeles como xclip. Para obtener más información, escriba neovim :h checkhealth

También es importante mencionar que no siempre se copiará un simple y en el portapapeles, para que cada copia se alimente + que es " Registro del Portapapeles " intente configurar: :set clipboard=unnamed,unnamedplus. Para obtener más información, consulte: :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 suelte. El código se copia automáticamente en el portapapeles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top