现在的位置: 首页 > 综合 > 正文

VIM查找替换归纳总结

2013年10月01日 ⁄ 综合 ⁄ 共 1633字 ⁄ 字号 评论关闭

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"

抱歉!评论已关闭.