Skip to content

Latest commit

 

History

History
117 lines (96 loc) · 2.96 KB

650-81945-批处理操作.sy.md

File metadata and controls

117 lines (96 loc) · 2.96 KB
show version enable_checker
step
1.0
true

批处理操作

回忆上次

  • 我们上次参数列表 arguments list
  • 所谓参数列表指的是 vim 打开的 参数列表
  • 参数会加载到内存中成为 buffer
  • 参数的控制
    • :arga filename 添加 参数
    • 此操作支持*可以打开多个文件
    • :argd filename来删除参数
    • :args 查询参数列表
  • 缓冲的控制
    • :bd filename来删除缓存
    • :e filename来打开缓存
    • ls可以列出缓存列表
  • 可以在terminal中配合find来找到文件
    • 然后作为参数给vim
    • sudo find / -mindepth 3 -maxdepth 4 -name passwd | xargs vi
  • 精准地控制了参数列表或者缓冲列表
  • 这两个列表可以怎么用呢?🤔

同时打开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
  • 各有各自的列表、切换、删除、增加的方式
  • 多文件多窗口还有什么可玩的么?🤔
  • 下次再说 👋