查找细节

回忆上节课内容

  • 我们学习了

    • 替换 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
  • addand 被替换
  • 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 - # 匹配替换的更多相关文章

  1. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  2. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  3. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  4. Vim正则表达式匹配替换字符串

    /********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...

  5. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  6. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  7. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  9. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  10. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

随机推荐

  1. lodash已死?radash库方法介绍及源码解析 —— 随机方法 + 字符串篇

    前言 大家好,我是阿瓜.一个励志想成为艾弗森的前端瓜 ~ 我们已经分享了 radash 库中数组.对象等相关的方法,大家感兴趣的可以前往主页查看阅读: 或许你最近在某个地方听过或者看过 radash ...

  2. c# winfrom DataGridView 动态UI下载功能(内含GIF图) || 循环可变化的集合 数组 datatable 等

    Gif演示 分解步骤 1,使用组件DataGridView 2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型) 3,需要用到异步线程.如果是不控制数据源的话 ...

  3. (拼多多)pdd的Anti-Content

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  4. 自定义动画 jquery的结束动画

      <button name="width">改变宽</button>     <button name="height"> ...

  5. Nodejs fs模块 全局变量

    fs模块提供了用于与文件进行交互相关方法 const fs = require('fs') # 写入数据 fs.writeFile(文件,数据,err=>{}) # 读取文件中数据 fs.rea ...

  6. LeetCode 621. 任务调度器 (Java)

    题目: 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.C ...

  7. Windows下cmd命令行ssh连接Linux服务器

    1.window+R键进入运行 2.输入cmd,运行命令行工具 3.使用,命令ssh连接服务器 ssh -t 用户名@ip地址 -p 22 例如: 输入密码,显示连接成功

  8. SRE Google 运维解密读书笔记一:SRE 方法论概述

    SRE Google 运维解密,是 SRE 领域的启蒙之作,讲述了 Google 的 SRE 实践,SRE 就是从 Google 流传出来的.本文是读书笔记,第一篇,概述 SRE 方法论.帮大家把书读 ...

  9. CTF反序列化wp(ciscn,nss,ctfshowweb入门)

    [CISCN 2023 华北]ez_date 题目: <?php error_reporting(0); highlight_file(__FILE__); class date{ public ...

  10. rest接口list参数接收

    list<String> post传参 ["1112","2222","3332"]list<Object> pos ...