Vim 替换正斜杠

Vim replace forward slashes

我有一个这样的字符串

"{\"attributes\":[],\\"data\":\" 

我想删除整个文本中的“\”。我正在使用这个

%s/\/ g    

但它似乎不起作用,有什么建议吗?

但是如果我这样做 %s/\\/ g

我得到

"{\"attributes\":[], g:\"data\":\" 

是否有更简单的方法告诉替换将每次出现的 \ 替换为空 space

您的第一次尝试缺少尾部斜杠来完成命令,您需要转义反斜杠,因为它是正则表达式的特殊字符

"{\"attributes\":[],\\"data\":\" 

->

:%s/\/ /g

->

"{ "attributes ":[],    "data ": " 

首先您询问了如何删除所有“\”字符。那将是:

:%s/\//g

但是,如果您的目标是用空格替换它们,请使用 TessellatingHeckler 的建议:

:%s/\/ /g

有趣的是,似乎没有人解决您对这段代码的观察:

%s/\\/ g

实际上导致您的第一对反斜杠被替换为 "g"。当然,我们知道您的意图是使替换成为全局的(每行,通过 "g" 标志),但是这个结果指出了我已经学到的有趣的 "undocumented feature" in Vim ]: 您可以省略第三个斜杠(或您使用的任何定界符),EOL 似乎可以发挥作用!

这意味着 %s/\\/ g%s/\\/ g/ 的处理方式相同。

如果它确实没有记录(也许它有记录但我只是错过了它),我不会指望它的持续功能,但至少这些知识可以帮助解决意外行为。另一方面,您后来的评论表明您认为结束斜杠不是必需的。你能指出它的文档吗?我想知道没有它我是否可以安全地离开;它使包含长命令列表的文件更具可读性。

为了验证,在这样一行:

  blah,blah,7.967

尝试这样的事情:

:s/7.96/q

当我这样做时,我得到了这个:

blah,blah,q7

结束斜杠显然是不必要的,除非您需要指定标志。