results buscar and search vim

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