oeasy教您玩转vim - 54 - # 匹配替换
查找细节
回忆上节课内容
我们学习了
- 替换
substitude
- 替换
替换单行
:s/shiyanlou/oeasy
加上
range
:3,5s/shiyanlou/oeasy
:%s/shiyanlou/oeasy
加上
flag
:3,5s/shiyanlou/oeasy/g
多个替换:3,5s/shiyanlou/oeasy/gc
多个替换且逐个确认
- 替换还是很方便的
- 但是我想替换中使用正则表达式
- 可以么?
- 先回忆一下正则表达式模式匹配
模式 - 列举字符
[abcd]
- 表示匹配方括号中列举的
- 任意一个 字符
- abcd 中的任意一个字符
[a-z]
- 可用
中划线-
` 表示字符范围来减少列举的 [a-d]
等价于[abcd]
- 可用
[^abcd]
- 表示匹配除方括号中字符以外的任意字符
- 除了
abcd
之外的任意字符
模式 - 常用符号
.
- 等价于
[^\n]
- 除了换行符
( \n )
以外,表示匹配任意一个字符
- 等价于
\l
- 等价于
[a-z]
- 表示匹配 任意一个
小写字母
- 意思是lowercase
- 等价于
\L
- 等价于
[^a-z]
- 表示匹配 任意一个
除小写字母外的其他字符
- 等价于
\u
- 等价于
[A-Z]
- 表示匹配 任意一个
大写字母
- 意思是uppercase
- 等价于
\U
- 等价于
[^A-Z]
- 表示匹配
任意一个除大写字母外的其他字符
- 等价于
\w
- 等价于
[0-9A-Za-z_]
- 表示匹配
任意一个字母、数字、下划线
- 等价于
\W
- 等价于
[^0-9A-Za-z_]
- 表示匹配
任意一个字符除了字母、数字、下划线。
- 等价于
\d
- 等价于
[0-9]
- 表示匹配
任意一个数字
- 等价于
\D
- 等价于
[^0-9]
- 表示匹配
任意一个除数字外的其他字符
- 等价于
\x
- 等价于
[0-9A-Fa-f]
- 表示匹配
任意一个十六进制数字
- 等价于
\X
- 等价于
[^0-9A-Fa-f]
- 表示匹配
任意一个除十六进制数字外的其他字符
- 等价于
\s
- 包括两种
分隔符
空格
和tab
- 包括两种
帮助手册
起止标记
然后我们明确一下起止标记
^
表示匹配 输入字符串的开始位置 (行首)。$
表示匹配 输入字符串的结束位置 (行尾)。
-\<
表示匹配 单词词首。\>
表示匹配 单词词尾。
对应单词
:%s/four/4/g
- 把所有的
four
替换为4
- 把所有的
但是同时
twenty-four
- 被替换为
twenty-4
- 被替换为
- 这不合理
我们需要`:%s/\<four\>/4/g
\<four\>
匹配独立的four
- 这样替换就合理了
单词匹配
如果我们要替换所有的以
a
开头d
结尾的单词- 不允许在词中进行替换
oeasy
:%s/\<a.*d\>/oeasy/g
- 不允许在词中进行替换
add
、and
被替换band
不被替换
删除空行
- 首先我们找到空行
/^$
- 从开头
^
到结尾$
中间没东西 找到了以后,我们来替换
%s/^$//
这并不能删除- 删完了之后空行还是存在
我们可以使用
g
命令:g/^$/d
如果开头结尾之间有空格怎么办?
/^\s*$
先找到匹配- \s表示空格和tab
- *表示0-任意多个空格或者tab
:g/^\s*$/d
转义字符
如果我们要删除所有
//
开头的行- 这个
/
需要转义 - 先搜索/^//.*$
- 这个
:%s/^\/\/.*$//g
- 删除了注释内容
- 但是但空行还在
:g/^\/\/.*$/d
- 删除了空行
- 但是开头有空格和tab的无法删除
:g/^\s*\/\/.*$/d
- 把
\\
前面有空格和tab的也删除了
- 把
总结
- 进行了模式匹配批量替换的的操作
替换单词
:%s/\<a.*d\>/oeasy/g
转义字符
%s/^\/\/.*$/d
删除空行
:g/^\s*$//d
删除注释行
:g/^\s*\/\/.*$/d
- 替换还有一些什么玩法吗?
- 下次再说
[Github地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)
oeasy教您玩转vim - 54 - # 匹配替换的更多相关文章
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- Vim正则表达式匹配替换字符串
/********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
随机推荐
- Expander展开收缩动画
这个问题困扰了我一天,最后下了个MaterialDesign的demo,看了下他的源码,才恍然大悟,原来很简单. 我原来的设想是在expander的ControlTemplate设置触发器,在IsEx ...
- EDP .Net开发框架--权限
平台下载地址:https://gitee.com/alwaysinsist/edp 权限介绍 权限实际上就是谁有权使用或是访问什么,这里的"谁"可以视作"授权对象&quo ...
- NET9 AspnetCore将整合OpenAPI的文档生成功能而无需三方库
OpenAPI 规范是用于描述 HTTP API 的标准.该标准允许开发人员定义 API 的形状,这些 API 可以插入到客户端生成器.服务器生成器.测试工具.文档等中.尽管该标准具有普遍性和普遍性, ...
- Ceph配置与认证授权
目录 Ceph配置与认证授权 1. 为什么现在不采用修改配置文件的方式了呢? 2. Ceph元变量 3. 使用命令行修改配置 3.1 全部修改(使用服务名) 3.2 部分修改(修改进程) 3.3 临时 ...
- golang import 导入的四种方式
1 标准导入: import "package_name" 2 导入别名: import ( alias "package_name" ) 3 匿名导入: _ ...
- CH57x/CH58x/CH59x获取从机广播信息
有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的: 1.获取广播包 所有的函数 ...
- WIN11 WINDOWS 11 INTEL 12-13代大小核默认调度策略
WIN11 WINDOWS 11 INTEL 12-13代大小核默认调度策略 生效的异类策略:使用异类策略0. 异类线程调度策略:自动. 异类短运行线程调度策略:自动.
- 论文阅读 《Pingmesh: A Large-Scale System for Data Center Network Latency Measurement and Analysis》
背景 在我们内部产品中,一直有关于网络性能数据监控需求,我们之前是直接使用 ping 命令收集结果,每台服务器去 ping (N-1) 台,也就是 N^2 的复杂度,稳定性和性能都存在一些问题,最近打 ...
- nginx rewrite实践
nginx rewrite跳转(高级) 官网 https://nginx.org/en/docs/http/ngx_http_rewrite_module.html 该ngx_http_rewrite ...
- mysql GROUP_CONCAT使用
完整的语法如下: 1 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 1 2 3 4 5 ...