Vim,用`^{.*}` 查找和替换`^(.*)`

rud*_*ph9 5 vim regex

我试图查找和替换caret open_parentheses some_content close_parentheses(即^(.*))与caret open_curly_bracket the_same_content close_curly_bracket(即^{.*}但我有问题。

1)我不明白如何保留匹配的通配符内容 .*

2)我不知道如何制定转义序列来指定大括号和圆括号。

我已经浏览了这个页面很长一段时间,并尝试了以下内容

%s/^(*)/^{*} /gc
%s/^(.*)/^{.*} /gc
%s/^/(.*/)/^{.*} /gc
Run Code Online (Sandbox Code Playgroud)

flu*_*ffy 6

所有这些字符都具有特殊功能,具体取决于它们前面是否有转义字符。这依赖于字符的特殊功能的字符之前的转义序列是否利用它(即,^执行特殊的功能,一\^不,其中(没有执行特殊的功能,和一个\(做。

你要找的表达式如下

s/\^(\([^)])\))/\^\{\1\}/g
Run Code Online (Sandbox Code Playgroud)

表达字面上状态,匹配插入符后跟一个open_parenthesis接着除了一个close_parenthesis任何字符之后是close_parenthesis并用AA替换插入符后跟一个open_curly_bracket随后内容中找到搜索时any_character_except一个close_parenthesis(即之间的内容\(\))后跟close_curly_bracket

注意:也存在其他方法