关于vim:oeasy教您玩转vim-54-匹配替换

48次阅读

共计 1483 个字符,预计需要花费 4 分钟才能阅读完成。

查找细节

回顾上节课内容🤔

  • 咱们学习了

    • 替换 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 地址] (https://github.com/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)

正文完
 0