¿Cómo eliminar todas las líneas que NO contienen una palabra determinada en Vim?

94

En vim puedo eliminar todas las líneas que contienen la palabra "precio" con esto

:g /price/d

¿Cómo puedo eliminar todas las líneas que NO contienen la palabra "precio"?

digitaljoel
fuente
1
¿Se puede migrar esta pregunta a vi.stackexchange.com ? Traté de marcarlo para la migración pero no pude resolverlo.
Mu Mind
@MuMind Está en el tema aquí, así que no hay necesidad de migrar . " No migre por el bien de la migración. Solo migramos preguntas porque son fuera de tema en el sitio original . Es perfectamente posible que una pregunta esté relacionada con el tema en varios sitios, pero eso no es una razón para migrarla a otro lugar, a menos que el OP solicite la migración ". Además, solo los empleados de SE pueden migrar después de 60 días y es muy raro que Will (ni siquiera los moderadores pueden migrar una pregunta anterior).
8bittree

Respuestas:

134

Puedes usar

:%g!/price/d

para borrar todas las líneas que no contienen "precio"

Yab
fuente
2
Sabía que sería fácil ...
digitaljoel
29
:g! también es conocido como :v (similar a grep -v ).
Chris Johnsen
2
Lo que hace el % ¿hacer?
hippietrail
3
% Es un rango especial en este contexto que significa todo el archivo. Ver :help cmdline-ranges.
Heptite
14

También puedes usar:

:v/price/d

para borrar lineas.

MOHRE
fuente