Skip to content

Latest commit

 

History

History
164 lines (119 loc) · 3.43 KB

81-182652-宏_macro.sy.md

File metadata and controls

164 lines (119 loc) · 3.43 KB
show version enable_checker
step
1.0
true

宏 macro

回忆

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

建立环境

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

图片描述

录制宏macro

  • qa
    • 录制叫做a的宏

图片描述

  • 这个记录中 @a 就录制进了vim的宏库

  • 可以随时调用录制完成的宏

  • 比如

  • I#include "

    • 在本行前面插入内容
  • q

    • 结束录制
  • 划重点

    • 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
  • 这个宏还可以怎么玩呢?🤔
  • 下次再说!