虽然我们已经涵盖了Vim的几个功能,但编辑器的功能集是如此之大,无论你学到多少,这似乎还不够。 所以继续我们的Vim教程系列,在这个写作中,我们将讨论编辑器提供的各种搜索技术。
But before we do that, please note that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.
Vim中的基本搜索操作
如果您已在Vim编辑器中打开一个文件,并且想要搜索特定的单词或模式,则必须执行的第一步是从“插入”模式(如果该模式当前处于活动状态)。 一旦完成,键入' / '(不含引号),然后输入要搜索的单词/模式。
例如,如果您要搜索的单词是“linux”,那么以下是Vim窗口底部的显示方式:
之后,刚刚点击Enter键,您会看到Vim将光标放在第一行(包含该单词),当您处于“插入”模式时,光标所在的行开始。 如果您刚刚打开一个文件并开始搜索,则搜索操作将从文件的第一行开始。
要移动到包含搜索字词的下一行,按' n '键。 当您遍历包含搜索模式的所有行时,再次按“ n ”键将使编辑器重复搜索,您将再次返回到首次搜索的事件。
在遍历搜索到的事件时,如果要返回上一个出现,按' N '(shift + n)。 另外值得一提的是,在任何时候,你可以输入' ggn '跳到第一场比赛,或者' GN '跳到最后。
如果您位于文件的底部,并且要向后搜索,则不是使用/启动搜索,而是使用? 。 以下是一个例子:
自定义您的搜索
搜索突出显示
当搜索到的单词/图案从一个出现的地方跳到另一个时,使用“n”或“N”很容易,如果搜索到的事件突出显示,事情变得更加用户友好。 例如,请参阅下面的截图:
通过设置'hlsearch'变量,可以通过在普通/命令模式下写入以下内容来实现这一点:
:set hlsearch
2.搜索不区分大小写
默认情况下,您在Vim中进行的搜索区分大小写。 这意味着如果我正在搜索“linux”,那么“Linux”将不会匹配。 但是,如果这不是您要查找的,那么可以使用以下命令使搜索不区分大小写:
:set ignorecase
所以在使用上述命令设置'ignorecase'变量后,搜索'linux'时,还会突出显示“LINUX”的出现。
智能箱搜索
Vim还提供一个功能,只有当搜索到的单词/图案包含大写字符时,才可以要求编辑者区分大小写。 为此,您需要首先设置“ ignorecase”变量,然后设置“smartcase”变量。
:set ignorecase
:set smartcase
例如,如果一个文件同时包含'LINUX'和'linux',并且smartcase已打开,那么只有在使用'/ LINUX'搜索时才会搜索单词LINUX。 但是,如果搜索是'/ linux',那么所有出现的匹配都将被匹配,无论它们是否都是上限。
4.增量搜索
就像Google一样,当您键入查询时显示搜索结果(用您键入的每个字母更新它们),Vim还提供增量搜索。 要访问该功能,您必须先执行以下命令,然后再开始搜索:
:set incsearch
一些其他酷Vim搜索技巧/技巧
还有几个其他与搜索有关的技巧,您可能会发现有用的技巧。
要开始,如果要搜索文件中的单词,但您不想键入它,您可以将光标放在它下面,然后按* (或shift + 8 )。 如果要启动部分搜索(例如: 在'和' 中的' al' 中搜索'),则可以将光标放在单词(在我们的示例中 ),然后按g *搜索(按'g'一次,然后按*键)。
注意:如果您想向后搜索,请按#或g# 。
接下来,如果需要,您可以在一个地方获取搜索词/图案的所有出现列表以及相应的行和行号。 这可以通过类型[我在您启动搜索之后完成。 以下是Vim窗口底部结果如何分组和显示的示例:
正如您可能已经知道的那样,默认情况下,Vim搜索包装,意味着在到达文件结尾(或搜索到的单词的最后一次)之后,按“搜索下一个”将使光标再次出现在第一次。 如果需要,您可以通过运行以下命令来禁用此搜索包装:
:set nowrapscan
要重新启用包围扫描,请使用以下命令:
:set wrapscan
最后,假设你想对文件中已经存在的单词稍作改动,然后执行搜索操作,那么一种方式是键入/跟随该单词。 但是如果这个词长而复杂,则可能需要时间来键入。
一个简单的方法是将光标放在要稍微编辑的单词之下,然后按'/',然后按Ctrl-r,然后按Ctrl-w。 光标下的单词不仅会被复制,而且还会在“/”之后粘贴,以便您轻松编辑它并继续进行搜索操作。
对于更多的技巧(包括如何使用鼠标在Vim中使事情变得更简单),请转到官方Vim文档 。
结论
当然,没有人会希望你把这里提到的所有提示/技巧。 你可以做的是,从您认为对您最有利的人开始,并定期练习。 一旦它被嵌入你的记忆,成为习惯,再来这里,看看你应该学习下一个。
你还有更多的这种技巧吗? 想与HTF社区的每个人分享? 然后将其作为注释。