vi编辑器一行执行两条命令

Execute two commands in one line in vi editor

这个命令

%s#^#/*

和这个命令

%s#$#*/

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

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

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

我也试过 |;CR 作为分隔符并且总是得到 错误 488 尾随字符

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

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

您似乎在替换中省略了最后一个分隔符。 Vim 不知道您的替换字符串在哪里结束而没有终止 # 字符在那里。当执行一个替换的常用命令时,vim 将命令的末尾视为终止分隔符,如果找不到的话。

例如,如果您在命令的最后替换中省略终止符,它会起作用:

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

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

:s#.*#/* & */