it-swarm-es.tech

Duplicar una línea entera en Vim.

¿Cómo puedo duplicar una línea entera en Vim de una manera similar a Ctrl+D en IntelliJ IDEA/Resharper o Ctrl+Alt+/ en eclipse?

1492
sumek

yy o Y para copiar la linea
o
dd borrar (recortar) la linea

entonces

p para pegar el texto copiado o eliminado después la línea actual
o
P para pegar el texto copiado o eliminado antes la línea actual

2555
Mark Biek

Modo normal: ver otras respuestas.

El Ex forma:

  • :t. duplicará la línea,
  • :t 7 lo copiará después de la línea 7,
  • :,+t0 copiará la línea actual y la siguiente al principio del archivo (,+ es un sinónimo para el rango .,.+1),
  • :1,t$ copiará las líneas desde el principio hasta la posición del cursor hasta el final (1, es un sinónimo del rango 1,.).

Si necesita mover en lugar de copiar, use :m en lugar de :t.

Esto puede ser realmente poderoso si lo combinas con :g o :v

  • :v/foo/m$ moverá todas las líneas que no coincidan con el patrón "foo" al final del archivo.
  • :+,$g/^\s*class\s\+\i\+/t. copiará todas las líneas subsiguientes del formulario class xxx justo después del cursor.

Referencia: :help range, :help :t, :help :g, :help :m y :help :v

375
Benoit

YP o Yp o yyp.

279
Linulin

copy and paste in vim

¡No hay nada más simple que esto! Desde el modo normal:

yy

a continuación, vaya a la línea en la que desea pegar y

p
229
Adam

yy

tirará la línea actual sin borrarla

dd

borrará la línea actual

p

será put una línea capturada por cualquiera de los métodos anteriores

49
pjz

Hacer esto:

Primero, yy para copiar la línea actual, y luego p pegar.

38
Eric Z Beard

Si quieres otra forma :-)

"ayy esto almacenará la línea en el búfer a

"ap esto pondrá el contenido del búfer a en el cursor.

Hay muchas variaciones en esto.

"a5yy esto almacenará las 5 líneas en el búfer a

vea http://www.vim.org/htmldoc/help.html para más diversión

38
Kwondri

yyp - Recuérdalo con "yippee!"

Varias líneas con un número entre:

y7yp

37
theschmitzer

yyp - pegar después

yyP - pegar antes

22
yemu

También puede probar <C-x> <C-l> que repetirá la última línea desde el modo de inserción y le trae una ventana de finalización con todas las líneas. Funciona casi como <C-p>

11
nikolavp

Otra opción sería ir con:

nmap <C-d> mzyyp`z

te da la ventaja de preservar la posición del cursor.

11
Rook

Me gusta: Shift+v (para seleccionar la línea completa inmediatamente y permitirle seleccionar otras líneas si lo desea), y, p

10
Gabe

Para alguien que no sabe vi, algunas respuestas de arriba podrían confundirlo con frases como "pegar ... después/antes linea actual".
En realidad es "pegar ... después/antes cursor".

yy o Y para copiar la linea
o
dd para borrar la linea

entonces

p para pegar el texto copiado o eliminado después de el cursor
o
P para pegar el texto copiado o eliminado antes de el cursor


Para obtener más enlaces de teclas, puede visitar este sitio: vi Lista completa de enlaces de teclas

10
Michael

1 gotcha: cuando usa "p" para poner la línea, la pone después la línea en la que está su cursor, así que si desea agregar la línea después de la línea que está tirando, no mueva la cursor hacia abajo una línea antes de poner la nueva línea.

3
cori

El valor predeterminado es yyp, pero he estado usando este rebinding por aproximadamente un año y me encanta:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv

2
Chris Penner

Para aquellos que comienzan a aprender vi, aquí hay una buena introducción a vi al enumerar los comandos vi lado a lado a los movimientos de cursor y las teclas de acceso directo del típico editor de GUI de Windows. Enumera todos los comandos básicos incluidos yy (línea de copia) y p (pegar después) o P(pegar antes).

vi (Vim) para usuarios de Windows

1
ap-osd

Sé que llego tarde a la fiesta, pero como sea; Tengo esto en mi .vimrc:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

el comando :copy simplemente copia la línea seleccionada o el rango (siempre líneas completas) debajo del número de línea dado como su argumento.

En el modo normal, esto es copy . copia esta línea justo debajo de esta línea .

Y en el modo visual se convierte en '<,'> copy '> copia desde el inicio de la selección hasta el final de la selección hasta la línea debajo del final de la selección .

1
DarkWiiPlayer

Si desea duplicar una línea y pegarla justo debajo de la corriente, como en Sublime Ctrl+Shift+D, entonces puede agregar esto a su archivo .vimrc.

imap <S-C-d> <Esc>Yp

0
jedi

Me gusta usar este mapeo:

:nnoremap yp Yp

porque hace que sea consistente para usar junto con el comando YP nativo.

0
yolenoyer