乐趣区

关于vim:oeasy教您玩转vim-53-批量替换

查找细节

回顾上节课内容🤔

  • 咱们复习了对于搜寻的相干内容

    • /正向,?反向
    • n放弃方向,N改变方向
    • 能够设置

      • 是否疏忽大写小写
      • 是否从头开始查找
      • 是否高亮显示
  • 还有一些正则表达式的应用办法

    • 行头行尾 ^$
    • 词头词尾 \<\>
    • 字符列表[a-z][A-Za-z_]
    • 蕴含回车one\_stwo
  • 数量

    • 数量*?=
    • 具体数量 \{1,3}
    • 非贪心 \{-}
  • 不以什么为结尾结尾

    • 不以什么为结尾 \@<!
    • 不以什么为结尾 \@!
  • 查找进去怎么替换呢?🤔

查找手册📕

  • :h :s

  • :s命令 对应的是 substitude替换
  • 咱们先做个试验环境
  • :r !ls -lah

具体操作

  • 3G 跳转到第三行
  • :s/shiyanlou/oeasy

    • 把以后行的 shiyanlou 换成oeasy
  • 我想在同一行外面再换下一个

    • 就能够:⬆️
    • 找到上一条命令
    • 而后再回车执行
  • 我想把下一行的 2oeasy一把都换掉
  • 这就要加flag

增加flag

  • 哪个 flag 呢?
  • 咱们能够在 :h :s 的时候,应用/flag
  • 也能够:h s_flags

  • 咱们这次的 flag 是g

    • 换一行
    • :s/shiyanlou/oeasy/g
    • 能够把这一行所有的 shiyanlou 换成 oeasy
    • 我了解这个 g 指的是行内所有的
    • 如果我想默认 g -flag 就开着呢?

默认 g -flag

  • 如果 :se gdefault

    • 能够设置 g 为默认
  • 然而这个只能替换一行
  • 我想在某些行的范畴内替换怎么办呢?
  • range

增加range

  • 精准管制

    • :3,8s/shiyanlou/oeasy/g
    • 只替换 3 - 8 行的
    • 而且开了g flag
    • 3,8 行
    • 每行的都全副替换
  • 全副替换

    • % 相当于 1,$
    • :%s/shiyanlou/oeasy/g
    • :1,$s/shiyanlou/oeasy/g
    • 就会把所有的都替换了
  • 然而这个一把都替换了
  • 有的时候我还是想具体一个个确认怎么办?

一一确认

  • :h s_flags找到一个c

    • c的意思是 confirm 确认
  • :%s/shiyanlou/oeasy/gc

    • 行里的都替换
    • 每一个都须要确认
  • 每个一一确认

    • y替换以后匹配
    • l替换以后匹配,并退出
    • n跳过以后匹配
    • esc间接退出
    • q间接退出
    • a全副替换
  • 领会一下 a 的高兴😛

小技巧

  • /let

    • 搜寻 let
  • cwconstesc

    • 把以后单词变成 const
    • n跳过以后匹配
    • n再跳过以后匹配
    • n还跳过以后匹配
    • N往回跳
  • 重做

    • .

      • 须要替换的就替换
    • n

      • 须要跳过的就跳过
    • N

      • 跳错了就跳回来

总结

  • 咱们学习了

    • 替换 substitude
  • 替换单行

    • :s/shiyanlou/oeasy
  • 加上range

    • :3,5s/shiyanlou/oeasy
    • :%s/shiyanlou/oeasy
  • 加上flag

    • :3,5s/shiyanlou/oeasy/g 多个替换
    • :3,5s/shiyanlou/oeasy/gc 多个替换且一一确认
  • 替换还是很不便的
  • 然而我想替换中应用正则表达式
  • 能够么?🤔
  • 下次再说 👋

[Github 地址] (https://github.com/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)

退出移动版