在vim搜索和替换字符串中,是否有其他选择,而不必转义字符串中的每个特殊字符。 />
[ERROR] Login unsucessful


然后我必须做

:%s/\[ERROR\]\ Login\ unsucessful/something/g


对于包含很多特殊字符的复杂字符串,它变得更加难看和痛苦

我想做类似

:%s/"[ERROR] Login unsucessful"/something/g


的事情,这样可以避免所有转义。
有没有这样的功能?
/>

#1 楼

您可以使用very-nomagic开关。有关详细信息,请参见:h \V。这会给你%s/\V[ERROR] Login unsuccessful/something/g。还有一个nomagic开关\M,它是\V的较轻版本,似乎并未广泛使用。

还请注意,您不必像在示例中那样转义空格,即使不使用\V

评论


谢谢。正是我想要的。没有在我的Google搜索中找到此信息,不知道为什么。

– MohitC
16年1月8日在12:47

@MohitC我将/映射到/ \ v以对大多数搜索启用“非常魔术”,所以我已经将//映射到/以启动未修改的搜索(用于忽略修饰符的搜索历史)和/ v /到/ \ V快速关闭所有搜索魔术。

–凯尔·斯特兰德(Kyle Strand)
16年1月8日在22:56

@MohitC实际上,我的设置要复杂得多,因为我还使用了一个插件在所有情况下都尽可能一致地使用“ very magic”。在这里查看我的答案。

–凯尔·斯特兰德(Kyle Strand)
16年1月8日在22:58

#2 楼

您不需要转义空格。因此:

:%s/\[ERROR\]\ Login\ unsucessful/something/g


实际上应该是:

:%s/\[ERROR\] Login unsucessful/something/g


当然,您可以启用神奇的“模式”使那些特殊字符不再那么特殊:

:%s/\V[ERROR] Login unsucessful/something/g


请参阅:help /magic

#3 楼

除了其他答案中提到的标记外,

通常情况下,您不需要在搜索字符串中保持精确

例如,为了匹配

[ERROR] Login unsucessful


您可以使用表达式

.ERROR. Login unsucessful


显然,您必须知道数据将不会t包含其他与预期目标不同但与表达式匹配的字符串。