regex – 在vi编辑器中的一行中执行两个命令

这个命令

%s#^#/*

和这个命令

%s#$#*/

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

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

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

我也试过了和;和CR作为分隔符,总是得到错误488尾随字符

最佳答案 在我的vim 7.4补丁769中,这非常有效.

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

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

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

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

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

:s#.*#/* & */
点赞