乐趣区

关于vim:oeasy教您玩转vim-81-宏macro的进阶

宏的进阶 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…)
退出移动版