Tengo un archivo con estas líneas:duplicado en cada línea VI
aa
bb
cc
dd
quiero convertir esto en:
aa
aa
bb
bb
cc
cc
dd
dd
Es esto posible en VI?
Tengo un archivo con estas líneas:duplicado en cada línea VI
aa
bb
cc
dd
quiero convertir esto en:
aa
aa
bb
bb
cc
cc
dd
dd
Es esto posible en VI?
Prueba esta sencilla:
:g/^/norm yyp
Sin embargo, otro (más corto):
:%s/.*/&\r&
Otra:
:%!sed p
Gracias. Funcionó. – arunmoezhi
Gracias por la opción s, porque estaba buscando hacer esto para una selección visual y eso funcionó para mí. – mmarchin
Uso del comando globalg
para operar en cada línea en el archivo:
:g/^/norm yyp
El comando g
funcionará en todas las líneas que coinciden con un patrón. ^
es un patrón que coincidirá con cualquier línea. norm
ejecuta el comando yyp
, que tira de la línea actual y la pega. :g/^/norm Yp
también funcionará.
Consulte :help global
para obtener más información sobre el comando, y consulte también esta página vim wiki en g
.
Gracias por la explicación – arunmoezhi
O simplemente ':% norma Yp' – Conner
@Conner: Eso no funciona, ya que% itera sobre el rango original, pero el comando agrega líneas. Necesitas la lógica "marca primero, luego itera" de ': global' aquí. –
me gusta g/^/t.
El comando g
(por global
) buscará las líneas que coinciden con un patrón.
El patrón que especificamos es ^
, que coincidirá con todas las líneas. t
copiará y pegará, y finalmente
el dot
le dice que pegue a continuación.
¿Puedo ganar brevedad?
+1 Demasiadas maneras. Este es el más corto, supongo. – kev
Gracias por la respuesta. Lo voté – arunmoezhi
esto es lo que generalmente uso – sehe
Probablemente de interés para mucha gente que llega aquí: http://stackoverflow.com/q/29368158/812102 –
¡Utiliza atom dude !! :). Puedes hacerlo con Cmd + Shift + D (o Ctrl + Shift + D) –