最开始介绍vim的时候,提到vim有普通模式、插入模式、可视模式和命令行模式,并且已经对这几个模式做了详细的介绍了。除了这几个模式以外,vim还有一个非常强大的模式——查找模式,为什么最开始没有将其列举出来呢,这是因为我很少看到有教程将它与前面介绍的模式并列作为一个新的模式。但是在日常使用中,我又习惯将它叫做查找模式。我在这里就不深究这些了,请读者自行判断。

插入模式使用

我们可以在普通模式下输入 / 进入插入模式。在其后面输入想要查找的字符串,按下<CR> 进行查找。此时vim光标会自动跳转到匹配的位置,并将对应位置高亮显示( 这个是 neovim的特性,vim高亮可能需要一些配置)。使用 <Esc> 将会结束查找,退回到普通模式。

在匹配模式中,可以使用 n 来跳转到下一个匹配位置,按下N 将跳转到上一个匹配位置。这个查找是循环进行的,也就说在跳转到最后一个匹配位置之后,再使用 n 将会跳转到第一个匹配位置。



我们可以使用 wrapscan 这个选项关闭这一特性,例如在neovim 中使用如下代码

vim.o.wrapscan = false

或者在vim中使用这样的代码

set nowrapscan

在查找模式中,可以使用 <UP> (也就是方向键) 来遍历之前查找项。

取消高亮的匹配

vim 中可以使用 hlsearch 来设置将匹配项进行高亮显示( neovim 则默认支持该项) 。高亮显示匹配项这个特征在我们寻找这些匹配项的位置时十分有用,但是一旦找到想去的地方之后,这些高亮显示的内容却会干扰我们的视线,特别是匹配项过多的时候。这个时候我们可以使用 noh 来取消高亮。但是每次这么输入比较麻烦,我们可以绑定一个快捷键,快速取消高亮。这里还是等到介绍配置的时候再介绍吧。

执行前预览第一处匹配

在一般的vim中,一定要等到输入完完整的内容,然后按下 <CR> 键之后才会进行匹配,而执行前预览会在每次有新输入的时候更新匹配。类似于下面的效果。



输入 s 的时候,所有 s 字符都被选中,输入后面的内容时再次匹配,只高亮匹配上的。

vim模式并未开启这个效果,可以使用 incsearch 来激活这一效果。而neovim则默认支持这一选项。

快速选中光标所在单词进行搜索

这里主要为了介绍 *这个命令,当光标处于目标单词的时候,按下 * 将直接进行搜索。

将光标移动到匹配的结尾

默认情况下,使用匹配模式时,光标都在匹配字符串的开头位置,我们可以在搜索结尾处添加 /e 来让vim将光标移动到匹配字符串的结尾处

相信通过这篇文章各位小伙伴已经初步了解了如何进行查找,但这些内容是远远不够的,vim提供了强大的搜索处理能力,在下一篇我们将慢慢展开介绍。

vim 从嫌弃到依赖(17)——查找模式的更多相关文章

  1. 常用算法3 - 字符串查找/模式匹配算法(BF & KMP算法)

    相信我们都有在linux下查找文本内容的经历,比如当我们使用vim查找文本文件中的某个字或者某段话时,Linux很快做出反应并给出相应结果,特别方便快捷! 那么,我们有木有想过linux是如何在浩如烟 ...

  2. 『学了就忘』vim编辑器基础 — 96、末行模式中的相关命令

    目录 1.在文档中显示行号 2.是否显示文档内容相关颜色 3.是否将查找的字符串高亮显示 4.是否显示右下角的状态栏 5.是否在左下角显示如"--INSERT--"之类的状态栏 6 ...

  3. 1.3 正则表达式和Python语言-1.3.5使用 search()在一个字符串中查找模式(搜索与匹配 的对比)

    1.3.5 使用 search()在一个字符串中查找模式(搜索与匹配的对比) 其实,想要搜索的模式出现在一个字符串中间部分的概率,远大于出现在字符串起始部分的概率.这也就是 search()派上用场的 ...

  4. 17.解释器模式(Interpreter Pattern)

    17.解释器模式(Interpreter Pattern)

  5. 《Practical Vim》第五章:命令行模式

    前言 出于历史原因,命令行模式又叫 Ex 模式,它具有的功能有: 读写文件:比如 :edit, :write 等等 创建标签页或者窗口:比如 :tabnew :split 操作缓存区,比如: bnex ...

  6. 迁移到MSYS2 与 Qt 工具链注意的几个事情(g++在链接时,符号依赖项查找遵循从左至右的顺序,但qmake会自动合并造成错误。使用脚本给Mingw32-make创造出一个局部的VC编译环境)

    Microsoft Visual Studio 2015社区版提供了强大的开发体验,且 Qt 提供了预编译版本.然而,由于客户提出兼容Windows XP ~ Windows 8.1 这样宽泛的环境要 ...

  7. mac /linux vi/vim永久显示行号开启高亮模式

    临时显示:进入vi编辑器,输入命令 :set number     //下次在进入vi 无法显示行号 :set nonumber  //本次vi关闭行号显示 vi 每次修改后推荐使用命令: sourc ...

  8. Vim使用技巧(2) -- 插入模式技巧 【持续更新】

    组合快捷键 Ctrl + h //删除前一个字母(同退格键) Ctrl + w //删除前一个单词 Ctrl + u //删除到行首 Esc //切换到普通模式 Ctrl + [ //切换到普通模式 ...

  9. vim /vi中对字符串的查找并替换

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  10. JS常用的设计模式(17)—— 状态模式

    状态模式主要可以用于这种场景 1 一个对象的行为取决于它的状态 2 一个操作中含有庞大的条件分支语句 回想下街头霸王的游戏. 隆有走动,攻击,防御,跌倒,跳跃等等多种状态,而这些状态之间既有联系又互相 ...

随机推荐

  1. 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)

    使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储) ...

  2. selenium-web自动化(po模型)

    什么是po模型呢?简单理解就是:把每个页面当成一个对象,给这些页面当成一个类,主要就是完成元素定位和业务操作:把它和测试脚本区分开来,需要什么取这些页面类去调用即可.这样的好处在于页面元素发生变化时, ...

  3. C#开源免费的Blazor图表库

    前言 今天分享一款基于ApexCharts.js封装的.C#开源免费的Blazor图表库:Blazor-ApexCharts. 10款值得推荐的Blazor UI组件库 全面的ASP.NET Core ...

  4. Android Viewpager 滑动冲突解决

    这篇博客主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套ViewPa ...

  5. 浅谈 Java 中的 AutoCloseable 接口

    本文对 try-with-resources 语法进行了较为深入的剖析,验证了其为一种语法糖,同时给出了其实际的实现方式的反编译结果,相信你在看完本文后,关于 AutoCloseable 的使用你会有 ...

  6. Vue-pdf实现在线预览PDF文件

    前言 在大多数项目中都会遇到在线预览PDF文件,项目使用的是element ui,使用vue-pdf实现. 安装依赖 npm install --save vue-pdf 相关参数 参数介绍: url ...

  7. 自动化测试复习巩固第一天,requests的用法

    如何快速发送post请求 因为我用的python语言,所以大家需要在本地安装python语言和pycharm,如何安装请自行查找教程,这里不做过多赘述 这里需要提前下载安装好需要的第三方库reques ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (184)-- 算法导论13.5 1题

    一.用go语言,对于图14-1中的红黑树 T,说明执行 OS-SELECT(T.root,10)的过程. 文心一言: 在红黑树中,OS-SELECT 是一个用于在树中查找特定键值的操作.给定一个红黑树 ...

  9. 【FreeRTOS】任务调度

    启动调度器接口,主要是创建空闲任务和定时器任务以及执行特定架构的启动调度器接口 // FreeRTOS\Source\tasks.c void vTaskStartScheduler( void ) ...

  10. Laravel - 模板中的url

    <!-- 1, url --> <a href="{{url('/')}}">跳转到主页</a>   <!-- 2,action  方法  ...