2022-08-21  本文已影响0人  sweetBoy_9126

作用

可以录制一系列动作

开始录制

qa
a 是寄存器的名称,也可以是其他任意字母

结束录制

q

查看录制好的宏

:reg+空格+a+回车

使用

  1. 直接使用
    @a
    a 是寄存器的名字

  2. 调用最后一次执行的宏
    @@
    对于需要连续调用的宏来说,这个命令十分有用

  3. 重复执行
    数字 + @ + 寄存器名称
    比如:10@a -> 执行 a 这个宏10 次

示例

1. one
2. two
3. three
4. four
10. four

比如我们需要把上面的我需要把每一行数字后面的"."变成 ")",首字母变成大写

1) One
2) Two
3) Three
4) Four
10) Four

具体实现:

  1. 我们需要先录制一个宏,使用 q,编辑器下方会有一个 q 的标识

我们所有的命令都会存在一个寄存器中,我们需要指定这个寄存器的名字,这里我们以 a 为例,按下 a 后,编辑器底部就会出现正在录制中的状态

  1. 开始写我们的系列命令

注意我们查看显示的命令都是我们为改键之前的命令
a 是我们寄存器名称
名称和命令中间空格隔开
我们的 H 就是对应 ^

安全机制

当我们的宏执行报错会自己停下来
使用场景:当我们通过数字重复执行我们的宏的时候,我们不需要知道具体要让他执行多少次,可以尽量往大了写,比如我们要查找和修改一个 test,我们当前文件有30个,我们可以让这个宏执行50次,甚至更多,当超过30次的时候就会报错,不再继续执行了

修改宏

追加

qA(这里的A是我们对应寄存器名字的大写,我们之前是小写a,所以这里就写A)

使用 qA 编辑器下方会再次提示进入记录中的状态,然后按 j,再按q 结束录制

这时候我们的 a 寄存器的命令里就多了一个 j

修改一个已知的宏

本质就是修改寄存器里的内容
1). 将寄存器里的值取出来,粘贴到编辑器里

2). 对我们取出来的命令进行修改
修改完成后使用

示例

对我们的 guiw 命令进行修改

  1. "ap
    得到
guiw
  1. 将我们的 u 改成 大写
gUiw
  1. 确认修改
    "ayy
  2. 再次查看我们的宏命令
    :reg a
gUiw

问题:在 vscode 里对已知宏的修改不起作用,vscode 里的 vim 有 bug

技巧

  1. 先规范好光标的位置
  2. 移动的时候使用相对位置
上一篇 下一篇

猜你喜欢

热点阅读