2016-10-01 88 views
4

此命令在一行中vi编辑器

%s#^#/* 

和该命令

%s#$#*/ 

工作正常编辑在Ubuntu 14.04执行两条指令,当我之后单独执行它们一个另一个。

我需要的是既喜欢

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

我也试过一行执行它们|;CR作为分隔符,并始终得到错误488尾随字符

回答

2

在我的vim 7.4补丁769这个作品非常好。

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

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

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

最后关于你的潜艇一个快速提示:

例如,它如果省略在命令的最后一个换人终止工作。你可以用一些基本的捕捉组魔术来包装一行文字。匹配整行并使用&进行替换以重新使用匹配的文本:

:s#.*#/* & */ 
+0

谢谢。您的快速提示是我正在寻找的。最终分隔符允许链接命令,但不能用于斜杠/插入。这:%s/foo/f/o/| :%s/bar/b/r /和这个:%s/foo/f/\/o/| :%s/bar/b/\/r /导致相同的错误488.如何正确地转义斜线? – qupear

+1

@ user2661175:应该很好。我认为你最后一部分有一个错字;一个额外的斜线。这适用于我:':s/foo/f \/o/| S /酒吧/ B \/R /' – progo