Як видалити всі рядки, які НЕ містять певного слова у Vim?


116

In vim я можу видалити всі рядки, які містять слово "ціна"

:g /price/d

Як я можу видалити всі рядки, які НЕ містять слова "ціна"?


1
Чи можна перенести це питання на vi.stackexchange.com ? Я спробував позначити це міграцією, але не зміг цього зрозуміти.
Mu Mind

@MuMind Це тут на тему, тому не потрібно мігрувати . " Не мігруйте заради міграції. Ми мігруємо лише питання, оскільки вони є поза темою на початковому веб-сайті . Цілком можливо, що питання може бути тематичним на кількох сайтах, але це не привід мігрувати. в іншому місці, якщо ОП не вимагає міграції ". Крім того, тільки співробітники ДП можуть мігрувати через 60 днів, і це дуже рідко (навіть навіть модератори не можуть перенести старе питання).
8bittree

Відповіді:


157

Можна використовувати

:%g!/price/d

видалити кожен рядок, який не містить "ціни"


3
Я знав, що буде легко ...
digitaljoel

35
:g!також відомий як :v(подібний до grep -v).
Кріс Джонсен

3
Що робить %?
hippietrail

4
%в цьому контексті є особливий діапазон, який означає весь файл. Див :help cmdline-ranges.
Гептит

1
%необов'язково, оскільки діапазон за замовчуванням - це весь буфер.
stillanoob


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.