una texto seleccionar portapapeles pegar palabra linea inicio copiar comandos bloque vim editor keyboard-shortcuts vi

texto - Duplicar una línea entera en Vim.



inicio de linea vim (19)

¿Cómo duplico una línea completa en Vim de manera similar a Ctrl + D en IntelliJ IDEA / Resharper o Ctrl + Alt + / en Eclipse?


1 gotcha: cuando usas "p" para poner la línea, la coloca después de la línea en la que está tu cursor, así que si quieres agregar la línea después de la línea que estás tirando, no muevas el cursor hacia abajo una línea Antes de poner la nueva línea.


El valor predeterminado es y y p , pero he estado usando este rebinding por un año o más y me encanta:

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


Hacer esto:

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


Me gusta usar este mapeo:

:nnoremap yp Yp

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


Me gusta: Shift + v (para seleccionar toda la línea inmediatamente y permitirte seleccionar otras líneas si quieres), y, p


Modo normal: ver otras respuestas.

La forma Ex :

  • :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 del 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 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 de la class xxx formulario class xxx justo después del cursor.

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


Otra opción sería ir con:

nmap <C-d> mzyyp`z

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


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

y y o Y para copiar la línea
o
d d para borrar la linea

entonces

p para pegar el texto copiado o borrado después del cursor
o
P para pegar el texto copiado o borrado antes del cursor


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


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


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 indicado como argumento.

En modo normal lo que esto hace es copy . Copia esta línea justo debajo de esta línea .

Y en el modo visual se convierte en ''<,''> copy ''> copiar 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 inmediatamente debajo de la corriente, como en Sublime Ctrl + Shift + D , puede agregar esto a su archivo .vimrc .

imap <SCd> <Esc>Yp


Si quieres otra forma :-)

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

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

Hay muchas variaciones en esto.

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

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


También puede probar <Cx> <Cl>, 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 <Cp>


YP o Yp o yyp .


y y

tirará de la línea actual sin borrarla

d d

borrará la línea actual

pag

put una línea atrapada por cualquiera de los métodos anteriores


y y p - pegar después

y y P - pegar antes


y y p - recuérdalo con "yippee!"

Varias líneas con un número entre:

y 7 y p


y y o Y para copiar la línea
o
d d para borrar (cortar) la linea

entonces

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


¡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