使用vim正则表达式
来源:互联网 发布:汽车动力仿真软件 编辑:程序博客网 时间:2024/05/20 08:43
http://blog.sina.com.cn/s/blog_4be5711f0101aj1l.html
几个搜索替换的实用例子。
去掉所有的行尾空格:":%s/\s \+$//"。"%"表示在整个文件范围内进行替换,"\s"表示空白字符
(空格和制表符),"\+"对前面的字符匹配一次或多次(越多越好),"$"匹 配行尾(使用"\$"
表示单纯的"$"字符);被替换的内容为空;由于一行最多只需替换一次,不需要特殊标志。这
个还是比较简单的。
去 掉所有的空白行:":%s/\(\s*\n\)\+/\r/"。这回多了"\("、"\)"、"\n"、"\r"和"*"。"*"代表对前面
的字符(此处 为"\s")匹配零次或多次(越多越好;使用"\*"表示单纯的"*"字符),"\n"代
表换行符,"\r"代表回车符,"\("和"\)"对表达式进行 分组,使其被视作一个不可分割的整体。
因此,这个表达式的完整意义是,把连续的换行符(包含换行符前面可能有的连续空白字符)
替换成为一个单个的换行符。 唯一很特殊的地方是,在模式中使用的是"\n",而被替换的内容
中却不能使用"\n",而只能使用"\r"。原因是历史造成的,详情如果有兴趣的话可以查 看":help
NL-used-for-Nul"。
去掉所有的"//"注释:":%s!\s*//.*!!"。首先可以注意到, 这儿分隔符改用
了"!",原因是在模式或字符串部分使用了"/"字符,不换用其他分隔符的话就得在每次使用"/"字
符本身时写成"\/",上面的命令得写 成":%s/\s*\/\/.*//",可读性较低。命令本身倒是相当简单,
用过正则表达式的人估计都知道"."匹配表示除换行符之外的任何字符吧。
去 掉所有的"/* */"注释:":%s!\s*/\*\_.\{-}\*/\s*! !g"。这个略有点复杂了,用到了几个不太常
用的Vim正则表达式特性。"\_."匹配包含换行在内的所有字符;"\{-}"表示前一个字符可出现零
次或 多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好;标志"g"表示
一行里可以匹配和替换多次。替换的结果是个空格的目的是保证像 "int/* space not necessary
around comments */main()"这样的表达式在替换之后仍然是合法的。
希望上面的这些简单的例子能够引起你使用Vim的正则表达式高效完成任务的兴趣。进一步
的信息可参考":help regexp"。
- 使用vim正则表达式
- vim 使用正则表达式
- vim中使用正则表达式
- vim中使用正则表达式
- vim中使用正则表达式
- vim 使用查找替换正则表达式
- VIM的正则表达式
- vim正则表达式
- vim 正则表达式
- vim 正则表达式
- VIM正则表达式替换
- VIM 正则表达式
- vim中的正则表达式
- Vim正则表达式[转]
- vim 正则表达式
- Vim正则表达式[转]
- VIM中的正则表达式
- vim正则表达式
- CSS3盒阴影实例
- svn 回滚
- Servlet 基础
- 截断数据类型
- 开源 免费 java CMS - FreeCMS-模板标签
- 使用vim正则表达式
- 802.11ac:五步为下一代WLAN做准备
- SOA市场增长超过预期 云计算框架需求加大
- Xcode repository host is unreachable
- CAsyncSocket和CSocket
- VC++和Lua交互(VC调用Lua函数)
- android视频录制、另一部手机实时观看方案
- cocos2d中的动作回调函数介绍
- Android 全局异常处理