批量替换

回忆上次

  • 我们可以用vimdiff快速的比较文件
  • 这很实用!!!
  • 实用的一些跳转方式
  • 遍历所有的修改change

    • ]c 下一条修改
    • [c 上一条修改
  • 遍历所有的函数method

    • ]m 下一条修改
    • [m 上一条修改
  • 面对不同点

    • 把当前的改成对比的 - do - diff obtain
    • 把对比的改成当前的 - dp - diff put
  • 关于多窗口
  • 还有什么好玩的吗?

回忆同时打开2个文件执行windo

  • vi -o o1 o2
  • :windo normal Ioeasy

    • windo 所有窗口都执行
    • normal 进入普通模式
    • Ioeasy 插入oeasy
  • :windo normal o

    • windo 所有窗口都执行
    • normal 进入普通模式
    • o 换行
  • :windo normal "%p

    • windo 所有窗口都执行
    • normal 进入普通模式
    • "%p 粘贴各自文件名

批量替换

  • :windo %s/oeasy/o2z/g

    • windo 所有window窗口都进行
    • %s/oeasy/o2z/goeasy 替换为 o2z
    • 然后可以:wqall 全部保存

批量细节

  • 可以设置range,这个指的是window编号

    • :1,3windo normal Ioeasy
  • 可以执行批处理序列,用|隔开各个命令

    • :windo %s/oeasy/o2z/g| %s/o2z/o3z/g
    • 这样就可以执行两条替换命令了
    • :windo set nolist nofoldcolumn | colorscheme blue

bufdo

  • 除了windo
  • 我们还可以对每一个buffer执行命令

    • :bufdo %s/oeasy/o2z/g| %s/o2z/o3z/g
    • 可以设置 autowrite 自动保存
    • 也可以设置 hidden 支持未修改buffer隐藏
    • 还可以 :bufdo %s/oeasy/o2z/g| %s/o2z/o3z/g|update 自动更新
  • :ls:buffers 查看当前的buffers列表
  • :bd1:bd o2z.txt 可删除buffers
  • e .可打开新的buffer缓冲
  • 可以用:b1选择缓存

argdo

  • 我们还有一种批量执行命令的方式
  • :argdo %s/oeasy/o2z/g| %s/o2z/o3z/g
  • 打开.c文件,设置文件格式并更新

    • :args *.c
    • :argdo set ff=unix | update
  • 打开.c.h文件,批量替换并更新

    • :args *.[ch]
    • :argdo %s/\<my_foo\>/My_Foo/ge | update
  • 可以用:args查看相应的参数列表
  • 可以用:argd删除参数
  • 可以用:arga添加参数

把网页文件批量替换md文件

  • vi **/*.html

    • 把2级目录下所有html用vim打开
  • :args

    • 观察所有参数
  • :argdo %s/<img src=\"\(.\{-}\)\" title=\"\(.\{-}\)\" \/>/[!\2]\1 | update

    • 替换img标签
  • :argdo %s/<a href=\"\(.\{-\})\">\(.\{-\}\)<\/a>/[\2]\1/g | update

    • 替换a标签
  • :%s/<h1>\(.*\)</h1>/- \1/gc

    • 替换h1标签
  • :%s/<h2>\(.*\)</h2>/ - \1/g

    • 替换h2标签

之前 - zs

  • 要求

    • oeasy.org 替换为 oeasy.io
    • 但是 vim.org 不替换

  • /oeasy\zs.org

    • 查找前面有oeasy.org
  • :%s/oeasy\zs.org/.io/g

    • 前面是 oeasy .org 换成 .io
  • :%s/\<o.*\zs.org/.io/g

    • o 为单词开头的 .org 都替换

多文件替换

  • :argdo %s/\<o.*\zs.org/.io/g | update

    • 对所有的arguments参数
    • 执行全文批量替换
    • 并且更新

  • /^\s*\zsif

    • 开头只有空格和tab的if
  • /\(.\{-}\zsFab\)\{3}

    • 第三个 Fab

之后 - ze

  • end\ze\(if\|for\)

    • endifendfor 中的 end

综合应用

  • \<o.*\ze\.o.g

    • o 开头的
    • 后面跟 o 什么 g
  • :bufdo %s/\<o.*\ze\.o.g/ooo/g

    • 把以 o 开头的、后面跟 o 什么 g 的单词都换成 ooo
    • 对于所有的 buffers
    • 全文替换

总结

  • 这次有三种批量替换,分别是

    • :windo
    • :bufdo
    • :argdo
    • 执行的{cmd}可以用按顺序增加
  • 分别对应的

    • windows
    • buffers
    • arguments
  • 各有各自的列表、切换、删除增加的方式
  • 以什么开始、结束的模式

    • zs
    • ze
  • 关于 window 窗口容器

    • 我们切得越细
    • 可用的范围越小
    • 总共 80*24 的屏幕资源很快就用完了
  • 我又想多线程访问
  • 又想有足够的屏幕来编辑
  • 那怎么办呢?
  • 除了window之外还有容器吗?
  • 下次再说

[Github地址] (https://github.com/overmind1980/oeasyvim)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 67 - # 批量替换的更多相关文章

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

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  2. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  3. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. 【超详细】宝塔面板安装WordPress程序图文教程

    宝塔面板是目前广受用户喜爱的服务器控制面板之一,自己也在用,确实很方便,很多用户的网站都是基于宝塔面板搭建,今天简单介绍下宝塔面板是如何安装WordPress的,方便新手用户快速部署.也方便自己以后查 ...

  2. 大数据之Hadoop的HDFS存储优化—异构存储(冷热数据分离)

    异构存储主要解决,不同的数据,储存在不同类型的硬盘中,达到最佳性能的问题 1)存储类型 RAM_DISK:内存镜像文件系统 SSD:SSD固态硬盘 DISK:普通磁盘,在HDFS中,如果没有主动声明数 ...

  3. NumPy 二项分布生成与 Seaborn 可视化技巧

    二项分布 简介 二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件"成功"的次数的概率分布.它通常用于分析诸如抛硬币.做选择题等具有两个结果(成功或失败)的事件. 参 ...

  4. 一文了解JVM(中)

    HotSpot 虚拟机对象探秘 对象的创建 Header 解释 使用 new 关键字 调用了构造函数 使用 Class 的 newInstance 方法 调用了构造函数 使用 Constructor ...

  5. C语言常用数学函数

    目录 C语言常用数学函数(头文件#include "math.h") abs()函数 labs()函数 fabs()函数 floor()函数 floorf() floorl() c ...

  6. 知乎x-zse-96逆向分析

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  7. react减少组件渲染

    当this.setState()修改了state中的数据后,当前组件将重新渲染,同时也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) shouldComponentUpdate 当 ...

  8. 安装sql 2012 时遇到“需要更新的以前的 Visual Studio 2010 实例。”规则失败。

    "需要更新的以前的 Visual Studio 2010 实例."规则失败.此计算机安装了需要 Service Pack 1 更新的 Visual Studio 2010,必须安装 ...

  9. 别想宰我,怎么查看云厂商是否超卖?详解 cpu steal time

    据说有些云厂商会超卖,宿主有 96 个核心,结果卖出去 100 多个 vCPU,如果这些虚机负载都不高,大家相安无事,如果这些虚机同时运行一些高负载的任务,相互之间就会抢占 CPU,对应用程序有较大影 ...

  10. 如何监控文件变化,比如密码修改导致 shadow 文件变化

    原始需求是如果系统的密码被修改,或者创建了新用户,就告警出来.本质上,只需要监控 /etc/shadow 文件变化即可.但是在指标监控体系里,这个事情就比较棘手,只能把文件的 mtime 作为指标的值 ...