Команда: global - ваш друг, выучите ее хорошо. Это позволяет вам запускать произвольные команды: ex в каждой строке, соответствующей регулярному выражению. Сокращается до: г.
Чтобы удалить все строки, которые соответствуют «Джорджу Бушу»:
: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