如何在VIM find/search中转义反斜杠和正斜杠?

pw136qt2  于 2022-11-11  发布在  其他
关注(0)|答案(6)|浏览(337)

例如,如果我想用包含反斜杠或正斜杠的字符串进行查找和替换,在Vim中如何实现呢?
示例查找和替换为::%s/foo/bar/g
如果我想找到所有出现的<dog/>并将其替换为<cat\>,该怎么办

muk1a3rh

muk1a3rh1#

与在linuxy程序中其他地方转义字符的方式相同,使用反斜杠:

:%s/<dog\/>/<cat\\>

但请注意,您可以选择不同的分隔符:

:%s@<doc/>@<cat\\>@

这可以节省您在大量斜杠模式中输入所有那些耗时、令人困惑的反斜杠。
documentation
除了模式和替换字符串周围的/,您可以使用任何其他单字节字符,但不能使用字母数字字符,\"|。如果您要在搜索模式或替换字符串中包含/,这将非常有用。

sgtfey8w

sgtfey8w2#

%s:<dog/>:<cat>

如果/分隔符对于某些模式来说很烦人,您可以替换它们。

vhipe2zx

vhipe2zx3#

用反斜杠将它们引起来。另外,除了斜杠之外,使用其他分隔符通常也会有所帮助。

:%s#<dog/>#<cat\\>#

或者必须使用斜杠作为替代命令分隔符

:%s/<dog\/>/<cat\\>/
gt0wga4j

gt0wga4j4#

我在寻找类似的东西,搜索包含/字符的寄存器值(记录宏)。解决方案是使用?标记而不是/进行搜索。

uz75evzq

uz75evzq5#

语法为:

:%s/<dog\/>/<cat\\>/g
gv8xihay

gv8xihay6#

反斜杠斜杠反斜杠星星

/(<- the prompt)\/\*

所以在你输入之后

/\/\*

相关问题