宏的进阶 macro

回顾

  • 对于宏,上次有4个要点

    • qa 开始录制宏
    • q 完结录制宏
    • @a 利用宏
    • qA 追加录制宏
  • 甚至能够编辑宏

    • "ap 把宏作为文本粘贴进去
    • 编辑之后
    • "ayy把新的宏装在进入a寄存器reg
  • 这个宏还能够怎么玩呢?

建设环境

  • vi oeasy.txt
  • 插入一下内容

    • a. oeasy
    • b. o2z
    • c. o3z
    • d. o9z

录制新宏

  • qa0W~hjq

    • qa 在a寄存器外面开始录制
    • 0 到行头
    • W 跳一个大词
    • ~ 扭转以后光标地位字符的大小写
    • j 向下一行
    • q 进行录制
  • 查看宏

    • :reg a

利用宏

  • 失常模式下间接命令的形式

    • @a

      • 利用到以后行
    • 99@a

      • 利用99行
  • u回来
  • 用命令行的形式

    • :normal @a

      • 切换到normal模式并对以后行执行@a
    • :2,4 normal @a

      • 切换模式并对2-4行执行@a
  • u回来

追加宏

  • gg 回到最后
  • qAkA.<Esc>jq

    • qA 追加录制宏到a寄存器
    • k 是为了对消下面的 j
    • A 追加在本行最初
    • .写一个.
    • <Esc> 退回到失常模式
    • j 向下一行
    • q 退出录制
  • 这部分内容,就被追加到宏a外面

    • 能够:reg a看到
    • 0W~hjkA.<esc>j
  • :% normal @a
  • u回来

批改宏 macro

  • :reg a
  • 目前0W~hjkA.<esc>j

    • jk彼此对消
  • 在文档最初把寄存器a中的存储的宏粘贴进去

    • Go"ap进去
    • 批改为0W~A.<esc>j
  • 从新定义宏a

    • "ay$
  • 察看宏a

    • :reg a
  • 批量执行

    • :% normal @a

多文件执行

 

  • 除了oeasy.txt之外
  • 还有o2z.txto3z.txt

    • :!cp oeasy.txt o2z.txt
    • :!cp oeasy.txt o3z.txt
  • 批量执行

    • :arga *.txt

      • 增加以后文件夹下的所有txt文档
    • :args

      • 列出所有参数
    • :argdo g/.*/normal @a

      • 对于args中的每个文件中的每一行执行a这个宏
      • g global全局执行
      • 匹配任何字符匹配每一行.*
      • 如果是o.*对应的是以o结尾的每一行
      • normal @a 失常模式下执行@a
    • :argdo w

      • 保留所有文件批改

疾速执行

  • @@

    • 执行上一条宏
  • :2,5@

    • 第2-5行执行上一条宏

递归执行宏

  • 文件还是这样的oeasy.txt

    • a. oeasy
    • b. o2z
    • c. o3z
    • d. o9z
  • qaqqa0W~j@aq

    • qaq

      • 把a宏清空
    • qa

      • 开始录制a
    • 0

      • 到第一列
    • W

      • 跳大词
    • ~

      • 扭转大小写
    • j

      • 往下跳一行
    • @a

      • 执行宏a
    • q

      • 进行录制
  • 而后运行
  • 这样他就是本人执行本人
  • 直到最初一行无奈再递归调用
  • 就主动跳出了

并行执行

  • 有素材如下

    • import { FUNC1 } from "oeasy";
    • import { FUNC2 } from "o2z";
    • import { FUNC3 } from "o3z";
    • import function from "o9z";
    • import { FUNC4 } from "o9z";
    • import { FUNC5 } from "orz";

    -录制宏

  • qa0f{gui{jq

    • qa

      • 开始录制宏a
    • 0

      • 到第1列
    • f{

      • 跳到{
    • gui{

      • 把{}外面的内容小写
    • j

      • 往下一行
    • q 进行录制
  • 运行宏

    • 99@a
    • 会卡到第4行
    • 因为找不到{
  • 这个时候能够并发执行

    • :1,$ normal @a
    • 从第1行到最初一行每一行都在normal模式下执行@a

总结

  • 对于宏,咱们回顾一下

    • qa 开始录制宏
    • q 完结录制宏
    • @a 利用宏
    • qA 追加录制宏
    • 管制寄存器内容其实就是管制宏
  • 宏还有一些个性

    • 能够多文件执行宏
    • 能够并发运行宏
    • 能够递归执行宏
  • 宏是随录随用的的
  • 我想把一些货色固定下来,让他到时候不必定义就能执行
  • 能够么?
  • 下次再说!
    [Github地址] (https://github.com/overmind19...)
    [Gitee地址] (https://gitee.com/overmind198...)
    [蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/course...)