如何使 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
区分大小写一样,您可以使用这些标志只使表达式的一部分变得神奇。
但是如果你在表达式的开头打开它并且不再关闭它,整个表达式就会被视为魔法。
必须在 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
区分大小写一样,您可以使用这些标志只使表达式的一部分变得神奇。
但是如果你在表达式的开头打开它并且不再关闭它,整个表达式就会被视为魔法。