比如,如果我想使用包含反斜杠或正斜杠的字符串进行查找和替换,在vim中应该怎么做?
例子: 查找和替换命令是::%s/foo/bar/g
如果我想查找所有出现的<dog/>
并用<cat\>
进行替换呢?
你可以像在Linux程序中其他地方一样,使用反斜杠来转义字符:
:%s/<dog\/>/<cat\\>
但请注意,您可以选择不同的定界符:
:%s@<doc/>@<cat\\>@
使用这种方式可以避免在带有大量斜杠的模式中输入所有耗时、令人困惑的反斜杠。
来自文档:
除了用于包围模式和替换字符串的
/
之外,您还可以使用任何其他单字节字符(但不能使用字母数字字符、\
、"
或|
)。 如果要在搜索模式或替换字符串中包含/
,则此方法非常有用。
s
后面的字符被视为分隔符。我无法确定我在文档中找到了哪个列表,但至少 / : ; * % @ #
是有效的。 - Cascabel%s:<dog/>:<cat>
如果某些模式变得烦人,您可以替换 / 分隔符。
:
分隔符”,我不知道您可以使用它。 我在“转义混乱”的时候总是使用@
。 - Jeffrey Jose用反斜杠引用它们。另外,除了斜杠之外,使用另一个分隔符通常会有所帮助。
:%s#<dog/>#<cat\\>#
或者,如果你必须使用斜杠作为替代命令分隔符
:%s/<dog\/>/<cat\\>/
我在寻找类似的东西,用于搜索包含/
字符的注册值(以记录宏)。解决方案是使用?
标记而不是/
进行搜索。
?
将进行向后搜索,并且与其他符号不同。 - Martin Tournoij:%s/<dog\/>/<cat\\>/g
反斜杠 斜杠 反斜杠 星号
/(<- the prompt)\/\*
所以在你输入后它看起来像这样
/\/\*
vi --help
没有提供转义特殊字符的解释...这也是人们首先来到stackoverflow的原因... - aequalsb:help magic
是你在 vim 内部输入的内容。它不是 vim 的命令行参数。 - doubleDown