Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209372
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2501
  • 用 户 组: 普通用户
  • 注册时间: 2020-08-10 06:35
文章分类
文章存档

2024年(32)

2023年(86)

2022年(53)

2021年(42)

2020年(34)

我的朋友

分类: LINUX

2021-10-19 09:10:29

[Github地址] ()
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)

查找细节

回忆上节课内容????

  • 进行了模式匹配批量替换的的操作
  • 替换单词

    • :%s/\/oeasy/g
  • 转义字符

    • %s/^\/\/.*$/d
  • 删除空行

    • :g/^\s*$//d
  • 还有替换还有一些什么玩法吗?????

markdown变html

  • 要把 markdown 文件中的 *斜体*
  • 变成 html 中的 斜体
  • 先写框架

    • s///gc
    • 修改基本框架
    • s/\*.*\*//gc
    • 匹配模式
    • 先试一下,是否有高亮匹配
    • 如果没有就:se hls

图片描述

原子化

  • s/\*\(.*\)\*//gc

    • 给待替换部分加上括号

      • 将其明确
      • 将其原子化
    • 给括号转义
    • 看是否能匹配

图片描述

  • 仍然能够查找到
  • 下面就是替换部分
  • s/\*(.*)\*/\1/gc

    • \1就是括号中的原子内容
    • 把待替换模式放上去
  • s/\*(.*)\*/\1<\/em>/gc

    • 将需要转义的内容转义
  • 回车,替换成功!

使用参数

  • 还是把html文件转化为md文件
  • 我需要把

    替换为 - 空格

    • 先搜索/

      ,可以搜到,说明尖括号不用转义

    • 再搜索/

      .*

    • 可以匹配

  • 开始写
  • :%s///gc

    • 上框架
  • :%s/

    .*

    //gc

    • 基础内容
  • :%s/

    (.*)

    //gc

    • 加括号
  • :%s/

    \(.*\)<\/h1>//gc

    • 转义

  • :%s/

    \(.*\)

    /- \1/gc

    • \1就是搜索中用转义括号括起来的东西
  • 如果要把

    替换为 - 怎么办?

  • 如何修改
  • :%s/

    \(.*\)

    / - \1/g

多个参数

  • 原来的列表

    • Joe,John
    • oeasy,oyeah
  • 需要的列表

    • John Joe
    • oyeah oeasy
  • 需要前后对调,还要去掉逗号
  • %s///gc

    • :%s 在所有的范围内
  • %s/.*,.*//gc

    • 中间有逗号分开
  • %s/(.*),(.*)//gc

    • 用括弧原子化
  • %s/([^,]*),([^,]*)//gc

    • 括弧里的原子中不能有逗号
  • %s/\([^,]*\),\([^,]*\)//gc

    • 转义
    • \([^,]*\),\([^,]*\)原来的列表

      • ([^,]*\) 前面的第一个原子,内容为除了逗号之外的字符
      • , 分隔符逗号
      • ([^,]*\) 前面的第二个原子,内容为除了逗号之外的字符
  • 高亮显示匹配的话
  • :%s/\([^,]*\),\([^,]*\)/\2 \1/gc

    • \2 \1

      • 把原来的两个原子前后对调
      • 中间加上空格
  • 完成对调

如果是a标签呢?

问题

  • oasdfo

    • 这句话有两个超链接
    • 但是替换之后
    • 却变成了一个超链接
    • 这怎么办?
  • 贪婪匹配与非贪婪匹配

    • .*对应的是贪婪匹配 greedy
    • .{-}对应的是非贪婪匹配 non-greedy
    • 会匹配第一个符合条件的
  • 什么是贪婪匹配?

贪婪匹配

  • 把 md 中的**重点文字**和**重点**
  • 变成 html 中的 重点文字
  • 注意他把这两个分开了
  • \*\*.\{-}\*\*

    • \*\* 代表前两个星号
    • . 的数量是\{-}
    • \*\*代表后两个星号
  • . 的数量是\{-}

图片描述

  • 根据这个我们来写替换语句
  • :s///gc
  • :s/**(.*)**//gc

    • 给需要转义的字符转义
  • :s/\*\*\(.*\)\*\*//gc

    • 思路就是把.*变成.\{-}
    • 把贪婪变成非贪婪
  • :s/\*\*\(.\{-}\)\*\*//gc

    • 把替换的元素放上
  • :s/\*\*(.\{-})\*\*/\1<\/strong>/gc
  • 尝试一下
  • 根据这个,是否能解决一行中有多个元素的问题

匹配模式

如果是标签呢

  • 需要把

    • 替换为转存失败o
  • 先尝试匹配
  • /
  • 也就是/给引号、括号、斜杠都加上转义/
  • 匹配成功之后开始替换
  • :%s//[!\2]\1
  • 如果一行有多个img怎么办?
  • 还得把贪婪的变成非贪婪的

总结

阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~