我想在 Vim 上执行正则表达式替换,我的命令如下:
:%s/\s\s(\w)(.*):\s(.*,)/const get\U$1\L$2 = state => $3/g
问题是,它说找不到模式。
这里我让它在 regex101 上工作:
vim 的正确正则表达式将是
:%s/\s\s\(\w\)\(.*\):\s\(.*,\)/const get\U$1\L$2 = state => $3/g
你需要转义括号。
Vim 正则表达式有一个称为“魔法”的概念。您可以使用特定序列启动正则表达式,它会改变正则表达式的解释方式。
大多数人在 PCRE 中会发现最熟悉的“非常神奇”的设置(
\v
):
:%s/\v\s\s(\w)(.*):\s(.*,)/const get\U\1\L\2 = state => \3/g
除了更正捕获引用 (
$1
-> \1
) 之外,与原始版本相比唯一的其他更改是将 \v
序列添加到模式中。