• 什么是宏
  • 计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。

    在vim中,也有宏功能,低调而强大,今天给大家详细介绍一下。

  • vim中宏定义
  • 宏定义使用非常简单,一共以下几个步骤即可完成宏定义:


    1. 在命令模式下,按下键盘q,开启宏模式。
    2. 再次按下任意一个你想定义的按键,该键被宏定义。
    3. 录制你想要操作了一系列指令。
    4. 再次回到命令模式下,再次按下q,结束录制。
    5. 以后每次在命令模式下,按下@符号,再按下之前设置的宏定义按键,即可自动完成所有宏操作。

    这里以字母h为例,我想对h进行宏定义,对每行内容进行php的var_dump输出,那么具体操作如下。
    1. 将光标移到某一行开头,并按下q,开启宏定义,切记不要双击q,不然就变成了对q的宏定义了。
    2. 按下h,对h进行宏定义,此时左下角会显示recording提示。
    3. 在recording下,所有按键都会被记录到宏定义中。按下i,进入插入模式。
    4. 输入字符串var_dump("
    5. 按下esc,回到命令模式,按下$符号,将光标移动到行尾。
    6. 按下a,进入插入模式,输入字符串");按下esc,所有操作完成,并回到命令模式。
    7. 再次按下q,完成宏定义录入。
    8. 选中下一行内容,按下@,再按下h,神奇一幕出现,自动完成了var_dump函数的编写。

  • 酷炫的demo
  • 1. 打开一个空文件,即将展示一个自动写入序列

    root@localhost [~] vim demo.txt

    2. 进入插入模式,按下数字1

    root@localhost [~] vim demo.txt
    1

    3. 开启recording模式,并使用字符a进行宏定义
    esc --> q --> a

    4. copy当前行,并复制到下一行
    yy copy当前行
    p 复制到下一行

    root@localhost [~] vim demo.txt
    1
    1

    5. 将复制的那行数字自增加一
    光标下移
    Control + a,数字增加1

    root@localhost [~] vim demo.txt
    1
    2

    6. 退出recording
    按q键

    7. 神奇的增长
    在当前行,按下 98@a
    屏幕如下,是不是很棒,正好100行:

    至此,你已经学会了vim的recording功能,在学习工作中去使用吧!