У меня есть пример:поиск Vim и заменить
a, an [e, en]
and [end]
afraid [e'freid]
...
Можно ли искать только в скобках? И в этих письмах заменили? Я хотел бы объединить поиск с заменой>/\[.*\]
и :%s/e/ə/gc
.
У меня есть пример:поиск Vim и заменить
a, an [e, en]
and [end]
afraid [e'freid]
...
Можно ли искать только в скобках? И в этих письмах заменили? Я хотел бы объединить поиск с заменой>/\[.*\]
и :%s/e/ə/gc
.
Вы можете сделать это:
:%s/\[\zs.*\ze\]/\=substitute(submatch(0), 'e', 'ə', 'g')/
К сожалению, я не знаю, как получить /c
работать там.
В качестве альтернативы,
:%s/\%(\[.*\)\@<=e\%(.*\]\)\@=/ə/gc
Это один немного «грубой силы» и может работать медленнее на очень длинных линий.
Один из способов (из командного режима):
:!perl -i -pe 'BEGIN{ sub f {$_ = shift; s/e/a/g; return "[$_]" }}; s/\[(.*?)\]/f($1)/e' %
My PatternsOnText plugin содержит команду :SubstituteInSearch
(среди многих других). Это в основном упрощение ответа @ melpomene.
:%SubstituteInSearch/\[.*\]/e/ə/gc
'/ c' действительно работал для меня строка мудрая ... – Sundeep
первая может быть улучшена как' \ [\ zs [^]] * \ ze \] 'для ограничения соответствия внутри' [] 'only .. for ex : 'a, an [e, en] enable]' следует ли изменить 'e' в' enable'? – Sundeep
@Sundeep Согласно исходному шаблону поиска OP, да. – melpomene