oeasy教您玩转vim - 67 - # 批量替换
批量替换
回忆上次
我们可以用vimdiff快速的比较文件
这很实用!!!
实用的一些跳转方式
遍历所有的修改change
]c下一条修改[c上一条修改遍历所有的函数method
]m下一条修改[m上一条修改面对不同点
把当前的改成对比的 - do - diff obtain
把对比的改成当前的 - dp - diff put
关于多窗口
还有什么好玩的吗?🤔
回忆同时打开2个文件执行windo
vi -o o1 o2:windo normal Ioeasywindo所有窗口都执行normal进入普通模式Ioeasy插入oeasy:windo normal owindo所有窗口都执行normal进入普通模式o换行:windo normal "%pwindo所有窗口都执行normal进入普通模式"%p粘贴各自文件名
批量替换
:windo %s/oeasy/o2z/gwindo所有window窗口都进行%s/oeasy/o2z/g把oeasy替换为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可删除bufferse .可打开新的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\)endif和endfor中的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}可以用|按顺序增加分别对应的
windowsbuffersarguments各有各自的列表、切换、删除增加的方式
以什么开始、结束的模式
zsze关于
window窗口容器我们切得越细
可用的范围越小
总共
80*24的屏幕资源很快就用完了我又想多线程访问
又想有足够的屏幕来编辑
那怎么办呢?🤔
除了window之外还有容器吗?🤔
下次再说 *
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)

