我有一个例子:
a, an [e, en]
and [end]
afraid [e'freid]
...
是否可以只在括号中搜索?并在那些字母被取代?
我想将搜索与替换相结合> /\[.*\]
和:%s/e/ə/gc
。
答案 0 :(得分:4)
你可以这样做:
:%s/\[\zs.*\ze\]/\=substitute(submatch(0), 'e', 'ə', 'g')/
不幸的是,我不知道如何让/c
在那里工作。
可替换地,
:%s/\%(\[.*\)\@<=e\%(.*\]\)\@=/ə/gc
这个有点“蛮力”,可能会在很长的路线上运行得很慢。
答案 1 :(得分:0)
单向(从命令模式):
:!perl -i -pe 'BEGIN{ sub f {$_ = shift; s/e/a/g; return "[$_]" }}; s/\[(.*?)\]/f($1)/e' %
答案 2 :(得分:0)
我的PatternsOnText plugin提供:SubstituteInSearch
(以及更多)命令。它基本上是对@ melpomene的回答的简化。
:%SubstituteInSearch/\[.*\]/e/ə/gc