Vim 宏
宏的概念
什么是宏呢?英文名:macro,代表一串命令的集合。
示例操作文本
SELECT * FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0) AND (`correctCnt` > 0) ORDER BY `addTime` DESC LIMIT 16 OFFSET 30;
SELECT `imgId`, `taskId`, `imgUrl`, `status`, `ocrResult`, `feedback`, `totalQuestionCount`, `correctQuestionCount`, `finalOcrResult`, `addTime`, `completeTime`, `updateTime` FROM `edu_ocr_img` WHERE (`taskId` IN ('143736', '143725', '143723', '143722', '143715', '143682', '143681', '143677', '143676', '143651')) AND (`status` > 0);
SELECT sum(correctCnt) FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0);
UPDATE `edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1) AND (`taskId`=224876);
UPDATE `edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1);
. 号宏
. 号是英文中的句号.
需要在普通模式中执行.
执行效果为: 重复执行一次上次的修改 (关于修改的定义不做详细解析).
命令序列: cwaaaj.
结果:
(注意 aaa 的位置)
aaa * FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0) AND (`correctCnt` > 0) ORDER BY `addTime` DESC LIMIT 16 OFFSET 30;
SEaaa `imgId`, `taskId`, `imgUrl`, `status`, `ocrResult`, `feedback`, `totalQuestionCount`, `correctQuestionCount`, `finalOcrResult`, `addTime`, `completeTime`, `updateTime` FROM `edu_ocr_img` WHERE (`taskId` IN ('143736', '143725', '143723', '143722', '143715', '143682', '143681', '143677', '143676', '143651')) AND (`status` > 0);
SELECT sum(correctCnt) FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0);
UPDATE `edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1) AND (`taskId`=224876);
UPDATE `edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1);
录制宏
q 键既是录制的开始, 也是录制的结束按键. 录制过程中会显示recording @{字母}
示例按键: qqdwjq@q@@@@
将每一行的第一个单词删除:
* FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0) AND (`correctCnt` > 0) ORDER BY `addTime` DESC LIMIT 16 OFFSET 30;
`imgId`, `taskId`, `imgUrl`, `status`, `ocrResult`, `feedback`, `totalQuestionCount`, `correctQuestionCount`, `finalOcrResult`, `addTime`, `completeTime`, `updateTime` FROM `edu_ocr_img` WHERE (`taskId` IN ('143736', '143725', '143723', '143722', '143715', '143682', '143681', '143677', '143676', '143651')) AND (`status` > 0);
sum(correctCnt) FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`userType`=3)) AND (`status` >= 0);
`edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1) AND (`taskId`=224876);
`edu_ocr_task` SET `status`=-2 WHERE (`userId`=11580815) AND (`status` IN (1, 0)) AND (`userType`=1);
示例讲解
qq : q 开启录制宏, 选择 q 这个寄存器放置宏的内容
dwjq : 删除第一个单词, 并且光标下移一行, q 结束录制
@q : 回放存放在 q 寄存器里面的命令
@@: 回放上一次执行的宏
这样一个简单的宏就完成了.
查看宏的内容
:reg q
会显示如下内容:
:reg q
--- Registers ---
"q dwj
修改宏
在录制过程中, 难免会录制错误. 那么如何修改你已经录制好的宏呢?
在宏的尾部增加命令
qQ 这回将你之后输入的序列追加到 q 寄存器中, 而不是重新覆盖.
重新编辑宏指令
- :tabn | 重新打开一个 tab
- :put q | 将
q寄存器里面的内容复制到当前文件中 - 编辑你的宏命令 (在编辑之前有必要先去学习一下
宏中的键盘编码) - :d q | 将当前行删除, 并且放到
q寄存器中 - @q | 执行
q寄存器中的指令
Vim 宏的更多相关文章
- [转帖]基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解
基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解 不明觉厉 只要是人做的东西 就会有bug 就会有安全问题 就看发现bug 或者是发现安全问题 有没有收益了 会用linux的都是比较熟 ...
- 老板说,Vim宏都不会用,你的工作效率太低啦~
工作中,对于文本文件的编辑我们经常有这样的需求: 多次重复输入一段相同文本: 生成一段序列化的文本: 每行文本插入一句相同的文本. 除此之外,还有很多需要重复操作的动作.对于这些需求,如果我们人工去操 ...
- vim宏录制的操作
1:在vim编辑器normal模式下输入qa(其中a为vim的寄存器) 2:此时在按i进入插入模式,vim编辑器下方则会出现正在录制字样,此时便可以开始操作. 3:需要录制的操作完成后,在normal ...
- vim 宏的使用
1. 基本使用 q[a-z] 开始录制宏 q 停止录制 @[a-z] 使用宏 @@ 调用最近使用的宏 22@[a-z] 多次重放宏 2. 宏的执行方式 串行方式:5@[a-z] 宏内包含向下一个目标 ...
- Vim 宏实战操作
宏的概念 什么是宏呢?英文名:macro,代表一串命令的集合. 示例操作文本 SELECT * FROM `edu_ocr_task` WHERE ((`userId`=284871) AND (`u ...
- vim宏录制
宏录制 当你要重复某一个操作时,录制的宏可以很快地帮你完成任务. 准备文本 <!DOCTYPE html> <html lang="en"> <hea ...
- vim重复操作的宏录制
在编辑某个文件的时候,可能会出现需要对某种特定的操作进行许多次的情况,以编辑下面的文件为例: ;==================================================== ...
- VIM辅导:视频教程,文档资料,经典插件
VIM辅导:25个vim视频' 教程 '资源 转自: http://blog.jobbole.com/10250/ 编注:@程序员的那些事 12月14日在新浪微博发起的<你最常用哪些文本编辑 ...
- 0050 Linux VIM 命令
1. 模式切换 vim的模式 $ vi filename 进入normal 模式,这是命令模式,用于执行大多数常用的编辑命令,不能输入 敲i 进入 insert 模式,这是正常的编辑模式,按Esc ...
随机推荐
- Python内置函数(52)——range
英文文档: range(stop) range(start, stop[, step]) Rather than being a function, range is actually an immu ...
- 【MongoDb入门】15分钟让你敢说自己会用MongoDB了
一.MongDB是什么呢,我该如何下手呢? MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 如果小伙伴你的机器上还没有安装Mon ...
- Android中,粗暴的方式,修改字体
序 在 Android 下使用自定义字体已经是一个比较常见的需求了,最近也做了个比较深入的研究. 那么按照惯例我又要出个一篇有关 Android 修改字体相关的文章,但是写下来发现内容还挺多的,所以我 ...
- C语言用regcomp、regexec、regfree和regerror函数实现正则表达式校验
前言 首先,祝大家国庆假期玩的嗨皮!可能有的人已经在回家的路上了,是不是都看不到我的真挚祝福了? C语言对于一些东西的封装比较少,比如正则表达式,但速度快一直使它立于不败之地,今天就要介绍如何用C封装 ...
- MongoDB Export & Import
在使用MongoDB数据库的过程中,避免不了需要将数据进行导入和导出的工作,下面为具体的用法.注意 不同的数据库版本可能存在略微的差异,所以在使用时,先查看 --help 来进行确认.下面的为3.6版 ...
- 初学Java Web(3)——第一个Servlet
这学期 Java Web 课程的第一节课就简短复习了一下 Java 的一些基础知识,所以觉得 Java 的基础知识还是很重要的,但当我想要去写一篇 Java 回顾的文章的时候发现很难,因为坑实在太多了 ...
- 服务注册中心之ZooKeeper系列(一)
一.服务注册中心介绍 分布式服务框架部署在多台不同的机器上.例如服务A是订单相关的处理服务,服务B是订单的客户的相关信息服务.此时有个需求需要在服务A中获取订单客户的信息.如下图: 此时就面临以下几个 ...
- 第32章 事件 - Identity Server 4 中文文档(v1.0.0)
日志记录是更低级别的"printf"样式 - 事件代表有关IdentityServer中某些操作的更高级别信息.事件是结构化数据,包括事件ID,成功/失败信息,类别和详细信息.这使 ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- JavaScript 条件语句
if语句 有些代码块只能在一定条件下运行,通过if.if else.else代码块,可以让你的代码按条件执行. // 控制流 var foo = true; var bar = false; ...