我在Vim的substitute
命令中遇到了一个我无法做到的绊脚石
真的按照:
给出以下代码行,其中包含我想要的&&
序列
将&&
替换为&&
和换行符:
return a && b
在我的第一次尝试中,我只使用s/&& /&&^M/g
(^M
通过Ctrl-V
<Enter>
插入)。
这导致以下代码:
return a && &&
b
插入第二个&&<space>
的替换是如何进行的?
我期望第一个(也是唯一的匹配)是&&<space>
并且完全匹配
由&&^M
代替?
问题不在于如何进行正确的替换 - 我最终了
使用\zs
令牌重置匹配的开始并仅插入
新队。
我只是想了解为什么要重复引入。
答案 0 :(得分:3)
您遇到的问题是,substitute命令将&
视为替换中的特殊标记,表示匹配的文本。你需要逃脱它。
:s/&& /\&\&^M/g
答案 1 :(得分:1)
这个简单的命令应该可以工作,在第一行留下一个不雅的尾随空格:
:s/&& /&\r
但我不喜欢尾随空格。
这个可以做你想要的而不留下尾随空格:
:s/&&\zs /\r
我使用&&
作为“标记”,实际匹配<space>
与\zs
分隔,并由回车符替换。
请参阅:help \zs
。
修改强> 的
好吧,我完全没有读到你问题的最后一段。