官宣:超酷的 Vim 搜索技巧

简介:
当你在 Vim 中打开一个文本想要搜索一个特定的字符时, 如果此时你处于插入模式中,那么第一步你要先按下 Esc 键从编辑模式中退出。之后输入 / + 你要搜索的单词。

例如,如果你想要搜索的单词是 linux,如下图显示的就是在 Vim 窗口底部的搜索命令:

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

如果想要移动到下一处包含被搜索单词位置,按 n 键。当你遍历完所有被搜索模板所在之处,继续按 n 键 Vim 将重复搜索操作,光标将回到第一次搜索结果出现位置。

ecf64eaed01281fb0de7a92cb0b21a829b4bf7f5
在遍历搜索结果时,如果你想要回到上一匹配处,按 N (即 shift + n)。同时,

值得注意的是不管在什么时候,你都可以输入 ggn 来跳转到第一个匹配处,

或者 GN 来跳转到最后一处。

如果你此时在文件的底部,想要进行逆向搜索的情况下,使用 ? 代替 / 来开始搜索。下图是一个例子:

b192528731a8a0c1cad997a07cfa42809bccc597 自定义你的搜索

1、 高亮搜索结果

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

593d847408163a8caad69540a27a901e270525df

这可以通过设置 hlsearch 变量来实现,例如在普通/命令行模式中执行下述命令:

 

:set hlsearch

97c290695df29571639b166fcd11a146a12c9064

2、搜索不区分大小写

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

 

:set ignorecase

所以当设置 ignorecase 变量后再使用前边提到的命令,搜索 linux,那么 Linux 所在处也会被高亮。


5ab9f09a5f6db027b804cf7d8f0cf5efc051991e

3、智能大小写搜索

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

 

:set ignorecase :set smartcase

例如,如果一个文件中既包含 LINUX 也包含 linux,在开启智能大小写搜索功能时,如果使用 /LINUX 进行搜索,只有单词 LINUX 处会被搜到。反之,如果搜索 /linux,那么不论大小写的搜索结果都会被匹配。

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

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

 

:set incsearch

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


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

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

如果你想要启动一次部分搜索(例如:同时搜索 andin),那你需要将光标移到到单词(在本例中, and)下,然后通过在键盘上按 g* (按一次 g 然后不断按 * )。

注意:如果你想要逆向搜索,按 # 或者 g#

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

在开始搜索后通过按 [I ,来实现获得所有被搜索单词或模式匹配处所在的行和行号的一个列表

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

859c35643d90f53ee4659aa202fc8348735aedda

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

 

:set nowrapscan

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

 

:set wrapscan

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

结语

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


原文发布时间为:2018-10-17
本文作者: 程序员共成长
本文来自云栖社区合作伙伴“ 程序员共成长”,了解相关信息可以关注“ 程序员共成长”。
相关文章
|
4月前
|
Ubuntu 开发工具
百度搜索:蓝易云【Ubuntu安装vim教程】
现在,你已经成功在Ubuntu上安装了Vim编辑器。你可以在终端中运行 `vim`命令来启动Vim,并开始编辑文本文件。
46 2
|
5月前
|
开发工具
百度搜索:蓝易云【使用vim编辑器,进行保存时报错:E382: Cannot write, ‘buftype‘ option is set详解。】
请注意,'buftype'选项的设置通常是由于某些插件或配置文件导致的。如果您在Vim的配置文件(如.vimrc)或使用的插件中设置了'buftype'选项,请检查相关配置并确保设置正确。
41 0
|
5月前
|
Linux 编译器 开发工具
百度搜索:蓝易云【【Linux】工具介绍vim及gcc详解。】
希望以上对vim和gcc的介绍能够满足你的需求。如果你有其他问题,请随时提问。
33 0
|
9月前
|
Linux 开发工具
百度搜索:蓝易云【Linux系统之vim的使用。】
作为Linux操作系统下的一个文本编辑器,vim(Vi Improved)是广泛使用的一种工具。
65 0
|
Linux 开发工具
Linux Vi或VIM的插入,定位,搜索,复制、粘贴、删除、取消和替换
Linux Vi或VIM的插入,定位,搜索,复制、粘贴、删除、取消和替换
162 0
|
开发工具
在Vim/Vi中搜索关键字
在Vim/Vi中搜索关键字
426 0
在Vim/Vi中搜索关键字
|
Linux 开发工具
【Linux】解决使用vim搜索,搜索内容在重新打开还是会处于高亮
【Linux】解决使用vim搜索,搜索内容在重新打开还是会处于高亮
217 0
【Linux】解决使用vim搜索,搜索内容在重新打开还是会处于高亮
|
21天前
|
Linux 开发工具
Linux的学习之路:5、粘滞位与vim
Linux的学习之路:5、粘滞位与vim
44 0
|
2月前
|
NoSQL Linux 编译器
Linux:vim调试工具gdb | 常见命令集
Linux:vim调试工具gdb | 常见命令集
91 0