vim正则表达式环视使用
环视,或者说正向预查,反向预查
vim规定正则表达式的元字符必须用反斜杠进行转义才行
perl将模式写在环视的括号内,而vim将模式写在环视的元字符之前
# Perl的写法/(?<=foo)bar/
# vim的写法/\(foo\)\@<=bar
vim Perl 意义
\@= (?= 顺序环视
\@! (?! 顺序否定环视
\@<= (?<= 逆序环视
\@<! (?<! 逆序否定环视
\%(atom\) (?: 非捕获型括号(此分组不捕获,可以理解为不算在分组信息中)
以下为在vim底行模式示例
查找small,要求后面是cat字符串 /small\(cat\)\@=
查找small,要求后面不能是cat字符串 /small\(cat\)\@!
查找cat,要求前面是small字符串 /\(small\)\@<=cat
查找cat,要求前面不能是small字符串 /\(small\)\@<!cat
如将单词后面的空格替换为_命令如下 :%s/\(\w\)\@<= /_/gc
查找单词后面的空格和下一个字符 /\(\w\)\@<= \w
%(atom) 非捕获型括号 意思是,此分组不捕获,不会将此括号内的表达式记录 :%s/\%\(cat\)_\(lili\)/1/gc