用VIM正则表达式进行批量替换的小练习

GVIM正则表达式—实例应用(替换、分组) 文章目录一、元字符介绍二、实例应用2.1.替换与删除2.2.替换变量—分组应用2.3.函数式应用三、sed用法 GVIM正则表达式常在底行模式下运用,一般用于对同一类的代码进行替换,用时也可以实现删除等操作。 典型的替换命令格式“:%s/正则表达式/要替换的字符串/选项” 一、元字符介绍 普通字符 含义 . 匹配任意字符 [abc] 匹配方括号中的任意字符 [^abc] 匹... 阅读详情

上次我们用宏操作的方式在VIM中由一行代码批量生成了一系列相似的代码,原文在这里

这次我们用正则表达式的方式实现批量替换

把上次的小练习先贴出来

在GVIM下,将下面这张图的内容

改成下面这样

并且指出,要用批量操作的方式,不能一行一行的键入

在给出实现方法之前,先给出VIM中各种符号的意义

普通字符含义
.匹配任意一个字符
[abc]匹配方括号中的任意一个字符,可以使用 - 表示范围比如[a-z0-9]匹配小写字母和数字
[^abc]匹配除方括号中字符以外的字符
\d匹配阿拉伯数字,等同于[0~9]
\D匹配阿拉伯数字之外的任意字符,等同于[^0~9]
\x匹配十六进制数字,等同于[0-9A-Fa-f]
\X匹配十六进制数字之外的任意字符,等同于[ ^0-9A-Fa-f]
\w匹配单词字母
\W匹配单词字母之外的任意字符
\t匹配Tab字符
\s匹配空白符,等同于[\t]
\S匹配非空白符,等同于[ ^\t]

特殊字符含义
\ *匹配 * 字符
\ .匹配 . 字符
\ /匹配 / 字符
\ \匹配 \ 字符
\ [匹配 [ 字符

表示数量的元字符含义
*匹配0~任意个
\ +匹配1~任意个
\ ?匹配0~1个
\ {n,m}匹配n ~ m个
\ {n}匹配 n 个
\ {n,}匹配 n ~ 任意个
\ {,m}匹配 0 ~ m 个

表示位置元字符含义
$匹配行尾
^匹配行首
\ <匹配单词词首
\ >匹配单词词尾

现在回到那个小练习,由于我们主要用正则来进行替换,因此我们先将第一行内容进行复制粘贴

在普通模式下
gg	//回到首行
yy	//复制首行内容
19p	//粘贴19次

之后变成这样了

再进行替换之前,介绍下VIM替换的方式

替换的格式为

:s/a/b/g   //将a替换成b
			//s是substitute,g是global

我们先gg回到首行,然后看看加上g和不加g的区别

命令行执行如下内容

:s/1/aa/

可以看到,只有第一行的第一个1变成了aa

再执行如下内容

u	//undo,撤销上一步操作
:s/1/aa/g

可以看到此时首行所有的1都被替换成了aa

虽然加上g将首行的1全部替换成了aa,但也只有首行被替换了,如果多行都需要替换,我们不可能在每一行都执行这个操作,因此引入了%

我们执行下面的内容看看是什么结果

u	//撤销上一步操作
:%s/1/aa/

可以看到此时每行的第一个1都被替换成了aa

如果我们只想替换其中几行的内容,可以将%换成范围

:5,8s/1/aa/

此时只有5-8行的1被替换了

由于我们这个小练习被替换成的内容不是固定的,因此需要再介绍一个函数

\=line(".")

这个函数是获取行号的意思,并且可以进行加减乘,如果想在当前行上加n,只需要

\=ling(".")+n

先试一下,将首行的2改成行号×10

:s/2/\=line(".") * 10/

首行的2成功被替换成了10

准备工作结束,下面直接直接给出批量更改的正则表达式

:%s/\d/\=line(".")/

:%s/\d$/\=line(".") + 1/

执行第一个指令的结果

随后执行第二个指令的结果

大功告成

最后再讲一下这两个指令的含义吧

首先是第一个指令

:%s/\d/\=line(".")/

%s:所有行进行替换
\d:第一个数字
\=line("."):获取行号

第二个指令

:%s/\d$/\=line(".") + 1/

%s:所有行进行替换
\d$:最后一个数字,$是位置元字符,表示行位
\=line(".") + 1:获取行号并 + 1
ST7789P3初始化配置 【代码】ST7789P3初始化配置。 阅读详情

相关推荐

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5344

GVIM中的变量替换

GVIM中的变量替换

Andy_ICer的博客 3226

深入解析达梦数据库核心技术:检查点、redo、undo、MVCC与内存缓存刷盘

MVCC 依赖 undo 日志:通过 undo 日志构建版本链,实现 “读不加锁”;刷盘依赖检查点:检查点批量清理脏页,redo 日志通过检查点释放空间;日志保障刷盘安全:redo 日志先行写入,确保未刷盘脏页可恢复;刷盘优化 MVCC 性能:优先刷冷区脏页,减少对高频访问数据的影响。例如,一个完整的 “查询 - 修改 - 提交 - 恢复” 流程中:查询时,MVCC 通过 undo 日志获取可见版本,无需等待锁;修改时,redo/undo 日志先记录,缓冲池生成脏页;

tangyuan12345678的博客 1415

gvim批量替换

GVIM的基础操作在站内可以随便搜索到,本帖会不断更新gvim的一些进阶操作。在行选中以后,在命令行中输入。如题,GVIM批量替换。

落雨无风的博客 3069

从部署到养成:Hermes智能体接入DeepSeek与微信机器人的完整实战指南

智能体(Agent)正成为大模型从“对话”走向“行动”的关键形态。它通过拆解指令、调用工具、执行任务,让AI真正参与工作流。Hermes作为可本地部署的开源智能体框架,支持接入DeepSeek等主流大模型,并提供网关、工具调用、记忆管理等模块化能力。从Docker容器部署到微信机器人桥接,从自动化定时任务到Computer Use桌面控制,Hermes将个人助理从概念落地为可运行的工程系统。本文基于真实实践,梳理架构原理、部署流程、API配置与高频故障排查,为技术玩家提供一套从零到一的上手指南。

weixin_29045001的博客 264

卡尔曼滤波调参避坑指南:Q/R参数怎么设?实测5种传感器场景

本文针对卡尔曼滤波在工程实践中Q/R参数设置的难题,提供了一套实用的调参避坑指南。通过分析过程噪声方差Q与测量噪声方差R的物理意义与博弈关系,并结合温度传感器、陀螺仪、超声波测距等五种典型传感器场景的实测效果对比,总结出从噪声估算、离线仿真到收敛测试的系统性调参方法论,帮助工程师快速实现稳定有效的滤波效果。

weixin_29174141的博客 808

正则表达式做批量替换思考与学习

  一直在做一些很基础脑残的手工性工作,例如:将一大批的网址整理成json的格式,或者将很多的word文档中表格数据整理成为json数据,或者python中的dict类型,以前只是傻乎乎的粘贴复制,有时候也就是将已存在的字符批量替换一下,最近对正则表达式有了简单的学习,感觉可以用正则表达式进行必要的替换。 一、整理word文档中错误码提示   总共260多个,先复制到编辑器(以pycharm为...

weixin_34245082的博客 290

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(模型转换)

本文详细介绍了将YOLOv26 ONNX模型转换为RKNN模型的过程,适用于RK3588平台。主要内容包括:1)量化数据集的创建,通过随机抽取最多400张JPG图片生成校准数据集;2)ONNX转RKNN的完整脚本,支持多种量化方式和平台适配;3)模型转换的参考调用方式;4)模型结构对比展示。文章还提供了注意事项,强调量化数据集图片尺寸、mean/std值需与实际推理一致,并给出精度优化建议。该转换流程为YOLOv26模型在RK3588上的高效部署提供了完整解决方案。

qq_64366203的博客 1127

vim/gvim: 文本搜索和替换命令和常用技巧例

vim/gvim: 文本搜索和替换命令和常用技巧例。。。可用用鼠标操作,也可以按Ctrl+V,然后用导航键(navigation key,即四个箭头键)进行范围选中。可以键入“:s”以查询当前编辑会话期间所有替换命令,用up/down来选定,然后回车即可重复执行。还可以用+和-来表示基于前一个行号指示,指定第2个行号指示相对于前一个的偏移值。反之,在pattern后面加上“\C”,ze表示要求区分大小写。在以上例中,"%"表示指定整个文件作为操作范围,即%与g结合表示对整个文件进行全局替换。

chenxy_bwave的专栏 3万+

基于ESP32的气象雷达站设计与实现

物联网技术通过嵌入式设备实现环境数据的实时采集与可视化,其中ESP32凭借其双核处理器和WiFi/蓝牙功能成为热门选择。本项目利用ESP32结合LVGL图形库,构建了一个低成本气象监测系统,通过OpenWeatherMap API获取全球气象数据并在7英寸触摸屏上动态展示。系统采用三级优化策略处理高分辨率雷达图,包括服务端预处理、硬件加速解码和显示增强,有效解决了内存占用和帧率问题。在物联网设备开发中,类似方案可应用于智能家居、农业监测等场景,特别是需要实时数据可视化的领域。通过SPIFFS存储和zlib压

weixin_42524864的博客 423

DFT设计绪论

DFT设计的主要目的是为了将defect-free的芯片交给客户。 产品质量,通常使用Parts Per million(PPM)来衡量。 但是随着IC从SSI到VLSI的发展,在test上花销的时间越来越多,test的quality却很难提高,这使得DFT的engineer不断的发展着DFT的技术。 DFT engineer面对的第一个问题是设计内部的状态的可测试性问题。在...

ahr7882的博客 1195

Linux中vim中进行替换/批量替换

Linux中vim中进行替换/批量替换

山路曲折盘旋,但毕竟朝着顶峰延伸 6048

数据结构课程设计C/C++版--美团餐馆预定信息的管理与分析 5 6

第5关:注销个人信息。

m0_62222486的博客 2128

vim批量替换

vim批量替换命令实践 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为: :%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行。 “1,20” :表示从第1行到20行; “%” :表示整个文件,同“1,”;“.,”; “. ,”;“.,” :从当前行到文件尾; s : 表示替换操作 [option] : 表示操作类型 g 表示全局替换; c 表示进行确认 p 表示替代结果逐行显示(Ctrl + L恢复屏幕); 省略option时仅对每行第一个匹配串

weixin_49129782的博客 2722

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vim 批量替换

vim批量替换指定内容 Posted by破冰on 2013-9-4 17:36 Wednesday vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当...

u012135425的博客 1857

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VIM中的正则表达式及替换命令

VIM中的正则表达式及替换命令   一、使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令。其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。 :s/正则表达式/替换字符串/选项 在学习正则表达式时可以利用 / 命令来练习。 二、元字符

u011409389的专栏 1444

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vi/vim 文件查找与替换

vim有着强大的替换和查找功能,若能进行熟练的运用,可以让工作效率得到一个很大程度的提高. 替换 语法:[addr]s/源字符串/目的字符串/[option] [addr]表示检索范围,如: "1,n":表示从第1行到n行 "%":表示整个文件,同"1,$" ".,$":表示从当前行到文件尾 [addr]省略时表示当前行 s:表示替换操作,其为substitute的缩写 [optio...

cbaln0的博客 11万+

Vim 替换命令完整学习笔记

Vim的替换命令是文本处理的利器,掌握好正则表达式和分组引用是关键。记住"先查找,后替换,多测试,备份文件"的安全原则!Vim 的替换命令是其最强大的功能之一,基于强大的正则表达式系统,可以进行精确的文本查找和替换操作。字符时,使用其他分隔符避免转义。

面朝大海 2418

vim替换命令

<br />替換(substitute) :[range]s/pattern/string/[c,e,g,i]5.1<br /> <br />range指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。pattern就是要被替換掉的字串,可以用 regexp 來表示。string將 pattern 由 string 所取代。cconfirm,每次替換前會詢問。e不顯示 error。gglobe,不

glorin的专栏 11万+

linux vim多行替换,vim几个小技巧(批量替换,列编辑)

原标题:vim几个小技巧(批量替换,列编辑)vim批量替换::%s/source_pattern/target_pattern/g即可完成如想把所有的username换成login_name,那么:%s/username/login_name/g就可以了。简单吧。vim列编辑:有时候也会遇到这种情况,即对文件的列编辑,需要同时修改多行,就类似于ultraedit的alt+c功能。=========...

weixin_42527464的博客 3481

vim 批量替换字符串_Vim 有什么奇技淫巧?

在之前发布过的一篇文章——《Nova 带你快速入门 Vim》 中,我们介绍了一些 Vim 的简单入门教程,在评论区的反馈中,有些读者希望可以加入一些更加进阶的 Vim 教程,那么本文就是啦~在有了一些 Vim 基础之后,下面我给大家介绍一些更加硬核的技巧。鉴于你已经完成了 Vim 的入门,接下来的内容不会很难,如果希望对于 Vim 以及它的编辑方式有一个更加深入的认识,你还需要学习一些相关知识,比...

weixin_39858245的博客 490

【shell】vim批量替换命令实践

vim批量替换命令实践 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为: :%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行。 “1,20” :表示从第1行到20行; “%” :表示整个文件,同“1,$”; “. ,$” :从当前行到文件尾; s : 表示替换操作 [option] :...

zkq_1986的博客 1380

VIM文本替换

VIM文本替换 1.替换当前行中的内容:

Timeinsist的博客 1951

vim 替换内容

在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的第一个from,替换成to。如果当前行含有多个 from,则只会替换其中的第一个。 :s/from/to/g : 将当前行中的所有from都替换成to。 :s/from/to/gc : 将当前行中的所有from都替换成to,但是每一次替换之前都

hllyzms的博客 2566

vim使用技巧--正则表达式与替换

正则表达式的作用十分强大,尤其是在替换操作时,有效设定被替换内容的pattern,从而实现很多强大的功能。这里记录一下vim中替换的语法以及支持的正则表达式规则。 简单替换表达式 :[range]s/from/to/[flags] range:搜索范围,如果没有指定范围,则作用于但前行。 :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换; :10s/from/to/ 表示只在第10行搜索替换; :%s/from/to/ 表示在所有行中搜索替换; 1,$s/from/

松石立雪 4380
上一篇: Cache的三种映射和局部性
下一篇: 赋值时‘1和‘b1有什么区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值