oeasy教您玩转vim - 81 - # 宏macro的进阶
宏的进阶 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>jqqA追加录制宏到a寄存器k是为了抵消上面的jA追加在本行最后.写一个.<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@aqqaq
- 把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地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)
oeasy教您玩转vim - 81 - # 宏macro的进阶的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- mews/captcha 验证码组件
/** * 图像验证码 */ public function captcha(CaptchaBridge $captcha, $type = 'default') { $api_captcha = $ ...
- 【C#】初次使用webapi的体会
webapi controller 要继承 ApiController 重写权限验证 ,记得使用 System.Web.Http下的AuthorizeAttribute. webapi默认路由 ...
- Win11任务栏图标重叠、混乱、异常、闪烁、乱动问题解决方法
重启资源管理器 1.按如CTRL + Shift + ESC打开任务管理器 2.找到Windows资源管理器,右键重启资源管理器即可(通常有用) 解决方法2(来自微软官方,未尝试): 如果问题依旧,可 ...
- Vue——Ajax请求的基本使用
1.get方法发送Ajax请求 // 直接在 URL 上添加参数 ID=12345 axios.get('/user?ID=12345') .then(function (response) { co ...
- PaddleOCR在 Linux下的webAPI部署方案
很多小伙伴在使用OCR时都希望能过采用API的方式调用,这样就可以跨端跨平台了.本文将介绍一种基于python的PaddleOCR识方案.喜欢的可以关注公众号,获取更多内容. 一. Linux环境下部 ...
- docker基础使用和资源限制
为什么使用容器 docker设计目标: 提供简单的应用打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 轻量级 kubernetes设计目标: 集中管理所有容器 资源编排 资源调度 弹性伸缩 ...
- Easysearch 内核完善之 OOM 内存溢出优化案例一则
最近某客户在使用 Easysearch 做聚合时,报出 OOM 导致掉节点的问题,当时直接让客户试着调整 indices.breaker.request.limit ,但是不起作用,于是又看了下 Ea ...
- 极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例
12 月 6 日,由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的 2023 大数据"星河(Galaxy)"案例评选结果正式公示. ...
- 阻塞外挂 TCP 端口 让外挂服务器增加无用处理 反攻击 是4个IP 苹果 安卓 pc 域名
using namespace std;#include<stdlib.h>#pragma comment(lib,"WS2_32.lib") #include < ...
- 订单推送设计思路-基于支付ID而不是订单号来推送
订单推送设计思路-基于支付ID而不是订单号来推送 方案:不是基于订单号来核销和分账的,抖音是基于每一笔抖音支付来做订单推送,核销和分账现象:这样会在抖音的订单中心中会出现很多条订单推送的记录. 抖音A ...