我正在尝试执行多行搜索并替换,同时在我正在使用的代码中保留缩进,前导空格。下面是一个近似情况的文本样本。我遇到的问题是保留空白区域。我希望通过以下方法获得非插件,简单的简JIM解决方案:%s / ......
Windows 7上的VIM 7.2 autoindent正在开启 expandtab在
上从:
开始 apples,
banannas,
cherries,
plums
peas,
green beans,
corn,
squash
apples,
banannas,
cherries,
plums
我想添加“梨子”,没有双引号,并且在列表中跟随“樱桃”行。期望的结果是:
apples,
banannas,
cherries,
pears,
plums
peas,
green beans,
corn,
squash
apples,
banannas,
cherries,
pears,
plums
尝试:%s / cherries,/& \ rpears,/ g 会产生......
apples,
banannas,
cherries,
pears,
plums
peas,
green beans,
corn,
squash
apples,
banannas,
cherries,
pears,
plums
尝试:%s / cherries,_ s。\ s * /& pears,\ r / g 会产生......
apples,
banannas,
cherries,
pears,
plums
peas,
green beans,
corn,
squash
apples,
banannas,
cherries,
pears,
plums
谢谢!
答案 0 :(得分:4)
您可以利用:g
和自动缩进与普通o
:
:g/cherries,/normal opears,
答案 1 :(得分:3)
尝试在单词之前提取空白并将其插入替换部分(\1
)。
注意我在开头使用\v
但它与任何内容都不匹配,这是为了使正则表达式非常神奇,并避免转义许多字符,如括号。
:%s/\v(\s*)cherries,/&\r\1pears,/g
它产生:
apples,
banannas,
cherries,
pears,
plums
peas,
green beans,
corn,
squash
apples,
banannas,
cherries,
pears,
plums