VI编辑器有两类搜索:字符串和字符。对于一个字符串搜索,使用/和?命令。当你开始使用这个命令的时候,在最底部一行会显示你敲入的命令,在命令后面可以输入你想要搜索的特殊字符串。这两个命令仅在搜索发生的方向上有区别。在文件中,/命令向前(向下)搜索,?命令向后(向上)搜索。n和N命令分别在相同或相反的方向上重复之前的搜索命令。一些字符对于VI来说,有特殊的意义,因此在它们前面必须要放置一条斜线(\)来被当作搜索表达式的一部分。
### 特殊字符:
* `^`:行的开始(一个搜索表达式的开始)。
* `.`:匹配一个单字符。
* `*`:匹配0个或多个之前的字符。
* `$`:行的结束(一个搜索表达式的结束)。
* `[`:开始一系列匹配,或者是非匹配的表达式。例如:`/f[iae]t`匹配三者之一:fit fat fet。在这种形式下,它不会匹配这些:`/a[^bcd]`不会匹配任何字符串,除了带一个a和另外一个字母:ab ac ad。
* `<`:将之放在以反斜线结束的表达式中来寻找一个字的结束或开始。例如,`/\<the\>`只会发现the,而不是这些字:there和other。
* `>`:参考对于“<”的描述。
字符搜索在一行之内搜索来寻找在命令之后输入的一个字符。f和F命令只在当前行上搜索一个字符。f向前搜索,而F向后搜索,同时,光标会移动到所发现字符的位置。
t和T命令只在当前行上搜索一个字符,对于t来说,光标移动到字符之前的位置,而T向后搜索行到字符之后的位置。
这两套命令使用;和,命令来重复,其中;在相同方向上重复上一条字符搜索命令,而,在相反方向上重复上一条字符搜索命令。