未找到 Vim 正则表达式替换模式

问题描述 投票:0回答:2

我想在 Vim 上执行正则表达式替换,我的命令如下:

:%s/\s\s(\w)(.*):\s(.*,)/const get\U$1\L$2 = state => $3/g

问题是,它说找不到模式。

这里我让它在 regex101 上工作:

https://regex101.com/r/dOmgJy/1

regex vim
2个回答
2
投票

vim 的正确正则表达式将是

:%s/\s\s\(\w\)\(.*\):\s\(.*,\)/const get\U$1\L$2 = state => $3/g

你需要转义括号。


0
投票

Vim 正则表达式有一个称为“魔法”的概念。您可以使用特定序列启动正则表达式,它会改变正则表达式的解释方式。

大多数人在 PCRE 中会发现最熟悉的“非常神奇”的设置(

\v
):

:%s/\v\s\s(\w)(.*):\s(.*,)/const get\U\1\L\2 = state => \3/g

除了更正捕获引用 (

$1
->
\1
) 之外,与原始版本相比唯一的其他更改是将
\v
序列添加到模式中。

Vim 关于正则表达式魔法的官方文档

© www.soinside.com 2019 - 2024. All rights reserved.