global
中的substitute
选项似乎不起作用。即使我用g
替换它,它也仅在当前行中替换文本。如果我在停留在没有更多匹配的当前行上再次运行它,它会给我
E486:未找到模式:{patt}
如果我进入下一场比赛并再次运行,那么该线路正常。但是使用g
并且不使用它几乎没有区别。
关于什么是错的任何想法?
printf("abc");
printf("def");
执行:s/printf/print/g
会突出显示printf's
但仅替换第一个n
。我需要{{1}}进行下一场比赛并重新运行替补。
答案 0 :(得分:6)
g
标志是每行多次替换模式。
您正在寻找的是为整个缓冲区运行s///
命令:
:%s/pattern/replacement/g
注意%
前面的s///
,以选择整个缓冲区。它也可以是这样的一系列行:
:10,21s/pattern/replacement/g
执行第10行和第21行之间的替换。
如果没有g
标记,则每行只会替换第一次出现的模式。