宏 macro

回忆

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

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

建立环境

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

录制宏macro

  • qa

    • 录制叫做a的宏

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

    • 在本行前面插入内容
  • 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
  • 相当于优化了宏

总结

oeasy教您玩转vim - 80 - # 宏macro的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. 深入学习Semantic Kernel:创建和配置prompts functions

    引言 上一章我们熟悉了一下 Semantic Kernel 的理论知识,Kernel 创建以及简单的Sample熟悉了一下 SK 的基本使用.在Semantic Kernel中的 kernel fun ...

  2. django中实现Markdown

    分为两个部分: ------------后台使用Markdown编辑 ------------前端使用Markdown展示 准备工作: pip install django-mdeditor # 用于 ...

  3. Uni-app极速入门(一) - 第一个小程序

    Uni-app 介绍 官网:https://www.dcloud.io/index.html uni-app是为js开发者提供的一个全端开发框架,可以开发一次编译为web.App.小程序(微信/阿里/ ...

  4. PaddleOCR之高性能Go语言实现OCR识别

    最近为了让python语言能够直接调用PaddleOCR的C++的动态链接库,针对本人已经开源的PaddleOCR项目https://gitee.com/raoyutian/paddle-ocrsha ...

  5. ARM汇编基础

    1 GNU语法 1.1 GNU汇编 GNU 汇编语法适用于所有的架构,并不是 ARM 独享的,GNU 汇编由一系列的语句组成,每行一条语句,每条语句有三个可选部分,如下: label: instruc ...

  6. Github Fork仓库的冲突与同步管理

    在使用Github进行协作开发时,fork一个仓库并在本地进行开发是常见的工作流程.然而,当源仓库(上游仓库)有了更新时,如何同步这些更新并解决可能的合并冲突是一个关键问题.本文将详细介绍如何管理这些 ...

  7. vue3 函数式组件

    今天看vue3中文文档 看到函数式组件不太理解上面写的 然后自己写了一下才理解上面的自己记录一下 先在子组件里面写上 <script> // dynameic 组件 import { h ...

  8. MYSQL 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例。

    一: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例.DbType="MySql";ConfigId=&quo ...

  9. 解读surging 的内存过高的原因

    前言 对于.NET开发人员来讲,一个程序占用内存过高,是极其糟糕,是一款不合格的程序软件,.NET开发人员也不会去使用服务器垃圾收集器(ServerGarbageCollection),而是选用工作站 ...

  10. 跨域iframe 配置fullscreen权限

    在新版本的 Chrome 等浏览器中,默认情况下禁止了跨域 iframe 开启全屏的权限.在 iframe 中,我们通常使用 element.requestFullscreen() 方法来进行全屏展示 ...