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

查找细节

回忆上节课内容🤔

  • 我们温习了关于搜索的相关内容

    • /正向,?反向
    • n保持方向,N改变方向
    • 可以设置

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

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

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

    • 不以什么为开头 \@<!
    • 不以什么为结尾 \@!
  • 查找出来怎么替换呢?🤔

查找手册📕

  • :h :s

未标题-3.png

  • :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/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值