小编xen*_*aii的帖子

如果没有更多匹配,我如何让vim替换重复?

我有一个文本看起来像

{\o H}{\o e}{\o l}{\o l}{\o o} {\o W}{\o o}{\o r}{\o l}{\o d}
Run Code Online (Sandbox Code Playgroud)

我想让文字看起来像这样

{\o Hello} {\o World}
Run Code Online (Sandbox Code Playgroud)

我可以使用多种工具来解决这个问题,但我正在尝试使用vim替换.到目前为止,我有

:%s/{\\o \(.\{-}\)}{\\o \(.\{-}\)}/{\\o \1\2}/g
Run Code Online (Sandbox Code Playgroud)

这里的模式是

.\{-} 匹配一些人物,不贪心

{\\o .\{-}}匹配正则表达式字符串{\o .*}但非贪婪的.*

\( ... \)创建用于反向引用的捕获组.

当我进行一次替换时,我得到了

{\o He}{\o ll}{\o o} {\o Wo}{\o rl}{\o d}
Run Code Online (Sandbox Code Playgroud)

可以再运行这个命令两次

{\o Hell}{\o o} {\o Worl}{\o d}
Run Code Online (Sandbox Code Playgroud)

然后

{\o Hello} {\o World}
Run Code Online (Sandbox Code Playgroud)

但我真的很喜欢,如果有一种方法可以用一个命令来做到这一点,即告诉vim替换继续传递文件,直到没有更多的匹配.在我看来,这应该是可能的.

有谁知道我需要添加什么魔法来实现这一目标?它看起来不像有一个标志可以实现这一点.也许我不知道标签的一些技巧?

regex vim substitution

4
推荐指数
2
解决办法
735
查看次数

标签 统计

regex ×1

substitution ×1

vim ×1