Я использую vim для удаления всех строк, кроме тех, которые соответствуют определенной строке, например,
: g! / [строка, которую я хочу оставить в редакторе] / d
Работает отлично. Но то, что я действительно хочу и нигде не нашел, это способ использования vim для удаления всего, кроме нескольких строк.
Например, допустим, у меня есть открытый файл со следующей информацией:
Dave came at 12PM
Lucy came at 11AM
Trish came at 5PM
John ate lunch at 2PM
Virgil left at 3PM
Dave left at 6PM
и я хочу, чтобы у меня остались только события, в которых упоминаются Дейв и Джон - какую команду vim я мог бы использовать, чтобы в итоге получить:
Dave came at 12PM
John ate lunch at 2PM
Dave left at 6PM
Я понимаю, что могу использовать инструменты командной строки, такие как findstr в Windows и другие в * nix, но я часто бываю в vim и не смог разобраться с какой-либо командой regex или vim, которая это сделает. Спасибо!
\v
модификатор «очень волшебный», который позволяет вам опустить большинство обратных слэшей, как в ответе Ливена Кирсмаекера.:v
вместо:g!
,Следующие должны это сделать
Сломать
источник
Использовать этот:
Имея в виду:
источник
:s
удалить целые строки более громоздко, чем:g
из вопроса. И это[^Dave|John]
ерунда