标签:
Vim 的搜索功能是在普通模式下输入 / 开始的, 并且 Vim 的搜索默认用正则表达式. 所以掌握正则表达式和正则表达式在 Vim 中的用法对于提升 Vim 体验极其重要. Vim 的正则表达式帮助可以从:h usr_27 或 :h regexp获得(善用帮助).
Vim 包含两个正则表达式引擎:
Vim 会自动为你选择合适的引擎, 不过, 如果遇到了问题或者想特别指定某一个引擎, 可以在模式开头处加入:
\%#=0 强制自动选择
\%#=1 强制使用旧引擎
\%#=2 强制使用 NFA 引擎
通常我们不需要关心正则表达式引擎, 甚至不用过多关注正则表达式语法, 只管在/后面输入文本搜索即可. 但下面的知识对提高效率非常有效.
| 表达式 | 含义 |
|---|---|
| a|b | 匹配 a 或 b |
| gr(a|e)y | 匹配 gray或 grey,同时()起捕获分组作用 |
| . | 匹配任一字符 |
| [abc] | 匹配任一字符: a 或 b 或 c |
| [^abc] | 匹配任一字符, 但不包括 a, b, c |
| [a-z] | 匹配从 a 到 z 之间的任一字符 |
| [a-zA-Z] | 匹配从 a 到 z, 及从 A 到 Z 之间的任一字符 |
| ^ | 匹配行首 |
| $ | 匹配行尾 |
| * | 匹配前一项内容 0 次或多次 |
| ? | 匹配前一项内容 0 次或 1 次 |
| + | 匹配前一项内容 1 次或多次 |
| {n} | 匹配前一项内容 n 次 |
| {n,} | 匹配前一项内容 n 次或多次 |
| {n,m} | 匹配前一项内容次数介于 n 和 m 之间 |
Vim 的正则表达式与主流的正则表达式基本一致, 对于熟悉 Python, .Net, Perl(额)语言的同学在用 Vim 的时候肯定会很亲切. 但是毕竟有些不同.
| 一般正则表达式 | Vim 正则表达式 | 含义 |
|---|---|---|
| \ | \\ | 分隔可选分支 |
| () | \(\) | 分组, 组成单个匹配源 |
| {} | \{} | 指定匹配次数 |
| {} | \{-n,m} | 指定匹配次数, 但是尽可能少 |
| . | . | 匹配任一字符 |
| * | \* | 匹配前一项内容 0 次或多次 |
| ? | \? | 匹配前一项内容 0 次或 1 次 |
| ? | \= | 匹配前一项内容 0 次或 1 次 |
| + | \+ | 匹配前一项内容 1 次或多次 |
记住了上面 Vim 特有的写法, 再去写搜索表达式就很简单自然了.
标签:
原文地址:http://www.cnblogs.com/ingvar/p/4372983.html