Ответ 1
Глобальная команда - ваш друг - хорошо учитесь. Он позволяет запускать произвольные команды: ex в каждой строке, которая соответствует регулярному выражению. Это аббревиатура соответствует: g.
Чтобы удалить все строки, соответствующие "Джордж Буш":
:g/George Bush/ d
Следующая команда может иметь собственный префикс адреса/диапазона, который будет относиться к согласованной строке. Итак, чтобы удалить 5-ю строчку после Джорджа Буша:
:g/George Bush/ .+5 d
Чтобы удалить записи журнала DEBUG:
:g/DEBUG/ .,+10 d
Если вы знали, что трассировка стека имеет переменную длину, но всегда заканчивается пустой строкой (или другим регулярным выражением):
:g/DEBUG/ .,/^$/ d
Вы также можете выполнить команду для каждой строки, которая НЕ соответствует: g!. например заменить "Буша" на "Обаму" на каждой строке, которая не содержит слова "отстой":
:g!/sucks/ s/Bush/Obama/
Команда по умолчанию предназначена для печати строки в окне сообщения. например для перечисления каждой строки с пометкой TODO:
:g/TODO
Это также полезно для проверки регулярного выражения, которое соответствует ожидаемым линиям, прежде чем вы сделаете что-то деструктивное.
Вы можете связать несколько команд с помощью "|". например изменить Буша к Обаме и Джорджу к Бараку на каждой линии, которая не содержит "отстой":
:g!/sucks/ s/Bush/Obama/g | s/George/Barack/g