阅读 154

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 多个替换且逐个确认

  • 替换还是很方便的

  • 但是我想替换中使用正则表达式

  • 可以么?????

  • 下次再说 ????

来源https://www.cnblogs.com/oeasy/p/15365783.html

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐