regex - 如何使 Vim 在正则表达式控制字符之前不需要反斜杠
问题描述
在 Vim 正则表达式中必须使用的斜线数量非常非常不幸:
:%s/\(\w\+\)\(.*\s\+\)\(\w\+\)$/\3\2\1/
有什么办法可以颠倒规则以便我可以写
:%s/(\w+)(.*\s+)(\w+)$/\3\2\1/
如果我希望它们与该文字字符匹配,我只需要引用(
, )
, .
, *
,等?+
解决方案
您所指的称为“非常神奇”的模式(请参阅 参考资料:help magic
)。
\v
您可以为带有标志的表达式打开它:
:%s/\v(\w+)(.*\s+)(\w+)$/\3\2\1/
默认情况下,此功能未启用,默认情况下启用它根本不是一个好主意。但是您始终可以以每个表达式的方式使用它。
有两种不同的魔法模式,分别由和\v
开启\m
和由 关闭。就像通过and区分大小写一样,您可以使用这些标志来使表达式的一部分变得神奇。\V
\M
\c
\C
但是,如果您在表达式开始时将其打开并且不再将其关闭,则整个表达式将被视为魔术。
推荐阅读
- android - 在动态按钮android中获取图像路径
- javascript - 循环遍历 2 个数组并将一个数组中的一个值分配给第二个数组的每个匹配对象
- mongodb - Mogodb 聚合从 2 个数组创建输出为 {"key": "value"}
- php - 根据 Woocommerce 中的特定用户角色显示菜单项
- python-3.x - 无法获得漂亮的汤以返回正确的文章标题、链接和 img。帮忙调试?
- javascript - Pannellum clickHandlerFunc
- angular - 未处理的承诺拒绝:[object Object] 没有提供者!; 区:
; 任务:Promise.then;值:错误:[object Object] 没有提供者! - docker - 如何在 Jenkins Pipeline 上构建 Docker 映像,而不更改底层 Jenkins VM 的权限?
- php - htaccess 将规则重写到 Wordpress 页面而不更改 URL
- python-3.x - 分区键作为python azure存储表中的变量