我有一个文本看起来像
{\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替换继续传递文件,直到没有更多的匹配.在我看来,这应该是可能的.
有谁知道我需要添加什么魔法来实现这一目标?它看起来不像有一个标志可以实现这一点.也许我不知道标签的一些技巧?