/在visearch和replace?
在vi中,search和replace,你怎么逃避一个'/'(正斜杠),以便它是正确的。 说一个道路。
如:/ Users / tom / documents / pdfs /
:%s//Users/tom/documents/pdfs//<new text>/g --FAILS (obviously) :%s/\/Users/tom/documents/pdfs\//<new text>/g -- FAILS with a trailing error :%s/'/Users/tom/documents/pdfs/'/<new text>/g -- FAILS with a trailing error
我错过了什么?
您也需要在内部避开正斜线。
:%s/\/Users\/tom\/documents\/pdfs\//<new text>/g
或者你可以这样做:%s,foo/bar/baz,foo/bar/boz,g
– 由于混乱:%s,foo/bar/baz,foo/bar/boz,g
我几乎从不使用斜杠。
正如莎拉所说,你需要逃避所有的正斜线。
除了正斜线之外,您可以使用另一个字符作为分隔符。 如果您的searchstring中有大量的斜杠,这很方便。
:%s#/Users/tom/documents/pdfs/#<new test>#g
这在vim中是完美的。 我不是100%确定香草vi。
我知道这个问题已经有好几年了,但是对于那些可能着手寻找更简单的解决scheme的人来说,在2014年,你可以用“/”代替“/”之类的东西,只要你在正面,中间和背面,如下所示:
:%s!foo/bar/baz!foo/bar/boz!g
非常类似于Meder的回答…但是,我发现感叹号更容易作为分隔符来查看。 我只是想确认,这种方法仍然适用于我在Mac OSX Mavericks中使用的VIM的当前版本。
你可以使用?
寻找
如果在寄存器中search模式,并且模式包含“/”字符,则可以简单地使用?
命令而不是/
从正常模式命令开始模式匹配。 在这种情况下,“/”字符不需要更多的转义。 (但是你现在需要转义'?'char)
?
将在/
的相反方向search,所以如果你不介意search方向,而你的search模式不包含'?' 焦炭。
另外,如果你想要更多的话,请检查escape()
脚本。