vim查找替换

以下所有命令都是在vim的命令模式下输入(按Esc进入命令模式)。

查找

输入/,后面跟要查找的字符串,支持正则表达式,特殊字符要转义。

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找(默认,可配置)。例如:/foo\c匹配foo,FOO,Foo等。
按下*可查找光标所在单词(word)。例如当前为foo,可以匹配foo bar中的foo,但不可匹配foobar中的foo。
按下g*即可查找光标所在单词的字符序列。 例如当前为foo,即foo bar和foobar中的foo均可被匹配到。

查找所匹配的字符串会高亮显示:
n光标跳到下一个匹配的字符串,N上一个匹配的字符串。
取消高亮用:nohl

替换

:{作用范围}s/{目标}/{替换}/{替换标志} #{作用范围}{替换标志}可选,{目标}支持正则表达式,{替换}支持正则分组。

先举例:

:s/from/to/                     #替换当前行第一个"from"为"to"
:s/from/to/g                   #替换当前行所有的"from"为"to"
:%s/from/to/g                #替换所有行所有的"from"为"to"
:10s/from/to/gi               #替换第10行中所有的"from"或"From"或"FROM"等(大小写不敏感)为"to"
:1,10s/from/to/g            #替换第1到第10行中所有的"from"为"to"(包含第1,第10行)
:.,$s/from/to/g                #替换当前行到最后一行
:.-2,.s/from/to/g              #替换当前行往前2行一直到当前行,共3行。(用+和-表示相对行号)

作用范围:

举例 含义
. 光标所在行(默认)
$ 最后一行
33 第33行
22,33 第22~33行(含22和33行)
.+1 光标所在行的下一行
.,$-2 光标所在行到倒数第三行
.,$ 当前行到最后一行
% 所有行(与1,$等价)

替换标志:

举例 含义
对指定范围内的第一个匹配项进行替换
g 对指定范围内的所有匹配项进行替换
i 大小写不敏感(I表示敏感)
c 在替换前请求用户确认
e 忽略执行过程中的错误

替换内容:
在正则式中以\(\)括起来的正则表达式匹配的内容为分组,在后面使用的时候可以用\1\2等变量来访问分组。

例子:

:%s/\s+$//g                                          #删除行尾空格
:%s/^\s*// 或者 %s/^ *//                       #删除行首多余空格
:%s/^$// 或者 g/^$/d                            #删除沒有內容的空行
:%s/^\s*$// 或者 g/^\s*$/d                    #删除包含有空格组成的空行
:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d              #删除以空格或TAB开头到结尾的空行
#把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法 
:%s/abc\(.*\)xyz/xyz\1abc/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g  

特殊字符(需要转义):

元字符 说明
\* 匹配* 字符
\. 匹配. 字符
\/ 匹配 / 字符
\ 匹配 \ 字符
\[ 匹配 [ 字符
\] 匹配 ] 字符
$ | 匹配$ 字符
\^ 匹配 ^字符

正则匹配元字符:

元字符 说明
. 匹配任意字符
[abc] 匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字
[^abc] 匹配除方括号中字符之外的任意字符
\d 匹配阿拉伯数字,等同于[0-9]
\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x 匹配十六进制数字,等同于[0-9A-Fa-f]
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\l 匹配[a-z]
\L 匹配[^a-z]
\u 匹配[A-Z]
\U 匹配[^A-Z]
\w 匹配单词字母,等同于[0-9A-Za-z_]
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t 匹配TAB字符
\s 匹配空白字符,等同于[ \t]
\S 匹配非空白字符,等同于[^ \t]
表示数量元字符 说明
* 匹配0-任意个
\+ 匹配1-任意个
\? 匹配0-1个
\{n,m} 匹配n-m个
\{n} 匹配n个
\{n,} 匹配大于等于n个
\{,m} 匹配0-m个
表示位置元字符 说明
$ 匹配行尾
^ 匹配行首
\< 匹配单词词首
\> 匹配单词词尾

猜你喜欢

转载自blog.csdn.net/xuejianbest/article/details/80409685