天天看点

官宣:超酷的 Vim 搜索技巧

当你在 Vim 中打开一个文本想要搜索一个特定的字符时,如果此时你处于插入模式中,那么第一步你要先按下

Esc

键从编辑模式中退出。之后输入

/

+ 你要搜索的单词。

例如,如果你想要搜索的单词是

linux

,如下图显示的就是在 Vim 窗口底部的搜索命令:
官宣:超酷的 Vim 搜索技巧

回车之后,你会看到 Vim 会将光标停留之后第一个找到的包含此单词的位置。如果你刚刚打开一个文件并且立即开始了搜索操作,搜索将从文件的首行开始。

如果想要移动到下一处包含被搜索单词位置,按

n

键。当你遍历完所有被搜索模板所在之处,继续按

n

键 Vim 将重复搜索操作,光标将回到第一次搜索结果出现位置。
官宣:超酷的 Vim 搜索技巧
在遍历搜索结果时,如果你想要回到上一匹配处,按

N

(即

shift

+

n

)。同时,

值得注意的是不管在什么时候,你都可以输入

ggn

来跳转到第一个匹配处,

或者

GN

来跳转到最后一处。

如果你此时在文件的底部,想要进行逆向搜索的情况下,使用

?

代替

/

来开始搜索。下图是一个例子:
官宣:超酷的 Vim 搜索技巧
自定义你的搜索

1、 高亮搜索结果

前面我们提到可以通过n或者N进行搜索单词的跳转,但是如果文件中有多个被搜索关键词,这样显得不是很方便,如果能将搜索结果高亮显示,是不是会更好呢?例如,请看下图:

官宣:超酷的 Vim 搜索技巧

这可以通过设置

hlsearch

变量来实现,例如在普通/命令行模式中执行下述命令:

:set hlsearch

官宣:超酷的 Vim 搜索技巧

2、搜索不区分大小写

在 Vim 中进行搜索默认是区分大小写的。如果某个字符是由大小写混合而成,搜索时能忽略大小写会方便我们的操作。可以使用如下命令来使搜索变得不区分大小写:

:set ignorecase

所以当设置

ignorecase

变量后再使用前边提到的命令,搜索

linux

,那么

Linux

所在处也会被高亮。

官宣:超酷的 Vim 搜索技巧

3、智能大小写搜索

Vim 提供了一个功能,只有当要搜索的单词 / 模板包含大写字母时,编辑器才会区分大小写。要想实现这种功能,必须先设置

ignorecase

,再接着设置

smartcase

变量。

:set smartcase

例如,如果一个文件中既包含

LINUX

也包含

linux

,在开启智能大小写搜索功能时,如果使用

/LINUX

进行搜索,只有单词

LINUX

处会被搜到。反之,如果搜索

/linux

,那么不论大小写的搜索结果都会被匹配。

4、递进搜索(循环搜索)

就像百度搜索一样,随着你输入查询字串(字串随你每输入一个字符不断更新)显示不同的搜索结果,Vim 也提供了同样的递进搜索。要想使用这种特性,你只需要在搜索前执行下述命令:

:set incsearch

一些很酷的在 Vim 中搜索的小技巧

你可能会发现还有一些其他的与搜索相关的小技巧很有用。

如果你想要搜索一个文件中的一个单词,但是又懒得一个一个字符输入,你只需要将你的光标移到这个单词下然后按

*

如果你想要启动一次部分搜索(例如:同时搜索

and

in

),那你需要将光标移到到单词(在本例中, and)下,然后通过在键盘上按

g*

(按一次

g

然后不断按

*

)。

注意:如果你想要逆向搜索,按

#

g#

这里有个视频可以看一下:

在开始搜索后通过按

[I

,来实现获得所有被搜索单词或模式匹配处所在的行和行号的一个列表

如下图是一个列表结果如何在 Vim 窗口底部被分组和显示的例子:

官宣:超酷的 Vim 搜索技巧

前面提到用n/N 进行搜索时,Vim 默认是循环搜索的,就是说你搜索到文末之后继续搜索将重新从头开始搜索。如果不想这样无限循环下去,只想搜索到文末就可以结束,可以使用如下命令:

:set nowrapscan

使用如下命令 可重新打开循环搜索:

:set wrapscan

如果想要获得更多小技巧(包括如何使用鼠标来使在 Vim 中的操作变得简单),可查阅Vim 官方文档。

结语

vim的操作有很多种,大家也没必要死记硬背。在实践中经常使用自然会熟能生巧。后续还会更新其他的一些操作技巧。欢迎关注~

原文发布时间为:2018-10-17

本文作者:

程序员共成长

本文来自云栖社区合作伙伴“

”,了解相关信息可以关注“

”。

继续阅读