如何编写Vim search()函数正则模式以包含单引号与双引号?
解决Vim search函数E116错误及正则转义问题
错误根源分析
你遇到的E116错误核心是正则字符串的转义逻辑错误:
- 正则里的
"是HTML转义字符,Vim无法识别,要替换成实际的双引号" - 在Vim单引号包裹的字符串中,单引号必须用两个连续单引号
''转义,而非\' - 字符集
[]内的连字符-放在末尾时无需转义,\-可简化为-
修正后的命令
修正转义问题后,可正常执行的命令为:
:echo search('\l[,;&''"-]* \u\l\+','ceW')
正则模式说明
\l:匹配任意小写字母[,;&''"-]*:匹配任意数量的逗号、分号、&、单引号、双引号、连字符(单引号通过''转义,确保在单引号字符串中被Vim正确解析):匹配一个空格\u\l\+:匹配以大写字母开头、后跟一个或多个小写字母的单词
验证说明
执行修正后的命令后,若存在符合模式的行,会返回对应行号;无匹配时返回0,不会再触发E116参数错误。
内容的提问来源于stack exchange,提问作者user985675
相关产品推荐
相关产品推荐

