当前位置: 首页 > 科技观察

超酷的Vim搜索技巧

时间:2023-03-22 12:51:56 科技观察

虽然到目前为止我们已经涵盖了Vim的许多功能,但编辑器的功能集是如此庞大,以至于无论我们学到多少,似乎仍然远远不够。继续我们的Vim教程系列,在本文中我们将讨论Vim提供的各种搜索技术。但在此之前请注意,本文涉及的所有示例、命令和说明均在Ubuntu14.04和Vim7.4下测试。Vim中的基本搜索操作当你在Vim中打开一个文件并想搜索特定的单词或模板时,首先你必须按Esc键退出插入模式(如果你处于插入模式)。键入/后跟要搜索的词或搜索模式。比如你要搜索的词是linux,下图是Vim窗口底部的搜索命令:Searchforwordsinvim按回车键后,你会看到Vim会把光标停留在开头在插入模式的位置,找到的第一行包含这个词。如果您刚打开一个文件并立即开始搜索,搜索将从文件的第一行开始。如果要移动到包含搜索词的下一个位置,请按n键。当你遍历完所有搜索模板所在的地方后,继续按n键Vim会重复搜索操作,光标会回到第一个搜索结果出现的位置。移动到下一个搜索命中当遍历搜索结果时,如果你想回到上一个命中,按N(即shift+n)。此外,值得注意的是,您可以随时键入ggn跳转到第一场比赛,或键入GN跳转到最后一场比赛。当您位于文件底部并想向后搜索时,使用?而不是/开始搜索。下图是一个示例:向后搜索自定义您的搜索1.突出显示搜索结果虽然很容易从搜索到的词或模式的匹配项跳到另一个地方n或N,但如果该匹配项能够突出显示则更加人性化。例如,请看附件截图:SearchHighlightinginVIM这可以通过设置hlsearch变量来实现,比如在普通/命令行模式下执行以下命令::sethlsearchsethlsearch2,使搜索不区分大小写SearchinVim默认是区分大小写的。这意味着如果我搜索linux,Linux将不会匹配。但是,如果这不是你想要的搜索方式,你可以使用以下命令使搜索不区分大小写::setignorecase所以当我设置了ignorecase变量,然后使用上面提到的命令搜索linux,然后Linux该位置也将突出显示。searchcase-insensitive3、智能大小写搜索Vim提供了一个特性,只有当要搜索的单词/模板中包含大写字母时,编辑器才会区分大小写。要实现这个功能,首先要设置ignorecase,然后设置smartcase变量。:setignorecase:setsmartcase比如一个文件同时包含LINUX和linux,当启用智能大小写搜索功能时,如果使用/LINUX搜索,只会搜索LINUX这个词。反之,如果搜索/linux,搜索结果将不分大小写匹配。4.渐进式搜索就像谷歌一样,当你输入查询字符串时显示不同的搜索结果(每输入一个字符字符串都会更新),Vim也提供了渐进式搜索。要使用这个功能,你必须在搜索之前执行以下命令::setincsearchVim中一些很酷的搜索技巧还有一些其他的搜索相关技巧可能对你有用。我们走吧!如果您想在文件中搜索某个词,但不想键入它,只需将光标移到该词下方并按*(或shift+8)。如果要开始部分搜索(例如:同时搜索in和terminal),则需要将光标移动到单词下方(在本例中为in),然后按键盘上的g*(按一次g然后继续按*)。注意:如果要反向搜索,请按#或g#。这是您可以观看的视频:接下来,如果需要,您可以获得搜索到的单词或模式匹配的所有行和行号的列表。这可以通过在开始搜索后按[I来完成。下图是列表结果如何分组显示在Vim窗口底部的例子:groupedsearchresults***onematch),如果继续按“SearchNext”,光标会回到又是***赛。如果你想禁用环绕搜索,你可以使用下面的命令::setnowrapscan要再次打开环绕搜索,使用下面的命令::setwrapscan***,假设你想对现有的做一个小的修改文件中的单词,然后通过键入/后跟要搜索的单词来对修改后的单词执行搜索。但是,如果单词又长又复杂,则可能需要一点时间才能打出来。一个简单的方法是将光标移动到要修改的单词下方,按/然后按Ctrl+r***Ctrl+w。光标下的单词不仅会被复制,在/之后也会被复制,让你修改它并继续搜索操作。如需更多技巧(包括如何使用鼠标使Vim中的操作更轻松),请访问官方Vim文档。结论当然,没有人期望您记住这里提到的所有小技巧。你应该做的是从一种你认为对你最有益的技术开始,并不断练习。当它成为一种习惯并牢记在心时,回到这里寻找下一个您应该开始学习的技巧。你知道你想分享的任何其他技巧吗?在下面发表评论!