如何使 Vim 在正则表达式控制字符之前不需要反斜杠

How to make Vim not require backslashes before regex control characters

必须在 Vim 正则表达式中使用的斜线数量非常非常不幸:

:%s/\(\w\+\)\(.*\s\+\)\(\w\+\)$//

有什么办法可以颠倒规则让我写

:%s/(\w+)(.*\s+)(\w+)$//

如果我想让它们匹配,我只需要引用 ().*+ 等那个文字字符?

你指的是"very magic"模式(参见:help magic)。

您可以为带有 \v 标志的表达式打开它:

:%s/\v(\w+)(.*\s+)(\w+)$//

默认情况下未启用此功能,默认情况下启用它根本不是一个好主意。但是您始终可以以每个表达式的方式使用它。

有两种不同的魔法模式,分别由\v\m开启,\V\M关闭。就像通过 \c\C 区分大小写一样,您可以使用这些标志只使表达式的一部分变得神奇。

但是如果你在表达式的开头打开它并且不再关闭它,整个表达式就会被视为魔法。