vim - tutorial - Copia todas las lineas al portapapeles.




vim tutorial (15)

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

¿Entonces es posible?


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.

(en respuesta a @rshdev, y para evitar tener que volver a compilar vim con + xterm_clipboard por @nelstrom en 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, utilizar:

sudo apt-get install xclip

Bueno, todos estos enfoques son interesantes, sin embargo, como programador perezoso utilizo yank all line usando una 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 de su cursor y la línea actual

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

y G 

luego pasar a una pestaña y pegar por

p

y cortar todo el uso del archivo.

d G

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

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

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


Esto es lo que hago para tirar todo el archivo:

ggVGy

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 algún administrador de portapapeles como xclip. para más información escriba neovim :h checkhealth

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

Here más información sobre vim wikia.


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

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

Para el vim de Cygwin yo uso

:%!putclip
u

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


Otra forma fácil de copiar el archivo completo si tiene problemas al usar VI, es simplemente escribiendo "cat filename". Hará eco del archivo a la pantalla y luego puede desplazarse hacia arriba y hacia abajo y copiar / pegar.


Probé algunos de los comandos que las personas han mencionado anteriormente. Ninguno funciono Entonces me hice con el más simple de todos.

Paso 1: vi <filename>
Paso 2: haz clic derecho en la barra de título de la ventana Masilla
Paso 3: Seleccione "Borrar scrollback" (para evitar copiar el resto de su sesión de SSH)
Paso 4: Haz clic derecho nuevamente y selecciona "Copiar todo al portapapeles".


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 "Marcar todo el archivo.
  • CTRL C significa "Copiar la selección.
  • ESC significa "Anular la selección, por lo que la 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 MAYÚS C , aunque no parece haber un método abreviado de teclado estándar para select all (excepto ALT E seguido de A ).


Si sus dedos están predeterminados en CTRL-A CTRL-C , intente 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 asignados a <Leader><Ca> y <Leader><Cc> .


en Mac

  • 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

  • pasado del portapapeles :r !pbpaste


puede presionar gg para ubicar el cursor al inicio del archivo, luego presionar yG para copiar todo el contenido desde el principio hasta el final (G ubicado) a buffer.good suerte!


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 la funcionalidad del portapapeles.

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

En arch linux

Puede instalar vim-clipboard por el mismo motivo.





vi