宏录制
引言
我们知道.
命令对重复小的修改确实有效,但想到重复更大规模的改动时,Vim的宏就派上用场了。
宏很适合对一系列相似的行、段落,甚至文件,进行重复性修改。
在录制命令序列的过程中难免会出错,不过用不着推翻重来,因为可以很方便地在原有宏的结尾附加新的命令。
就像黑白棋游戏一样,学习Vim的宏只需一分钟,但要穷其一生才能精通。
宏的读取与执行
把命令序列录制成宏
在普通模式下按
q + {register} + 一系列命令 + q
- q键既是录制按钮,也是停止按钮
- {register}是寄存器,可以是a-z A-Z的任何一个字符
通过执行宏来回放命令序列
可以用@{register}
命令执行指定的寄存器内容
-
例如:
qa
一系列命令序列
q -
这个宏只记录了vim命令到寄存器a中,执行这个宏可以用命令:
@a
也可以加上执行次数:
10@a
执行10次
当你执行过一次@a之后,你可以用@@
来重复执行@a
永久宏
-
录制宏后,你的操作是保存在寄存器里的,如何将宏变成永久宏,我以寄存器r为例
normal模式下按"rp
可以把宏的内容显示出来
编译宏内容:let @宏值=“指令”
寄存器中的内容可读性比较低
<80>kb 表示退格键
^[表示ESC键 -
mac的终端可以保存寄存器的内容(关机后仍存在),随意我会专门找个寄存器存编辑markdown格式的代码
我的代码如下
每次我需要编辑时,只需按下@r,就可以变成我想要的格式
- vim的宏应该是可以修改的,修改方式:普通模式下输入
:let@a="写宏的具体代码"
这样@a命令就可以使用你制作的宏了
但是我复制上面代码保存后会出现乱码,暂时不知道原因
生成遗传从1到N的数列
- 左上角输入1
- record macro(a):q a yy p ctrl+a q
- run macro(a):99@a
- show macro(a):"ap
这样生成的是一列,如果要在一行中显示,可以录制动作J
这个宏
利用这个功能,配合Downie可以快速下载一个b站专辑的视频
批量改格式
需求:把400个白色格式的链接,全部修改为超链接形式,此时用vim宏录制可以非常快速地自动化完成任务
经验:不同的宏可以再录到一个宏里,如a实现功能1,b实现功能2,则可以录制宏c,记录@a和@b,那么可以一次性实现功能1和2
阅读更多文章,请看学习笔记汇总