读书人

vim的正则表达式(2)应用实例

发布时间: 2013-09-07 14:12:45 作者: rapoo

vim的正则表达式(二)应用实例



本文出自 http://blog.csdn.net/shuangde800

------------------------------------------------------------


本文的例子都是实践过的,如有错误,请指正
本文约定:$ + 命令 表示在普通的bash的命令行下: + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入





修改文件中路径名列表
:s/\/home\/tim/\/home\/linda/g 把/home/tim改为/home/linda上面不太好看,可以使用不同的字符作为模式分割符(可以使用除反斜杆,双引号和竖直线(\、"和|) 之外的任何非字母表、非空白字符作为分隔符)::s :/home/tim:/home/linda : g这样可读性更加强,也不容易出错


把HTML斜字体代码标签(<I><I>)放到单词hello world!的周围
:%s/hello world!/<I>&<I>/g


把所有单词help或Help都改为大写的HELP
:%s/[Hh]elp/HELP/g或者:%s/[Hh]elp/\U&/g


使用单个空格替换一个或多个空格
:%s/ */ /g

使用两个空格替换冒号或逗号后面的一个或多个空格
:%s/\([,:]\) */\1 /g先把冒号或逗号保存到缓冲区中,然后匹配冒号或逗号加上一个或多个空格的模式,再把这个模式替换成缓冲区的逗号或冒号,以及加上一个空格

删除所有空行(没有任何字符,除了一个回车符)
:g/^$/d


删除所有空行或者任何只包行空白的行
:g/^[ tab]*[ tab]*$/d
tab代表制表符


删除每行的所有的前导空格
:%s/^ *//g或者:%s/^ *\(.*\)/\1/


删除每行尾部的所有空格
:%s/ *$//

在文件中的每一行的开始插入 ->(或者其它字符)
:%s/^/->/或者:%s/^\(.*\)/->\1/单独一个^,可以看作是指向一行的最左边的光标,替换一个字符串就相当于在光标处插入字符串

在每一行的尾部加上一个句号
:%s/$/。/或者:%s/\(.*\)/\1。/
同样, 单独一个$,可以看作是指向一行的最右边的光标,替换一个字符串就相当于在光标处插入字符串


交换列表中所有连字符分隔的条目的顺序
例如一个文件的内容是:ABC : XYZhaha : heheAlice : Bob把冒号两边的字符串交换,只要下面的命令:%s/\(.*\) : \(.*\)/\2 : \1/

颠倒文件中的行序
例如,一个文件内容是123要改为:321
命令如下::g/.*/ m 0或者:g/^/ m 0





读书人网 >其他相关

热点推荐