什么是宏

计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。

在vim中,也有宏功能,低调而强大,今天给大家详细介绍一下。

vim中宏定义

宏定义使用非常简单,一共以下几个步骤即可完成宏定义:

1. 在命令模式下,按下键盘q,开启宏模式。

2. 再次按下任意一个你想定义的按键,该键被宏定义。

3. 录制你想要操作了一系列指令。

4. 再次回到命令模式下,再次按下q,结束录制。

5. 以后每次在命令模式下,按下@符号,再按下之前设置的宏定义按键,即可自动完成所有宏操作。

这里以字母h为例,我想对h进行宏定义,对每行内容进行php的var_dump输出,那么具体操作如下。

1. 将光标移到某一行开头,并按下q,开启宏定义,切记不要双击q,不然就变成了对q的宏定义了。

2. 按下h,对h进行宏定义,此时左下角会显示recording提示。

3. 在recording下,所有按键都会被记录到宏定义中。按下i,进入插入模式。

4. 输入字符串var_dump("。

5. 按下esc,回到命令模式,按下$符号,将光标移动到行尾。

6. 按下a,进入插入模式,输入字符串");,按下esc,所有操作完成,并回到命令模式。

7. 再次按下q,完成宏定义录入。

8. 选中下一行内容,按下@,再按下h,神奇一幕出现,自动完成了var_dump函数的编写。

酷炫的demo

1. 打开一个空文件,即将展示一个自动写入序列

root@localhost [~] vim demo.txt

2. 进入插入模式,按下数字1

root@localhost [~] vim demo.txt

1

3. 开启recording模式,并使用字符a进行宏定义

esc --> q --> a

4. copy当前行,并复制到下一行

yy copy当前行

p 复制到下一行

root@localhost [~] vim demo.txt

1

1

5. 将复制的那行数字自增加一

光标下移

Control + a,数字增加1

root@localhost [~] vim demo.txt

1

2

6. 退出recording

按q键

7. 神奇的增长

在当前行,按下 98@a

屏幕如下,是不是很棒,正好100行:

至此,你已经学会了vim的recording功能,在学习工作中去使用吧!

linux宏命令编辑,linux-vim宏定义(三)相关推荐

  1. 如何在Linux kernel Makefile中添加宏定义

    如何在Linux kernel Makefile中添加宏定义: CFLAGS_object.o += -DMACRO_NAME 在编译object.o时定义宏MACRO_NAME,在kernel中添加 ...

  2. linux中offsetof与container_of宏定义

    linux内核中offsetof与container_of的宏定义 #define offsetof(TYPE, MEMBER)    ((size_t) &((TYPE *)0)->M ...

  3. linux下查看系统自身宏定义

    跨平台程序,经常要用到区分系统的宏定义,比如windows中的WIN32, WIN64, Linux中的 unix, linux等等系统自定义宏 那么在linux下面,怎么查看系统有哪些自定义宏咧,用 ...

  4. linux驱动 打印变量,linux驱动 内核函数 变量 宏定义

    insmod modprobe(自动检测 模块加载时需要的别的模块) rmmod 用户空间工具, 加载模块到运行中的内核以及去除它们. #include module_init(init_functi ...

  5. java宏定义三目运算define_宏定义的正确写法,三目运算的宏定义

    摘要: 宏,分为两类: 1.对象宏(object-like macro) 对于对象宏来说确实相对简单,但却也不是那么简单 的查找替换 2.函数宏(function-like macro) 函数宏顾名思 ...

  6. linux 宏的作用域,Linux 系统编程:几个宏定义

    __init宏使内建模块中的init函数在执行完成后释放掉,仅用于初始化.编译器将所有代码存储到特殊的内存段中,初始化结束就释放这段内存. __initdata,和__init的作用基本上一样,不过它 ...

  7. linux 内核 LINUX_VERSION_CODE 和 KERNEL_VERSION 宏定义 版本信息

    由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件 /usr/include/linux/versio ...

  8. linux保存编辑信息,linux系统编辑神器 -vim用法大全

    vim编辑器 文本编辑器,字处理器 ASCIInano, sed vi: Visual Interface vim: VI iMproved 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式 ...

  9. Linux 开发环境搭建与使用——Linux 常用编辑器之vim

    1)使用 vi 打开文件 vi filename:打开或新建文件,并将光标置于第一行行首 如果文件不存在,则会新建文件,如下: 如果文件存在,即为打开文件,打开文件后,按 "i" ...

最新文章

  1. 四元数姿态解算及多传感器融合详细解析
  2. 旺财速啃H5框架之Bootstrap(六)
  3. ubuntu 下pip3 与pipenv 安装使用错误
  4. abb机器人离线编程软件叫做_滨州abb机器人离线编程软件
  5. PS大神最全脑洞合集
  6. ARM 开发板修改MAC地址
  7. 2019年六项扣除 个税计算器
  8. 尾行4攻略女仆计算机密码,【尾行4攻略女仆不动】尾行2,攻略(共10篇)
  9. 网盘翻车不断,我是如何低价自建一个自用网盘
  10. 泰克mdo3014使用手册_泰克示波器MDO3014故障维修案例分享
  11. 教你如何有效防止DDos攻击?
  12. 贪心问题(Python代码实现)——磁带最优存储问题
  13. IDEA搭建一个SpringBoot项目——十分详细(web+mysql)
  14. 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)
  15. linux节点状态 slurm,linux – 为什么slurm中的作业在TensorFlow脚本中无限期冻结?
  16. Java中你最擅长什么_你最擅长的领域是什么
  17. js 写一个简单的搜索关键字
  18. Charles 抓包工具 报You may need to configure your browser or application to trust the Ch......错误
  19. 无线通讯 - 5G芯片和5G模组区别
  20. 如何防止数据泄密和丢失?22项安全策略,守护企业数据安全

热门文章

  1. SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
  2. TensorFLow 常用错误总结
  3. python科学计算笔记(八)pandas大数据HDF5硬盘操作方式
  4. 【leetcode】1001. Grid Illumination
  5. 专家支招:如何利用Plesk搭建完美全能开发环境
  6. iOS - AsyncSocket 的使用
  7. 跟我一起数据挖掘(10)——HP Vertica
  8. Java安全编码之用户输入
  9. http介绍(3)http1.0 和http1.1 区别
  10. vlc框架流程解析(转)