oeasy教您玩转vim - 80 - # 宏macro


?

宏 macro

回忆

  • 这次我们了解了编码格式

    • 屏幕显示的encoding
    • 文件保存的fileencoding
  • 不能搞乱了
  • 一般用什么编的就用什么解
  • 解铃还须系铃人
  • 打开不正确的话,就要切到正确的上面
  • 保存成任何自己想要的编码方式
  • vim还有什么能帮助我们快速操作的方法么???

建立环境

  • vi oeasy.c
  • 输入以下内容

图片描述?

录制宏macro

  • qa

    • 录制叫做a的宏

图片描述?

  • 这个记录中 @a 就录制进了vim的宏库
  • 可以随时调用录制完成的宏
  • 比如
  • I#include "

    • 在本行前面插入内容
    • 结束录制
  • 划重点

    • qa 开始录制宏
    • q 结束录制宏
  • 录制了宏之后怎么应用呢?

应用宏macro @

  • @a

    • 在本行应用这个宏
  • 2@a

    • 应用这个macro宏a两次
  • uuuu

    • 撤销4次
  • 4@a

    • 应用这个marcro宏a4次
  • 划重点

    • qa 开始录制宏
    • q 结束录制宏
    • @a 应用宏
  • 我们做一个复杂点的

复杂的宏

  • I#inclcude "^[A"^[j

    • I#include " 在行头插入引用头
    • ^[就是esc 从插入模式到正常模式
    • A" 在结尾处插入引号
    • ^[就是esc 从插入模式到正常模式
    • j跳转到下一行
  • 然后来两行.h的库

图片描述?

  • 2@a
  • 执行两次a宏
  • 执行结果如下

图片描述?

  • 我可以看看宏长什么样子么?

查看宏macro

  • :reg

图片描述?

  • "a寄存器里面就是macro宏a的内容

    • ^[就是esc
  • 不过好像这里面可以进行修改

修改宏macro

  • 到最底下找一个空地
  • "ap把a寄存器里面的东西粘贴出来
  • 进行修改

图片描述?

  • "byy

    • 再把本行复制到b寄存器
  • 一路u撤销到一个合适的位置
  • @b

    • 执行宏b一次
    • 好像仍然是好使的
  • 3@b

    • 执行b宏3次

宏的直接赋值

  • :let @z = @a
  • 这样就可以直接把a寄存器里面的东西直接给z寄存器
  • 也就相当于宏的赋值
  • :reg也可以看到宏z赋值之后的状态

追加寄存器

图片描述?

  • qA

    • 追加录制a宏
  • kA//this is lib.^[jq

    • k 向上一行
    • A 在本行尾部追加
    • //this is lib 写下注释
    • ^[ 退出插入模式
    • j 向下一行
    • q结束录制
  • 追加的内容会追加到a宏里面

图片描述?

优化宏

  • 这里有个jk先向下再向上

图片描述?

  • 可以先粘贴出来然后修改
  • 最后再复制到a寄存器

    • "ayy
  • 相当于优化了宏

总结

  • 关于宏,这次有4个要点

    • qa 开始录制宏
    • q 结束录制宏
    • @a 应用宏
    • qA 追加录制宏
  • 甚至可以编辑宏

    • "ap 把宏作为文本粘贴出来
    • 编辑之后
    • "ayy把新的宏装在进入a寄存器reg
  • 这个宏还可以怎么玩呢???
  • 下次再说!
    [Github地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)
    [Gitee地址] (overmind1980/oeasyvim)
    [蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)

?