宏的进阶 macro 回忆
- 关于宏,上次有4个要点
- qa 开始录制宏
- q 结束录制宏
- @a 应用宏
- qA 追加录制宏
- 甚至可以编辑宏
- "ap 把宏作为文本粘贴出来
- 编辑之后
- "ayy把新的宏装在进入a寄存器reg
- 这个宏还可以怎么玩呢?
- vi
oeasy.txt
- 插入一下内容
- a. oeasy
- b. o2z
- c. o3z
- d. o9z
文章图片
录制新宏
qa0W~hjq
- qa 在a寄存器里面开始录制
- 0 到行头
- W 跳一个大词
- ~ 改变当前光标位置字符的大小写
- j 向下一行
- q 停止录制
- 查看宏
:reg a
- 正常模式下直接命令的方式
@a
- 应用到当前行
99@a
- 应用99行
- u回来
- 用命令行的方式
:normal @a
- 切换到normal模式并对当前行执行@a
:2,4 normal @a
- 切换模式并对2-4行执行@a
- u回来
gg
回到最初qAkA.
jq
qA
追加录制宏到a寄存器k
是为了抵消上面的j
A
追加在本行最后.
写一个.
退回到正常模式j
向下一行q
退出录制
- 这部分内容,就被追加到宏a里面
- 可以
:reg a
看到 0W~hjkA.
j
- 可以
:% normal @a
- u回来
:reg a
- 目前
0W~hjkA.
中j
jk
彼此抵消
- 【oeasy教您玩转vim - 81 - # 宏macro的进阶】在文档最后把寄存器a中的存储的宏粘贴出来
- Go"ap出来
- 修改为
0W~A.
j
- 重新定义宏a
"ay$
- 观察宏a
:reg a
- 批量执行
:% normal @a
- 除了
oeasy.txt
之外 - 还有
o2z.txt
、o3z.txt
:!cp oeasy.txt o2z.txt
:!cp oeasy.txt o3z.txt
- 批量执行
:arga *.txt
- 添加当前文件夹下的所有txt文档
:args
- 列出所有参数
:argdo g/.*/normal @a
- 对于args中的每个文件中的每一行执行a这个宏
- g global全局执行
- 匹配任何字符匹配每一行.*
- 如果是
o.*
对应的是以o开头的每一行 - normal @a 正常模式下执行@a
:argdo w
- 保存所有文件修改
@@
- 执行上一条宏
:2,5@
- 第2-5行执行上一条宏
- 文件还是这样的
oeasy.txt
- a. oeasy
- b. o2z
- c. o3z
- d. o9z
qaqqa0W~j@aq
- qaq
- 把a宏清空
- qa
- 开始录制a
- 0
- 到第一列
- W
- 跳大词
- ~
- 改变大小写
- j
- 往下跳一行
- @a
- 执行宏a
- q
- 停止录制
- qaq
- 然后运行
- 这样他就是自己执行自己
- 直到最后一行无法再递归调用
- 就自动跳出了
- 有素材如下
- import { FUNC1 } from "oeasy";
- import { FUNC2 } from "o2z";
- import { FUNC3 } from "o3z";
- import function from "o9z";
- import { FUNC4 } from "o9z";
- import { FUNC5 } from "orz";
- qa0f{gui{jq
- qa
- 开始录制宏a
- 0
- 到第1列
- f{
- 跳到{
- gui{
- 把{}里面的内容小写
- j
- 往下一行
- q 停止录制
- qa
- 运行宏
- 99@a
- 会卡到第4行
- 因为找不到{
- 这个时候可以并发执行
:1,$ normal @a
- 从第1行到最后一行每一行都在normal模式下执行@a
- 关于宏,我们回忆一下
- qa 开始录制宏
- q 结束录制宏
- @a 应用宏
- qA 追加录制宏
- 控制寄存器内容其实就是控制宏
- 宏还有一些特性
- 可以多文件执行宏
- 可以并发运行宏
- 可以递归执行宏
- 宏是随录随用的的
- 我想把一些东西固定下来,让他到时候不用定义就能执行
- 可以么?
- 下次再说!
[Github地址] (https://github.com/overmind19...)
[Gitee地址] (https://gitee.com/overmind198...)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/course...)
推荐阅读
- oeasy教您玩转vim - 89 - # 高亮细节Highlight
- oeasy教您玩转vim - 88 - # 自动命令autocmd
- oeasy教您玩转vim - 87 - # 内容查找grep命令
- oeasy教您玩转vim - 85 - # 全局命令
- oeasy教您玩转vim - 84 - # 命令command
- vim 命令整理(从FreePlane的mm格式导出)
- oeasy教您玩转vim - 82 - # 函数function
- oeasy教您玩转vim - 80 - # 宏macro
- oeasy教您玩转vim - 79 - # 编码格式encoding