2020年3月1日 星期日

vi搜索模式

另一种在编辑缓冲区来回移动的方法就是跳转到包含某一特定模式的行上,这时需要使用/(斜线)和(问号)命令。

一旦按下了/键,vi就会在命令行上(屏幕的底部)显示一个/字符。然后就可以键入希望的模式并按<Return>键。这将告诉vi搜索该模式的下一匹配。如果希望再次搜索同一个模式,可以再次键入/并按<Return>键。
下面举例说明。您正在编辑一个人员列表,要给他们发钱,您想查找模式 “Harley”的下一个匹配项。可以键入:

/ Harley
现在按下 <Return>键,光标将跳转到接下来包含该模式的行上。为了重复搜索该模式并再次跳转,可以只键入/本身,然后按<Return>键:

/

因为没有指定新模式,所以vi假定和上一次的/命令使用相同的模式。
默认情况下,vi的搜索区分大小写。因此,下述两条命令是不相同的:

/ Harley
/ harley
vi查找模式时,它光标位置开始向前搜索。如果光标到达编辑缓冲区的末尾,vi就会转过头来从头开始搜索。通过这种方式,vi可以搜索整个编辑缓冲区,不管启始位置位于何处。

为了向后搜索,可以使用?命令。例如:
?Harley 
这与/的作用相同,只是vi向后搜索。一旦使用?指定了一种模式,就可以再次使用?本身向后搜索同一个模式:


如果vi到大编辑缓冲区的开头,vi将返回到文件的末尾并继续向后搜索。通过这种方式,vi可以向后搜索整个编辑缓冲区。

一旦使用/或?指定了模式,就可以用两种便捷的方式继续以原有模式进行搜索。n(next,下一个)命令采取和原始命令相同的方向进行搜索。N(大写字母“N”)命令以相反的方向进行搜索。例如,假设您之前输入了下述命令:

/ Harley
现在希望查找同一模式的下一次出现,那么需要做的就是按n键(不用按<Return>键)。其作用与前面输入的不带模式的/<Return>键一样。要重复对同一模式进行搜索,可以重复地按n键。如果按N键,vi将进行反向搜索。和其它搜索命令相同,在需要时,nN都会在编辑缓冲区的末尾(或开头)跳转。

nN的准确含义取决于原始的搜索方向。例如,假设您输入一个向后搜索的命令:

?Harley

那么按n键将向后搜索(相同方向),按N键将向前搜索(相反方向)。
提示:
尽管/和?搜索命令是为vi开发的,但是其它程序也使用它们。例如,在用less程序显示文件时,就可以使用完全相同的命令。

沒有留言:

張貼留言