Vim-substitute命令插入重复

时间:2012-07-18 08:21:10

标签: regex vim substitution

我在Vim的substitute命令中遇到了一个我无法做到的绊脚石 真的按照:

给出以下代码行,其中包含我想要的&&序列 将&&替换为&&和换行符:

return a && b

在我的第一次尝试中,我只使用s/&& /&&^M/g^M通过Ctrl-V <Enter>插入)。 这导致以下代码:

return a && && 
b

插入第二个&&<space>的替换是如何进行的? 我期望第一个(也是唯一的匹配)是&&<space>并且完全匹配 由&&^M代替?

问题不在于如何进行正确的替换 - 我最终了 使用\zs令牌重置匹配的开始并仅插入 新队。 我只是想了解为什么要重复引入。

2 个答案:

答案 0 :(得分:3)

您遇到的问题是,substitute命令将&视为替换中的特殊标记,表示匹配的文本。你需要逃脱它。

:s/&& /\&\&^M/g

答案 1 :(得分:1)

这个简单的命令应该可以工作,在第一行留下一个不雅的尾随空格:

:s/&& /&\r

但我不喜欢尾随空格。

这个可以做你想要的而不留下尾随空格:

:s/&&\zs /\r

我使用&&作为“标记”,实际匹配<space>\zs分隔,并由回车符替换。

请参阅:help \zs

修改

好吧,我完全没有读到你问题的最后一段。