Vim 批处理操作详解

回忆上次

同时打开3个文件

  • vi -o o1 o2 o3
  • :windo normal I oeasy
    • windo所有窗口都执行
    • normal 进入普通模式
    • I oeasy插入oeasy
  • :windo normal o
    • windo所有窗口都执行
    • normal 进入普通模式
    • o 换行
  • :windo normal "%p
    • windo所有窗口都执行
    • normal 进入普通模式
    • "%p 粘贴各自文件名

批量替换

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

批量细节

  • 可以设置 range
    • 这个指的是window编号
    • :1,3windo normal Ioeasy
  • 可以执行批处理序列,用|隔开各个命令
    • :windo %s/oeasy/o2z/g| %s/o2z/o3z/g
    • 这样就可以执行两条替换命令了
    • :windo set nolist nofoldcolumn | normal zn
    • : windo set fileencoding=utf-8 | update自动更新

bufdo

  • 除了windo
  • 我们还可以对每一个buffer执行命令
    • :bufdo %s/oeasy/o2z/g
    • 在当前window 遍历每个buffer
    • 可以设置hidden隐藏 修改后的buffer
    • autowrite 自动保存
  • :ls:buffers
    • 查看当前的buffers列表
  • 可删除buffers缓冲文件
    • :bd1
    • :bd o2z.txt 
  • 可打开新的buffer缓冲文件
    • e .
  • 可以选择缓冲文件
    • :b1

argdo

  • 我们还有一种批量执行命令的方式
    • :argdo %s/oeasy/o2z/g
  • 打开.c文件,设置文件格式并更新
    • :args *.c
    • :argdo set ff=unix | update
  • 打开.c.h文件,批量替换并更新
    • :args *.[ch]
    • :argdo %s/\<my_foo\>/My_Foo/ge | update
  • 查看相应的参数文件列表
    • 可以用:args
  • 删除参数文件
    • 可以用:argd
  • 添加参数文件
    • 可以用:arga

总结

  • 这次有三种批量替换,分别是
    • :windo
    • :bufdo
    • :argdo
  • 执行的{cmd}可以用按顺序增加
    • update 自动更新
    • :set autowrite 自动写入
    • :set hidden 可以隐藏未保存 buffer
  • 分别对应的windowbuffersarguments
  • 各有各自的列表、切换、删除、增加的方式
  • 多文件多窗口还有什么可玩的么?🤔
  • 下次再说 👋

教程来源于Github,感谢overmind1980大佬的无私奉献,致敬!

技术教程推荐

人工智能基础课 -〔王天一〕

赵成的运维体系管理课 -〔赵成〕

从0开始学微服务 -〔胡忠想〕

10x程序员工作法 -〔郑晔〕

Python核心技术与实战 -〔景霄〕

深入拆解Tomcat & Jetty -〔李号双〕

Serverless入门课 -〔蒲松洋(秦粤)〕

跟着高手学复盘 -〔张鹏〕

云原生基础架构实战课 -〔潘野〕