¿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?
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
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
YP
o Yp
o yyp
.
¡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
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
Hacer esto:
Primero, yy para copiar la línea actual, y luego p pegar.
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
yyp - Recuérdalo con "yippee!"
Varias líneas con un número entre:
y7yp
yyp - pegar después
yyP - pegar antes
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>
Otra opción sería ir con:
nmap <C-d> mzyyp`z
te da la ventaja de preservar la posición del cursor.
Me gusta: Shift+v (para seleccionar la línea completa inmediatamente y permitirle seleccionar otras líneas si lo desea), y, p
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
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.
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
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).
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 .
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
Me gusta usar este mapeo:
:nnoremap yp Yp
porque hace que sea consistente para usar junto con el comando YP
nativo.