共计 1486 个字符,预计需要花费 4 分钟才能阅读完成。
宏的进阶 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.<Esc>jq
qA
追加录制宏到 a 寄存器k
是为了对消下面的j
A
追加在本行最初.
写一个.
<Esc>
退回到失常模式j
向下一行q
退出录制
这部分内容,就被追加到宏 a 外面
- 能够
:reg a
看到 0W~hjkA.<esc>j
- 能够
:% normal @a
- u回来
批改宏 macro
:reg a
目前
0W~hjkA.<esc>j
中jk
彼此对消
在文档最初把寄存器 a 中的存储的宏粘贴进去
- Go"ap进去
- 批改为
0W~A.<esc>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
- 进行录制
- 而后运行
- 这样他就是本人执行本人
- 直到最初一行无奈再递归调用
- 就主动跳出了
并行执行
有素材如下
- 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 进行录制
运行宏
- 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…)
正文完