Vim 环视和固化分组
2018-08-15 本文已影响88人
SpaceVim
vim | Perl | 意义 |
---|---|---|
\@= |
(?= |
顺序环视 |
\@! |
(?! |
顺序否定环视 |
\@<= |
(?<= |
逆序环视 |
\@<! |
(?<! |
逆序否定环视 |
\@> |
(?> |
固化分组 |
\%(atom\) |
(?: |
非捕获型括号 |
和 perl 稍有不同的是,vim 中的环视和固化分组的模式的位置与 perl 不同。 例如,查找紧跟在 foo 之后的 bar,perl 将模式写在环视的括号内, 而 vim 将模式写在环视的元字符之前。
Perl的写法
/(?<=foo)bar/
vim的写法
/\(foo\)\@<=bar
Vim 使用示例
- 顺序环视
查找后面是sql的my:/my\(sql\)\@=
- 顺序否定环视
查找后面不是sql的my:/my\(sql\)\@!
- 逆序环视
查找前面是my的sql:/\(my\)\@<=sql
- 逆序否定环视
查找前面不是my的sql:/\(my\)\@<!sql
- 固化分组
- 非捕获型括号
意思是,此分组不捕获,可以理解为不算在分组信息中
:%s/\%(my\)sql\(ok\)/\1
上面的命令会将 mysqlok
替换为 ok
,由于 my
为捕获在分组中,故组中 \1
为 ok
。
欢迎加入我们的 QQ 群,与 vimer 一起交流更多的 vim 使用技巧: 755208473