Vim替换正斜杠

时间:2016-07-28 05:41:58

标签: vim replace substitution

我有一个字符串

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

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

%s/\/ g    

但它似乎没有用,有什么建议吗?

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

我得到了

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

是否有更简单的方法告诉替换用空格替换\的每一次出现

2 个答案:

答案 0 :(得分:2)

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

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

- >

:%s/\\/ /g

- >

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

答案 1 :(得分:0)

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

:%s/\\//g

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

:%s/\\/ /g

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

%s/\\\\/ g

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

这意味着%s/\\\\/ g%s/\\\\/ g/一样。

如果它确实未被记录(也许已经被记录,而我只是错过了),我就不会指望它的持续功能,但是至少这方面的知识可以帮助解决意外行为。另一方面,您以后的评论表明您不认为必须使用斜杠。您可以指向该文档吗?我想知道我是否可以安全地摆脱它;它使带有长命令列表的文件更具可读性。

要进行验证,例如:

  blah,blah,7.967

尝试这样的事情:

:s/7.96/q

这样做的时候,我得到了:

blah,blah,q7

除非您需要指定标志,否则显然不需要关闭斜杠。