buscar - vim search and replace
Busque y elimine varias lĂneas (3)
En vim
: g / George Bush / d
borra todas las líneas con George Bush.
¿Qué pasa si quiero eliminar 5 líneas a continuación que comienzan con George Bush ?
Otro ejemplo realista sería encontrar todos los DEPURACIÓN en un registro de log4net y eliminar hasta el final del seguimiento de la pila (que sé que habrá otras 10 líneas debajo)
El comando: global es tu amigo: aprende bien. Le permite ejecutar comandos arbitrarios: ex en cada línea que coincida con una expresión regular. Se abrevia a: g.
Para eliminar todas las líneas que coincidan con "George Bush":
:g/George Bush/ d
El comando que sigue puede tener su propio prefijo de dirección / rango, que será relativo a la línea coincidente. Entonces, para eliminar la 5ª línea después de George Bush:
:g/George Bush/ .+5 d
Para eliminar las entradas de registro de DEPURACIÓN:
:g/DEBUG/ .,+10 d
Si sabía que el seguimiento de la pila era de longitud variable, pero siempre terminaba en una línea en blanco (u otra expresión regular):
:g/DEBUG/ .,/^$/ d
También puede ejecutar un comando en cada línea que NO concuerde con: g !. por ejemplo, para reemplazar "Bush" con "Obama" en cada línea que no contenga la palabra "apesta":
:g!/sucks/ s/Bush/Obama/
El comando predeterminado es imprimir la línea a la ventana del mensaje. por ejemplo, para listar cada línea marcada TODO:
:g/TODO
Esto también es útil para verificar que la expresión regular coincida con las líneas que espera antes de hacer algo destructivo.
Puede encadenar múltiples comandos usando "|". por ejemplo, cambiar a Bush a Obama Y George a Barack en cada línea que no contenga "apesta":
:g!/sucks/ s/Bush/Obama/g | s/George/Barack/g
Para eliminar 3 líneas debajo de un patrón, por ejemplo, XXX
:g/XXX/+d3
Para eliminar la línea actual con un patrón, así como 2 líneas más a continuación
:g/XXX/d+3
Nota: Use ''-'' para operaciones arriba de un patrón.
:g/George Bush/d 6