我有一个字符串
"{\"attributes\":[],\\\\"data\":\"
我想在整篇文章中删除“\”。我正在使用这个
%s/\/ g
但它似乎没有用,有什么建议吗?
但是如果我做%s/\\\\/ g
我得到了
"{\"attributes\":[], g:\\"data\":\"
是否有更简单的方法告诉替换用空格替换\
的每一次出现
答案 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
除非您需要指定标志,否则显然不需要关闭斜杠。