搜索和替换
1 行内搜索
f命令可以进行行内搜索。输入fx可以找到下一个x字符
F命令可以反方向搜索
2 全文搜索
1) /和?命令可以分别进行全文范围的正向和反向搜索
2) n继续上一次搜索,3n会找到第三个符合的字符串,N反向
3) 对大小写的匹配
在命令行输入“:set ignorecase”可以忽略大小写,“:set noignorecase”匹配大小写。默认为匹配大小写,可以在.vimrc中修改
4) 查找当前词。输入/currentword,或者直接按“*”查找下一个currentword,“#”查找上一个
5) 特殊字符。 在搜索命令中,.*[]^%/?~$ 这10个字符有特殊意义,在使用这些字符的时候要加上反斜杠。而\e表示<esc>
;\t表示<tab>
;\r表示<cr>
;\b表示<bs>
。
6) 匹配换行或空格。 匹配换行或空格。使用\n可以表示一个换行;而\s表示匹配空白,注意是空白不是空格。\_s
表示匹配换行或者空格;\_a
表示匹配换行或者一个字母。比如:/the\nword查找以the结束并且下一行以word开始的行的位置。/the_sword查找the和word之间以空白或者换行分割的位置。/the_s+word表示the和word之间可以有多个空白。
7) 限定词首或者词尾。\<
可以限定找到是以指定字符串开始的单词。比如/\<the
可以找到以the开始在字符串,但是会忽略在单词中间包含the的字符串。而\>
则是限定必须是以指定字符串结尾的单词。
8) 行首和行尾。输入/^string查找以string开始的行,并且光标停留在这个string的第一个字符。输入/string$则查找以string结束的行,并将光标停留在这个string的第一个字符。
9) 匹配任何一个字符。句号.可以匹配任何一个字符。例如/t.e可以找到the或者tae或者tue。
3 复杂的匹配模式
1) 可重复的字符
A 使用*
表示它前面的字符可以重复多次或者0次。比如/be*
可以匹配b,be,bee,beee等等。但是这也会包含b,因为e重复0后是空。如果要匹配诸如be,bebe,bebebe的字符串可以使用\(
和\)
把他们包括起来,形如:/\(be\)*
。
B 使用\+
来限定为重复至少一次到无数次。如:/be\+
可以匹配be,bee,bee等等。
C 重复0次或者一次。\=
可以指定重复0次或者一次。/strings\=
表示匹配string或者strings。这在查找单词的复数形式特别有用.
D 指定重复的次数。\{n,m}
可以指定重复n到m次。比如:/be\{2,4}
将会匹配bee,beee,beeee。同样可以使用\{,4}
表示匹配0到4次;\{4,}
表示4次到无数次;\{4}
表示重复4次。
2) 匹配列表中的一个。使用一个以\|
(反斜杠加竖杠)分割的列表,可以表示匹配列表中任何一项。比如/one\|two
表示查找one或者two;/one\|two\|three
表示查找one或者two或者three。
3) 特殊的字符集合。使用\d
也可以表示0到9的数字,这个选项可以代替[0-9]
。\D
表示非数字代替[^0-9]
;\x表示十六进制数代替[0-9a-fA-F]
;\X
表示非十六进制数代替[^0-9a-fA-F]
;\s
表示空白字符代替[ ] (<Tab>
和<Space>
);\S
表示非空白字符代替[^ ]
(除<Tab>
和<Space>
之外);\l
表示小写字母代替[a-z]
;\L
表示非小写字母代替[^a-z]
;\u
表示大写字母代替[A-Z]
;\U
表示非大写字母代替[^A-Z]