在vim中找到\
未跟随的所有"
个字符,而不是\
并且不在\
之前,并将其替换为\\
输入:
bla1 \ bla1
bla2\bla2
bla3\\bla3
bla4\"bla4
\bla5
bla6\
输出:
bla1 \\ bla1
bla2\\bla2
bla3\\bla3
bla4\"bla4
\\bla5
bla6\\
尝试了负面观察和前瞻的结合,但没有运气的情况3
%s/\\\@<!\\\("\)\@!/\\\\/g
如果已有2个反斜杠,则不应添加第3个反斜杠 是否可以给出负前瞻2个字符而不是1个字符。 换句话说,说出A或B后面的内容,而不是后面的内容
答案 0 :(得分:1)
好的,我想我已经解决了它
%s/\\\@<!\\["\\]\@!/\\\\/g
说明:
\\\@<! - not preceded by \
\\ - actual \ character
["\\]\@! - not followed by either " or \
/\\\\/g - replace by \\
答案 1 :(得分:0)
:%s/[^\\]\zs\\\ze[^"\\]/\\\\/g
这会将您的输入更改为输出。而且我个人认为比周围的环境更容易理解。