vim查找与替换
来源:互联网 发布:linux拷贝文件夹 编辑:程序博客网 时间:2024/05/22 12:40
语法为:[addr]s/源字符串/目的字符串/[option]
替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g
最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可
上述命令会将thirtyfour替换为thirty4,将fourty替换为4ty。可以通过“\<”和“\>”指定单词的开头和结尾,命令为:
:%s/\<four\>/4/g
:%s/\<four\>/4/gc
2.2,删除多余的空格
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是
“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
2.3,匹配重复性模式
星号项 “*” 规定在它前面的项可以重复任意次。因此:
/a*
匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*”仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配“a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加“\(”,后面加 “\)”。因此这个命令:
/\(ab\)*
要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。
/ab\+
要匹配一个可选项,用 “\=”。 例如:
/folders\=
匹配 “folder” 和 “folders”。
2.4,指定重复次数
要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:
/ab\{3,5}
匹配 “abbb”,”abbbb” 以及 “abbbbb”。
当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:
模式 匹配次数
\{,4} 0,1,2,3 或 4
\{3,} 3,4,5,等等
\{0,1} 0 或 1,同 \=
\{0,} 0 或 更多,同 *
\{1,} 1 或 更多,同 \+
\{3} 3
2.5,多选一匹配
在一个查找模式中,”或” 运算符是 “\|”。例如:
/foo\|bar
这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:
/one\|two\|three
匹配 “one”,”two” 或 “three”。
如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:
/\(foo\|bar\)\+
这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。
再举个例子:
/end\(if\|while\|for\)
这个命令匹配 “endif”,”endwhile” 和 “endfor”。
2.6, 一些例子
#将That or this 换成 This or that
:%s/\(That\) or \(this\)/\u\2 or \l\1/
—-
#将句尾的child换成children
:%s/child\([ ,.;!:?]\)/children\1/g
—-
#将mgi/r/abox换成mgi/r/asquare
:g/mg\([ira]\)box/s//mg//my\1square/g <=> :g/mg[ira]box/s/box/square/g
—-
#将多个空格换成一个空格
:%s/ */ /g
—-
#使用空格替换句号或者冒号后面的一个或者多个空格
:%s/\([:.]\) */\1 /g
—-
#删除所有空行
:g/^$/d
—-
#删除所有的空白行和空行
:g/^[ ][ ]*$/d
—-
#在每行的开始插入两个空白
:%s/^/> /
—-
#在接下来的6行末尾加入.
:.,5/$/./
—-
#颠倒文件的行序
:g/.*/m0O <=> :g/^/m0O
—-
#寻找不是数字的开始行,并将其移到文件尾部
:g!/^[0-9]/m$ <=> g/^[^0-9]/m$
—-
#将文件的第12到17行内容复制10词放到当前文件的尾部
:1,10g/^/12,17t$
~~~~重复次数的作用
—-
#将chapter开始行下面的第二行的内容写道begin文件中
:g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$
- vim查找与替换
- VIM 查找与替换
- vim查找与替换
- vim 查找与替换
- vim查找与替换
- vim的查找与替换
- VIM/VI 查找与替换
- vim的查找与替换
- Vim多文件查找与替换
- vi/vim中的查找与替换
- vim 正则查找与正则替换
- Linux-Vim编辑器之查找与替换
- VIM中进行查找与替换操作
- [倚天屠龙记] vim 查找与替换(简单替换)
- [倚天屠龙记] vim 查找与替换(简单查找)
- vim查找替换小结
- vim查找替换
- vim查找替换
- NYOJ 610 定长覆盖
- 【c++】std vector的介绍
- Ubuntu12.04下载android-goldfish-2.6.29
- 一些小玩具的网站
- clEnqueueNDRangeKernel参数说明
- vim查找与替换
- 【vim】taglist的使用
- ActiveMQ学习小结
- 再谈MVC in ios
- s3c2440的USB主机控制器
- WPF(Trigger)
- shell脚本获取一个固定日期的前n天,后n天,前n个月,后n个月的语法
- fuse多线程
- 测试一下,你是什么学型?