搜索

在“码砖”的过程中,搜索是最常用的操作之一。vim 可以在当前文件中搜索,也可以在多个文件中搜索。

基本搜索操作

要在文档中搜索一个特定的单词或模板时,在普通模式下输入 / 进入命令行模式,并紧接着输入你要搜索的单词或搜索模式(如正则表达式),最后回车搜索。

../_images/search01.png

n 键,跳到下一个匹配单词的位置。当你遍历完所有搜索结果之处,继续按 n 键 Vim 将重复搜索操作,光标将回到第一次搜索结果出现的位置。

../_images/search02.png

在遍历搜索结果时,如果想要回到上一匹配处,可以按 N 键(即 shift+n)。同时,不管在什么时候,都可以用 ggn 来跳转到第一个匹配处,或者 GN 来跳转到最后一个匹配处。

如果想要逆向搜索(即向上搜索),可以用 ? 代替 / 来进行搜索。同时可以用 nN 进行跳转。

自定义搜索

高亮显示搜索结果

虽然通过 nN 在搜索单词的匹配处跳转很简单,但是高亮显示匹配结果会更加便于阅读。可以通过设置 hlsearch 变量来实现高亮显示匹配结果,在命令行模式中执行下述命令:

:set hlsearch
../_images/search03.png

开启语法高亮后,每次搜索完成后匹配的单词会一直高亮显示,非常烦人。可以暂时关闭高亮,在下次搜索时会继续高亮显示,在 Vim 中输入以下命令:

:nohl

不区分大小写搜索

搜索默认是区分大小写的。如果想要不区分大小写搜索,可以通过设置 ignorecase 变量来实现,在命令行模式中执行下述命令:

:set ignorecase

递进搜索

就行网页搜索一样,随着你输入查询字串的变化同步更新搜索结果。要使用递进搜索,在命令行模式中执行下述命令:

:set incsearch

禁用 / 启用环形搜索

Vim 默认是启用环形搜索的,就是说在到达搜索单词的最后一处匹配时,如果继续按 n 光标会再次回到第一次匹配处。希望禁用环形搜索,可以使用如下命令:

:set nowrapscan

再次开启环形搜索,使用如下命令即可:

:set wrapscan

搜索小技巧

在 Vim 这座大山里,还有很多很有用的小技巧等着去发掘去使用。

快速搜索

在搜索一个单词时,只需要将光标移到这个单词下,然后按 * 就可以快速搜索这个单词的下一处匹配, # 快速搜索这个单词的上一处匹配。

搜索结果列表

在搜索完成后通过按 [I 可以获得所有搜索单词匹配处所在的行和行号的列表。

../_images/search04.png

如果以上的信息没有过瘾,请前往 Vim 官方文档 获得更多技巧。