vim命令搜索_linux的vim

vim命令搜索_linux的vim尽管目前我们已经涉及Vim的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足。承接我们的Vim教程系列,本文我们将讨论Vim提供的多种搜索技术。不过在此之前,请注意文中涉及到的所有的例子、命令、指令均是在Ubuntu14.04,Vim7.4下测试的。Vim中的基础搜索操作当你在Vim中打开一个文件并且想要搜索一个特定的单词或模板,第一步你必须要先按…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

尽管目前我们已经涉及 Vim 的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足。承接我们的 Vim 教程系列,本文我们将讨论 Vim 提供的多种搜索技术。

不过在此之前,请注意文中涉及到的所有的例子、命令、指令均是在 Ubuntu 14.04,Vim 7.4 下测试的。

Vim 中的基础搜索操作

当你在 Vim 中打开一个文件并且想要搜索一个特定的单词或模板,第一步你必须要先按下 Esc 键从插入模式中退出(如果你正处于插入模式中)。之后输入 / 并紧接着输入你要搜索的单词或搜索模式。

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

cbe766c2ed57a64a487116a7676015db.png

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

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

442260b71d755c35abf091e2ae9c34e5.png

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

当你恰好在文件的底部,而且想要逆向搜索的情况下,使用 ? 代替 / 来开始搜索。下图是一个例子:

f995f852e091c329a5306bda1a6120a9.png

自定义你的搜索

1、 高亮搜索结果

尽管通过 n 或 N 从被搜索单词或模式的匹配处跳转到另一处很简单,但是如果匹配处能够高亮就更加人性化了。例如,请看下附截图:

67b9c53dfa04c0d596d374712dfe575a.png

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

:set hlsearch

ca18088bf600ae4ab1f539655ecfceff.png

2、使搜索不区分大小写

在 Vim 中进行搜索默认是区分大小写的。这就意味着如果我要搜索 linux,那么 Linux 是不会匹配的。然而,如果这不是你想要的搜索方式,你可以使用如下命令来使搜索变得不区分大小写:

:set ignorecase

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

ad481d1ecbd97d3a91a44096c4dabc88.png

3、智能大小写搜索

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

:set ignorecase

:set smartcase

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

4、递进搜索

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

:set incsearch

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

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

开始吧!如果你想要搜索一个文件中的一个单词,但是又不想输入它,你只需要将你的光标移到这个单词下然后按 * (或者 shift + 8)。如果你想要启动一次部分搜索(例如:同时搜索 in 和 terminal),那你需要将光标移到到单词(在本例中, in)下,然后通过在键盘上按 g* (按一次 g 然后不断按 * )。

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

这里有个视频,你可以看看:

下一个,只要你想要,你可以获得所有被搜索单词或模式匹配处所在的行和行号的一个列表。这可以在你开始搜索后通过按 [I 来实现。如下图是一个列表结果如何在 Vim 窗口底部被分组和显示的例子:

da8112a3f5a58de6e70a3bce1303c5f4.png

接下来,你可能已经得知,Vim 默认是环形搜索的,意味着在到达文件结尾处(或者被搜索单词的最后一处匹配)时,如果继续按 “搜索下一个” 会将光标再次带回第一处匹配处。如果你希望禁止环形搜索,可以使用如下命令:

:set nowrapscan

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

:set wrapscan

最后,假设你想要对文件中已经存在的单词做一点小小的修改,然后对修改后的单词执行搜索操作,一种方法是输入 / 与要搜索的单词。但是如果这个单词又长又复杂,那么可能需要一点时间来输入它。

一个简单的办法是将光标移到你想要略微修改的单词下,按 / 之后再按 Ctrl + r 最后按 Ctrl + w。这个在光标下的单词不仅仅会被拷贝,也会被复制到 / 后,允许你对它进行修改并且继续进行搜索操作。

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

结语

当然,没有人希望你死记硬背这里提到的所有小技巧。你应该做的是,从一个你认为对你最有益的技巧开始不断练习。当它成为一种习惯并且嵌入你的记忆后,重新来这儿找找你应该开始学习的下一个技巧。

你知道其他像这样的技巧吗?并且希望能够和大家一起分享?那就在下边留言吧!

本文由 LCTT 原创编译,Linux中国 荣誉推出 linisi.svg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206789.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言最大公约数和最小公倍数

    C语言最大公约数和最小公倍数首先我们应该知道最大公约数和最小公倍数的基本概念最大公约数:指两个或多个整数共有约数中最大的一个最小公倍数:俩数相乘除以最大公约数一、最大公约数方法一:先令最大公约数max为1,当俩个数x、y都能被循环变量i整除时,把循环变量i赋值给最大公约数max,这样在循环结束后,就求得了最大公约数,但是这种做法过于复杂,耗时。方法二:先比较俩数的大小,然后::::;用两数中的较大数除以较…

    2022年5月17日
    39
  • Java读取txt文件和写入txt文件

    Java读取txt文件和写入txt文件原文:Java读取txt文件和写入txt文件写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂!packageedu.thu.keyword.test;importjava.io.File;importjava.io.InputStreamReader;i

    2022年7月26日
    6
  • 数据挖掘应用研究案例精选合集[通俗易懂]

    数据挖掘应用研究案例精选合集[通俗易懂]数据挖掘应用研究案例精选合集数据挖掘(英语:Datamining),掌握数据挖掘技能,金矿就在您的脚下。基于数据挖掘技术的精确智能营销随着大数据、移动应用等的快速发展,已经越来越重要,企业对这方面人才需求缺口也越来越大。本文集主要从数据挖掘应用演讲案例方向介绍了数据挖掘的实际应用,从宏观角度帮助你了解什么是数据挖掘。阅读全文和小伙伴们一起来吐槽

    2022年6月16日
    28
  • Java全局变量(成员变量)和局部变量的区别

    Java全局变量(成员变量)和局部变量的区别前言:学习变量之前若对static修饰符不理解,理解可能比较吃力。一、下面先大致介绍java中static关键字的作用1:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。2:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。3:简单来说就是被static修饰后的值可以直接类名.值进行引用,而无需new一个对象进行调用4.static特点static翻译为“静态”所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用“

    2022年8月21日
    5
  • oracle触发器实例

    oracle触发器实例最近有一个需求,一个数据库的表在插入和删除的时候另外一个数据库中的表也做相应的操作。我的想法是1.首先两个数据库可以连接,通过dblink可以解决。2.建立插入和删除才能触发的触发器。直接上代码createorreplacetriggersynch_useridafterinsertordeleteoneosoperatorFOREACHROW–每一行触发一次…

    2022年7月27日
    7
  • 皮肤(永久)激活码(没用过的激活码2020)

    DataGrip1.下载jar包JetbrainsCrack-3.1-release-enc.jar2.到软件安装的bin目录,把这个jar包粘贴进去image.png3.编辑文件中参数datagrip.exe.vmoptions+datagrip64.exe.v…

    2022年4月14日
    350

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号