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
结束斜杠显然是不必要的,除非您需要指定标志。
我有一个这样的字符串
"{\"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
结束斜杠显然是不必要的,除非您需要指定标志。