批量替换
回忆上次
- 我们可以用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/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
可删除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/ge | update
- 可以用
:args
查看相应的参数列表 - 可以用
:argd
删除参数 - 可以用
:arga
添加参数
把网页文件批量替换md文件
vi **/*.html
- 把2级目录下所有html用vim打开
:args
- 观察所有参数
:argdo %s//[!/2]/1 | update
- 替换img标签
:argdo %s//(./{-/}/)/a>/[/2]/1/g | update
- 替换a标签
:%s//(.*/)/- /1/gc
- 替换h1标签
:%s/
/(.*/)
/ - /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
为单词开头的.org
都替换
- 以
多文件替换
:argdo %s//
- 对所有的arguments参数
- 执行全文批量替换
- 并且更新
/^/s*/zsif
- 开头只有空格和tab的if
//(./{-}/zsFab/)/{3}
- 第三个
Fab
- 第三个
之后 - ze
end/ze/(if/|for/)
endif
和endfor
中的end
综合应用
/
- 以
o
开头的 - 后面跟
o
什么g
的
- 以
:bufdo %s//
- 把以
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地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)