我现在用vim制作一些与学习ct相关的代码,而且我对替换函数有一个问题:
我已经对Google和vim教程以及其他stackoverflow问题进行了一些研究。
但我没有设法找到/理解我的问题的答案。
为了做到这一点,我想替换指针表示法的数组。
:%s/name[0]/*(name)/g
此命令会发出以下错误: E486:找不到模式:名称[0] 。
如果我在没有[0]的情况下执行相同的命令,它可以正常工作,但它不是我想做的事情
:%s/name/*(name)/g
我如何进行搜索/替换考虑那些方形的braquet []
提前感谢您的帮助
答案 0 :(得分:4)
您需要使用\
转义方括号,这样才能正常工作:s/name\[0\]/new_name(0)/
原因在于,在大多数正则表达式引擎中,[]
用于对多个字符进行分组(请参阅:h /character-classes
),因此[abc]
将匹配a,b或c。
请注意,您可以使用\M
告诉vim使用nomagic
(用法:s/\Mname[0]/new_name/
)。
请参阅:h magic
答案 1 :(得分:2)
您需要使用某些转义序列,例如name\[0\]
。 \
表示[
或]
被用作输入文字,而不是承载/表示任何特殊功能[如分组]。
答案 2 :(得分:2)