Comment supprimer toutes les lignes qui ne contiennent pas un certain mot dans Vim?

116

Dans vim, je peux supprimer toutes les lignes contenant le mot "price" avec cette

:g /price/d

Comment puis-je supprimer toutes les lignes qui ne contiennent pas le mot "price"?

digitaljoel
la source
1
Cette question peut-elle être migrée vers vi.stackexchange.com ? J'ai essayé de le signaler pour la migration mais je ne pouvais pas le comprendre.
Mu Mind
@MuMind C'est sur le sujet ici, donc pas besoin de migrer . " Ne migrez pas pour des raisons de migration. Nous migrons les questions uniquement parce qu'elles sont hors sujet sur le site d'origine . Il est parfaitement possible qu'une question soit sur le sujet sur plusieurs sites, mais ce n'est pas une raison pour migrer ailleurs, sauf si le PO demande la migration. " En outre, seuls les employés SE peuvent migrer après 60 jours et il est très rare qu'ils le fassent (même les modérateurs ne peuvent migrer une vieille question).
8bittree

Réponses:

158

Vous pouvez utiliser

:%g!/price/d

supprimer toutes les lignes qui ne contiennent pas "price"

Yab
la source
3
Je savais que ce serait facile ...
digitaljoel
35
:g!est également connu sous le nom de :v(apparenté à grep -v).
Chris Johnsen
3
Qu'est-ce que le %fait?
hippietrail
4
%est une plage spéciale dans ce contexte qui signifie le fichier entier. Voir :help cmdline-ranges.
Heptite
1
%est facultatif car la plage par défaut est la totalité du tampon.
stillanoob
27

Vous pouvez aussi utiliser:

:v/price/d

supprimer des lignes.

MOHRE
la source
1
Fwiw - On dirait que gc'est pour "global" et vpour "inverse" (si vous croyez ce que vous lisez sur vim.famdom).
Ruffin
help :v
Vim le