vim中断零宽断言-正则环视
vim与perl的零宽断言表达式相比,(?换成了\@,并且这个符号应该跟在匹配模式的后边。
\@= (?= 顺序环视
eg:查找后面是sql的my: /my\(sql\)\@=
\@! (?! 顺序否定环视
eg:查找后面不是sql的my: /my\(sql\)\@!
\@<= (?<= 逆序环视
eg: 查找前面是my的sql: /\(my\)\@<=sql
\@<! (?<! 逆序否定环视
eg:查找前面不是my的sql: /\(my\)\@<!sql
\@> (?> 固化分组
\%(atom) (?: 非捕获型括号
意思是,此分组不捕获,可以理解为不算在分组信息中,eg:
:%s/\%(my\)sql\(ok\)/\1
上面的命令会将mysqlok替换为 ok ,由于my为捕获在分组中,故组中\1 为ok。