VIM学习笔记 正则表达式-(vimgrep/grep)

news2024/11/27 1:22:47

在UNIX问世的前一年,1969年,Ken Thompson将正则表达式整合入QED文本编辑器。在Linux文本编辑器ed中,如果你希望显示包含字母“re”的行时,需要使用命令g/re/p,而grep也因此得名。可以看作此操作的缩写:g (globally), / (search), re (regular expression), / (delimit search), p (print)。

Vim提供以下两种grep(globally search a regular expression and print)搜索工具:

  • :vimgrep 使用Vim内置的grep实现;
  • :grep 调用外部的grep工具。

:grep命令会运行由选项grepprg所指定的程序。在Linux系统上,grepprg默认是grep -n:

在Windows系统上,grepprg默认是findstr /n

:vimgrep命令使用vim内置的搜索引擎,与/命令功能一致,但速度相对较慢。

由此可见,使用:vimgrep命令在不同平台上将获得一致的体验。而:grep命令则是与操作系统相关的,在不同平台会有不同的行为。

:grep:vimgrep命令,都将在QuickFix中显示搜索结果。

:lgrep:lvimgrep命令实现相同的功能,但使用地址列表(Location List)来显示匹配结果。

使用:copen命令打开的Quickfix,是全局性的。而使用:lopen打开的Location List,则是独立存在于各个窗口中的。

对于Quickfix,使用:cp命令,跳转到上一个匹配处;使用:cn命令,跳转到下一个匹配处。

对于Location List,使用:lpre命令,跳转到上一个匹配处;使用:lnext命令,跳转到下一个匹配处。

:vimgrep

使用以下命令,可以在当前目录下查找指定字符串:

:vimgrep grep *

如果希望在当前目录及其子目录中进行查找,那么可以使用**通配符:

:vimgrep blue **

以下命令将在当前目录及其子目录中的所有HTML文件中,查找指定字符串:

:vim blue **/*.html

请注意,:vimgrep命令可以缩写为:vim

首先在常规模式下,使用*命令查找光标下的单词;然后使用以下命令,可以重用之前的查找:

:vim // *.html

默认情况下,将自动跳转至第一个匹配处;如果希望停留在当前位置,那么可以在命令中使用j参选:

:vimgrep /foo/j **/*.md

使用以下命令,可以查看更多帮助信息:

:help :vimgrep

:grep

使用以下命令,将在当前目录下查找所有文件:

:grep block *.*

默认情况下,grep是区分大小写的,可以使用-i选项来忽略大小写:

:grep -i word filename

使用-o选项,将只显示匹配的字符,而不是整行内容:

:grep -o [[:punct:]] filename

使用以下命令,可以查看更多帮助信息:

:help :grep

请注意,递归搜索子目录的 **/*.* 通配符,对于Linux下的:vimgrep和:grep命令有效;但对于Windows下的:grep命令不起作用。

'grepprg'选项

使用以下命令,可以查看'grepprg'选项的当前设置:

:set grepprg?

在不同的操作系统下,Vim将默认使用不同的外部grep工具:

  • 在Windows下
    grepprg=findstr /n
  • 在Linux下
    grepprg=grep -n $* /dev/null

如果希望默认查询当前目录以及其子目录,那么可以使用以下设置:

  • 在Windows下
    set grepprg=findstr /S /n
  • 在Linux下
    set grepprg=grep -nR $* /dev/null

请注意,您可以使用:pwd命令来查看当前目录。

如果您在Windows中已经安装了Git或Cygwin,那么只需要在环境变量PATH中增加相应目录,即可调用其自带的grep命令:

  • C:\Program Files\Git\usr\bin
  • D:\cygwin64\bin

在Windows命令行中,可以使用以下命令进行验证:

$ grep --version

然后在vimrc配置文件中,使用以下设置:

set grepprg=grep\ -rnIH\ --exclude-dir=.git

通过以上设置,可以在Windows环境中使用Linux风格的grep程序。

帮助信息

使用以下命令,可以查看更多帮助信息:

:help 'grepprg'
:help pattern

关于正则表达式的更多信息,可以参考以下网站:

  • Vim Regular Expressions 101
  • Regular-Expressions.info

使用以下网站,可以视觉化正则表达式,以便分步理解复杂的表达式:

  • REGEXPER

  • Regular Expressions 101

VIM学习笔记 正则表达式-(vimgrep/grep) - 知乎 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM板上的蓝牙对讲功能

1)ARMRTL8723 或RTL8821 RTL8723是USB接口的邮票芯片,集成了wifi和BT。前面已经完成了wifi的处理,这次主要说一下蓝牙语音方面。 蓝牙功能,我们主要是使用Bluez5协议栈.结合alsa使用(pulseaudio也是可以的&#xff0c…

JVM学习(四)

1. JAVA IO/NIO 1.1. 阻塞 IO 模型 最传统的一种 IO 模型,即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后,内 核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态&#xff0c…

Class 02 - R语言Rstudio的安装

Class 02 - R语言&Rstudio的安装 下载和安装R安装前准备下载R语言安装R语言开始使用R语言 下载和安装RStudio安装前准备下载RStudio安装RStudio开始使用RStudio如何编写代码 下载和安装R 在这个部分中,你将完成在计算机上下载和安装R语言程序。当安装完成后&am…

嫌视频背景杂乱或单调?如何去除视频杂乱背景

录制视频时,有时候视频背景会十分杂乱或单调,这会对用户的视觉体验和注意力产生负面影响。 背景杂乱或单调的场景可能会影响您的观感。这种情况通常发生在自然光线不足或拍摄环境不理想的情况下。如果您想改变视频的背景或者是去除视频杂乱的背景&#…

硬件I2C读写MPU6050代码

1、接线图 SDA接在B11,SCL接在B10 ,软件IIC的两个引脚可以任意更改的,因为都是开漏输出,硬件接在哪个引脚上,程序中就对应操作哪个引脚 但是硬件IIC,通信引脚是不可以任意指定的,查表,由于PB6、…

2023年Android开发者路线-第4部分

2023年Android开发者路线-第1部分 2023年Android开发者路线-第2部分 2023年Android开发者路线-第3部分 2023年Android开发者路线-第4部分 2023年Android开发者路线-第4部分 在上一篇博文中,我们讨论了现代 Android 开发的基本要素,包括 Fragments、…

2023年Android开发者路线-第3部分

2023年Android开发者路线-第1部分 2023年Android开发者路线-第2部分 2023年Android开发者路线-第3部分 2023年Android开发者路线-第4部分 2023年Android开发者路线-第3部分 在上一篇文章中,我们讨论了 Android 主要组件的重要元素,包括 Intents 和 …

【C++初阶】类与对象(中)之你必须掌握的三个重要默认成员函数 --- 构造函数 +析构函数 + 拷贝构造函数

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

chatgptH5源码开发

hatGPTH5源码开发需要以下步骤: 确定需求:在开发ChatGPTH5应用之前,需要明确用户的需求和目标,以便进行合理的设计和开发。 技术选型:选择适合的前端技术框架和工具,如React、Vue、Angular等&#…

Flink从入门到精通之-10容错机制

Flink从入门到精通之-10容错机制 流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因…

WritingGPT: 基于ChatGPT和AutoGPT打造个人写作团队

本文介绍了如何通过定义多个GPT角色,以自动化流水线的方式打造个人写作团队,让AI帮助我们完成文章写作、修改、SEO等所有流程。原文: How I Built WritingGPT, a Fully Automated AI Writing Team ChatGPT是AI内容创造领域的巨大飞跃,但当我们…

8 种「Python 程序」定时执行方式

在日常工作中,我们常常会用到需要周期性执行的任务,一种方式是采用 Linux 系统自带的 crond 结合命令行实现,另外一种方式是直接使用Python。 最近我整理了一下 Python 定时任务的实现方式,建议收藏后学习。 利用while True: sle…

pro如何添加定时任务

Pro v2.4版本开始后台可以开关控制定时任务,那如何添加新的定时任务呢? 第一步:设置定时任务名称及标识; 文件app\controller\admin\v1\system\SystemTimer中task_name()方法 /**定时任务名称及标识 * return mixed */ public fu…

25岁,本科学历,待业,如何成为优秀的数据分析师,值得关注!

25岁,本科学历,待业,如何成为优秀的数据分析师,值得关注! 你是在工作几年后确定自己的职业方向的呢?还是一直都是处于迷茫,随波逐流的状态?都说谁的青春不迷茫,但时间是最…

服务限流方案总结

流控作用 一般的做后台服务的,都会接触到流控,一般的场景就是在流量异常,比如遭受攻击的时候,保障服务不过载,在可支持的范围内提供稳定的服务。比如我们的服务支持100QPS,当一下子来了1000个请求的时候&a…

全景 I 0基础学习VR全景制作,平台篇第22篇 热点功能—作品功能操作

本期为大家带来蛙色VR平台,热点功能—作品功能操作。 功能位置示意 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生更多的交互,增加用户的多元化体验。 作品热点,即全景项目跳转热点,可与…

您使用的ChatGPT错了!以下是如何领先于 99% 的 ChatGPT 用户

我们大多数人都错误地使用了 ChatGPT: 错误1:不在提示中包含示例。 错误2:忽略通过角色控制 ChatGPT 的行为。 错误3:让 ChatGPT 猜测内容,而不是向它提供一些信息。 通过3类有用的prompt工程掌握 ChatGPT的使用。 …

leetcode 1259. 不相交的握手

1259. 不相交的握手 提示 困难 33 company 字节跳动 company 苹果 Apple company 亚马逊 偶数 个人站成一个圆,总人数为 num_people 。每个人与除自己外的一个人握手,所以总共会有 num_people / 2 次握手。 将握手的人之间连线,请你返回连线…

十二、Feign客户端整合Hystrix服务保护

目录 1、项目pom文件中引入feign客户端依赖 2、编写feign客户端接口,并配置fallback回调方法的类 3、编写controller,使用feign客户端进行RPC远程过程调用 4、实现feign客户端接口方法,并实现feign客户端接口中的每个接口方法作为fallbac…

十一、Hystrix服务保护

目录 服务雪崩相关概念简述 服务的雪崩效应 造成服务雪崩的原因 服务雪崩最终的结果 防止服务雪崩的方法 一、服务降级 1、引入Hystrix 服务保护依赖 2、基于注解HystrixCommand使用Hystrix 2.1、在需要进行服务保护的方法上添加注解HystrixCommand,并指定…