1
,
简单
替
换
表达式
替
换
命令可以在全文中用一个
单词
替
换
另一个
单词
:
:%s/four/4/g
"%"
范
围
前
缀
表示在所有行中
执
行替
换
。最后的
"g"
标记
表示替
换
行中的所有匹配点。
如果仅仅对当前行进行操作,那么只要去掉
%
即可
如果你有一个象
"thirtyfour"
这样
的
单词
,上面的命令会出
错
。
这种
情况下,
这
个
单词
会被替
换
成
"thirty4"
。要解决
这
个
问题
,用
"/<"
来指定匹配
单词开头
:
:%s//<four/4/g
显
然,
这样
在
处
理
"fourty"
的
时
候
还
是会出
错
。用
"/>"
来解决
这
个
问题
:
:%s//<four/>/4/g
如果你在
编码
,你可能只想替
换
注
释
中的
"four"
,而保留代
码
中的。由于
这
很
难
指定,
可以在替
换
命令中加一个
"c"
标记
,
这样
,
Vim
会在
每
次替
换
前提示你:
:%s//<four/>/4/gc
2
,删除多余的空格
要
删
除
这
些
每
行后面多余的空格,可以
执
行如下命令:
:%s//s/+$//
命令前面指明范
围
是
"%"
,所以
这
会作用于整个文件。
"substitute"
命令的匹配模式是
"/s/+$"
。
这
表示行末(
$
)前的一个或者多个(
/+
)空格(
/s
)。替
换
命令的
"to"
部分是空的:
"//"
。
这样
就会
删
除那些匹配的空白字符。
3
,匹配重复性模式
星号
项
"*"
规
定在它前面的
项
可以重
复
任意次。因此
:
/a*
匹配
"a"
,
"aa"
,
"aaa"
,等等。但也匹配
"" (
空字串
)
,因
为
零次也
包含在内。星号
"*"
仅仅应
用于那个
紧邻
在它前面的
项
。因此
"ab*"
匹配
"a"
,
"ab"
,
"abb","abbb"
,等等。如要多次重
复
整个字符串,那
么该
字符串必
须
被
组
成一个
项
。
组
成一
项
的
方法就是在它前面加
"/("
,后面加
"/)"
。因此
这
个命令
:
//(ab/)*
匹配
: "ab"
,
"abab"
,
"ababab"
,等等。而且也匹配
""
。
要避免匹配空字串,使用
"/+"
。
这
表示前面一
项
可以被匹配一次或多次。
/ab/+
匹配
"ab"
,
"abb"
,
"abbb"
,等等。它不匹配
后面没有跟随
"b"
的
"a"
。
要匹配一个可
选项
,用
"/="
。
例如
:
/folders/=
匹配
"folder"
和
"folders"
。
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
5
,多选一匹配
在一个
查
找模式中,
"
或
"
运算符是
"/|"
。例如
:
/foo/|bar
这
个命令匹配了
"foo"
或
"bar"
。更多的抉
择
可以
连
在后面
:
/one/|two/|three
匹配
"one"
,
"two"
或
"three"
。
如要匹配其多次重
复
,那
么
整个抉
择结
构
须
置于
"/("
和
"/)"
之
间
:
//(foo/|bar/)/+
这
个命令匹配
"foo"
,
"foobar"
,
"foofoo"
,
"barfoobar"
,等等。
再
举
个例子
:
/end/(if/|while/|for/)
这
个命令匹配
"endif"
,
"endwhile"
和
"endfor"
。