呵呵,其实说是vim正则表达式查找替换(3),更主要是对之前没有介绍的vim正则表达式基础知识的补全。毕竟基础搞不清楚,就别指望以后的进阶啦~~
一.vim中常用的正则表示的元
$ 匹配一行的结束
^ 匹配一行的开始
/< 匹配一个单词的开始
/> 匹配一个单词的结束
* 匹配0 或多次
/+ 匹配1 或多次
/= 匹配0 或1 次
/a 匹配一个字符
/d 匹配任一数字
/u 匹配任一大写字母
[] 匹配范围,如t[abcd]s 匹配tas tbs tcs tds
/{} 重复次数,如a/{3 ,5 } 匹配3 ~ 5 个a
/( /) 定义重复组,如a/(xy/)b 匹配ab axyb axyxyb axyxyxyb …
/| 或,如:for /| bar 表示匹配for 或者bar
/% 20c 匹配第20 列
/% 20l 匹配第20 行
^ 匹配一行的开始
/< 匹配一个单词的开始
/> 匹配一个单词的结束
* 匹配0 或多次
/+ 匹配1 或多次
/= 匹配0 或1 次
/a 匹配一个字符
/d 匹配任一数字
/u 匹配任一大写字母
[] 匹配范围,如t[abcd]s 匹配tas tbs tcs tds
/{} 重复次数,如a/{3 ,5 } 匹配3 ~ 5 个a
/( /) 定义重复组,如a/(xy/)b 匹配ab axyb axyxyb axyxyxyb …
/| 或,如:for /| bar 表示匹配for 或者bar
/% 20c 匹配第20 列
/% 20l 匹配第20 行
二.值得注意的几个地方
(1) 有些符号要用/转义,比如/+表示重复一次或以上,其他的还有一些,:h pattern查看
(2) 非贪婪匹配用/{-}, 如.*/{-}匹配尽量短的任意字符
(3) /i匹配标识符字符[a-zA-Z0-9_],其大写形式表示不包括数字在内的标识符[a-zA-Z_],这两个不是互补的意思,类似的还有/k/f/p,但是/s匹配空白字符,/S匹配非空白字符,这两个是互补的.
好啦,基本vim的正则表达式基础知识也就这些,现在回去看之前那些表达式是不是清楚多了?
版权所有,转载请注明出处。 http://www.vimer.cn
示例:
1. 查找文件中以 item 开头的所有单词: /item/a*
文章中 itemNodes, items 都会被高亮。
2.查找文件中所有给 item 赋值的语句: /item *=
注意: item 与 * 号之间必须直接输入一个空格字符