在 vim 中用逗号替换"two lines with certain patterns"之间的所有换行符



如果我必须用逗号替换模式1和模式2之间的所有行的换行符,我该怎么做?

发件人:

Pattern 1  
abcd
edfgads asd
adsad
...
Pattern 2

至:

Pattern 1, abcd, edfgads asd, adsad, ..., Pattern 2

使用Pattern 1Pattern 2作为地址,请参阅:help cmdline-ranges:

:/^Pattern 1/,/^Pattern 2/-1 s/n/, /

您可以在替换时放入行号。

:{pattern1LineNo},{pattern2LineNo}s/n/, /g

怎么样

:%s/Pattern 1_.{-}Pattern 2/=join(split(submatch(0), "n"), ", ")/g

搜索

Pattern 1     # obvious
_.           # any character including newline
{-}          # repeat non-greedily (vim's way of writing *?)
Pattern 2     # obvious

更换零件应清楚无误。

对于vim,它将是

:%s/n/, /g

您搜索换行符:n,并将其替换为逗号和空格:,,这是全局执行的g,这些选项由/字符分隔。

有关vim中替换的更多信息,您可以在此处找到

:g/Pattern1/norm V/Pattern2^MgJ
  • :g/在与Pattern1匹配的行上,运行normal模式按键:

    • v可以选择到…/搜索模式2
    • gJ连接所选行,不添加空格

    注:。用Ctrl-V <Enter>Ctrl-Q <Enter> 键入^M

最新更新