我现在正在用vim艰难地编写一些与learn c相关的代码,并且我对替换函数有一个问题:
我对谷歌和vim教程以及其他stackoverflow问题进行了一些研究。
但我没能找到/理解我的问题的答案。
为了做到这一点,我想用指针表示法替换数组。
:%s/name[0]/*(name)/g
此命令将更正以下错误:E486:找不到模式:name[0]。
如果我在没有[0]的情况下执行相同的命令,它可以正常工作,但这不是我想要做的
:%s/name/*(name)/g
我如何在考虑到那些方形braquet[]的情况下进行搜索/替换
提前感谢您的帮助
您需要用转义方括号,因此这将起作用:
s/name[0]/new_name(0)/
原因是,在大多数正则表达式引擎中,[]
用于对多个字符进行分组(请参见:h /character-classes
),因此[abc]
将匹配a、b或c。
请注意,您可以使用M
来告诉vim使用nomagic
(用法:s/Mname[0]/new_name/
)。
参见:h magic
您需要使用一些转义序列,如name[0]
。表示
[
或]
被用作输入文字,不携带/表示任何特殊功能[类似分组]。
方括号在正则表达式中很特殊:它们表示字符类。因此,您的正则表达式尝试匹配name0
(因为类中只有一个字符)。
要匹配文字括号,请使用反斜杠转义:
name[0]