在vi编辑器

时间:2016-10-01 13:19:03

标签: regex ubuntu vi

此命令

%s#^#/*

和这个命令

%s#$#*/

在ubuntu 14.04上的 vi 编辑器中正常工作,当我一个接一个地执行它们时。

我需要的是在一行中执行它们,如

%s#^#/* <bar> %s#$#*/

我还尝试 | ; CR 作为分隔符,并始终获取错误488尾随字符

1 个答案:

答案 0 :(得分:2)

在我的vim 7.4补丁769中,这非常有效。

:%s/foo/FOO/ | %s/bar/BAR/

看起来你已经从你的替换中省略了最后的分隔符。 Vim不知道你的替换字符串在哪里结束而没有终止#字符。当执行一个替换的常规命令时,如果找不到一个替换,vim会将命令的结尾视为终止分隔符。

例如,如果在命令的最后一次替换中省略了终止符,则它可以工作:

:%s/foo/FOO/ | %s#bar#BAR

最后一个关于你的潜艇的快速提示。您可以使用一些基本捕获组魔法替换单个替换文本中的一行。匹配整行并在替换中使用&以重用匹配的文本:

:s#.*#/* & */