在vim中将反斜杠 '\' 替换为正斜杠 '/'。

16

我有一些脚本(Linux)生成基于Windows的输出。 我期望它为 /home/manty/...,但它实际生成 \home\manty\...。每次尝试更改一个非常烦人。 因此,为了这个目的,我将离开vim并转而使用gedit来执行“查找和替换”。如何在vim中实现?

我尝试了以下方法:

:%s/\\/\/

只有两个地方发生了变化。我尝试了几种其他组合,但什么都不起作用。


可能是如何在vi搜索和替换中包含正斜杠的重复问题。 - kenorb
如何在VIM查找/搜索中转义反斜杠和正斜杠? - kenorb
2个回答

28
啊,我漏了那个 "g" 的东西。
:%s/\\/\//g

这个命令很管用。其中 g 代表全局,将会对整个文件进行修改。

此外,如果你想要监视每次更改,你可以添加一个额外的选项 c。如果你想使用 c 选项,则命令应该是 :%s/\\/\//gc,然后选择每个更改是 y 还是 n

我会等待来自 Vim 神的更好答案。我相信一定有更好的方法。


如果您使用 g,则可以避免 %:s/\\/\//g 就是这样制作的。 - fedorqui
谢谢。好的,那么首先只有 %s,为什么它不起作用? - Sandeep
没有百分号,它只替换一行。 我想整个文件都替换。 - Sandeep
也许这取决于你的 vi 版本?在 http://www.linfo.org/vi/search.html 上,他们建议使用它,所以我也感到困惑,因为我的尝试只替换了一次。 - fedorqui
3
通过使用不同的分隔符(例如 #),你可以避免转义正斜杠::%s#\\#/#g - Ingo Karkat

8
您可以像这样使用另一个分隔符:
 :%s,\\,/,g

1
你在这里发布的内容与 :%s@,/@g 完全相同。反斜杠可以转义任何分隔符,没有办法省略两个反斜杠。 - ZyX
谢谢,非常有效,但是使用 :%s,//,,g 命令可以去除双斜杠。 - Coffee and Code

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接