17

с помощью grep я могу выполнить команду grep -v "мой поиск", чтобы получить все строки без "моего поиска"

с помощью sed я могу sed /baz /!s /foo /bar /g 'чтобы найти заменяющий текст в строках без базы

Есть ли способ сделать то же самое, vim. И это возможно, но без синтаксиса "s///". Используя только синтаксис поиска "/".

2 ответа2

27
:g/pattern/

соответствует всем строкам, в которых найден шаблон.

:v/pattern/

делает обратное. Смотрите :h global для более подробной информации.

Вы можете использовать это так:

:v/pattern/norm Ipattern not found - <CR>

добавить "шаблон не найден -" к каждой строке, которая не имеет "шаблон" или

:v/pattern/s/nrettap/pattern

заменить "nrettap" на "pattern" в каждой строке, которая не имеет "pattern".

Придуманные примеры, да.

5

Например, для поиска строк, не содержащих foo:

/^\(\(.*foo.*\)\@!.\)*$

Источник: http://vim.wikia.com/wiki/Search_for_lines_not_conisting_pattern_and_other_helpful_searches

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .