以下所有命令都是在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个 |
表示位置元字符 | 说明 |
---|---|
$ | 匹配行尾 |
^ | 匹配行首 |
\< | 匹配单词词首 |
\> | 匹配单词词尾 |