Quería agregar una línea después de cada 3 líneas en un archivo (que tiene alrededor de 1000 líneas) usando el editor vim. ¿Alguien me puede ayudar?Cómo agregar una línea después de cada pocas líneas en vim
Gracias, Alisha
Quería agregar una línea después de cada 3 líneas en un archivo (que tiene alrededor de 1000 líneas) usando el editor vim. ¿Alguien me puede ayudar?Cómo agregar una línea después de cada pocas líneas en vim
Gracias, Alisha
hay una expresión regular-vim específico para hacer que
:%s/.*\n.*\n.*\n/\0\r/g
Editar: si quiere algo más que una nueva línea, simplemente coloque el texto delante del \ (correctamente) expresiones regulares escapó, si contiene algunos caracteres de expresiones regulares)
me gustaría hacer esto:
:%s/^/\=(line(".")%4==0?"\n":"")/g
esto funciona si su requerimiento cambiado a "* añadir una nueva línea en blanco cada línea de 700 * s" :) simplemente cambia el "4"
P.S. si necesito hacer esto, no lo haré en vim. sed, awk, podría hacerlo mucho más simple.
¿Puedes explicarlo? ¿Qué significa cada cmd? – Alisha
'^' Representa el inicio de la línea. Estamos obteniendo la Modificación del número de la línea actual por 4, si es verdadera (igual a cero) se considera una nueva línea como una sustitución, de lo contrario, no se usa nada "". – SergioAraujo
Puede usar un macro. El proceso completo se ve así:
qq " start recording to register q (you could use any register from a to z)
o " insert an empty line below cursor
<Esc> " switch to normal mode
jjj " move the cursor 3 lines downward
q " stop recording
A continuación, sólo se mueven a la línea de salida y escriba [email protected]
para ejecutar la macro 1000 veces.
El comando final sería 'qqoEsta es la línea para agregar
@Sam Vim dejará de ejecutar la macro tan pronto como llegue al final del archivo. –
Esto también es útil si desea hacer algo con el * end * de una línea en lugar de insertar una nueva línea antes de la 4ª línea o similar. – HitScan
" insert a blank line every 3 lines
:%s/\v(.*\n){3}/&\r
: .............. command
% .............. all file
s .............. replace
/.............. start pattern that we will replace
\v ............. very magic mode, see :h very-magic
(.*\n) ......... everything including the line break
{3} ............ quantifier
/.............. start new pattern to replace
& .............. corresponds to the pattern sought in (.*\n)
\r ............. add line break
vim también tiene '\ {n \}' 'que coincide con las ocurrencias de un patrón N'. Por ejemplo, utilicé esto para insertar la palabra "IR" en cada centésima línea (al escribir '. * \ N' 100 veces se vuelve tedioso):'% s/\ (. * \ N \) \ {100 \}/\ 0GO \ r/g'. O habilitando el modo muy mágico ('\ v') dentro de la expresión regular, se vuelve un poco más simple de leer:'% s/\ v (. * \ N) {100}/\ 0GO \ r/' –