Vim中宏命令的使用实例详解
作者:Ein Verne 发布时间:2021-12-09 09:17:00
前言
Vim 的设计哲学中有这样一句话:”if you write a thing once, it is okay. However if you're writing it twice or more times, then you should find a better way to do it”.
Vim 的 Macro 就是用来解决重复的问题。在 Vim 寄存器的文章里面已经对 macro 有所涉及, macro 的操作都是以文本的方式存放在寄存器中。
宏是一组命令的集合,应用极其广泛,包括MS Office中的word编辑器,excel编辑器和各种文本编辑器,Linux系统中最强大的文本编辑器之一的VIM同样支持宏操作,本节内容简要说明一下宏在VIM中使用,首先看下面几个宏的命令
q* 开始录制宏
q 停止录制宏
@* 执行宏
@@ 重复执行上次的@*命令一次
以上命令均是在VIM的一般模式(Normal)下使用的,其中*代表一个数字和单词字符,正则表达式规则是:[0-9a-zA-Z]
:help recording 查看宏帮助
比如在一般模式下输入qq会看到vim下方的状态栏出现recording,此时表示已经开始录制宏到寄存器q中,也可以把q作为宏的id,此时进行的命令都会被录制到宏中,再次在一般模式下按q即停止宏的录制,后面即可通过@q来调用该宏了
简单使用
录制 macro,使用 q + [a-z] 26个字母中的一个
q[a-z]
之后的命令都会被记录,然后结束时再按一下 q 。
执行 macro 的时候,在寄存器前加 @ ,比如记录在寄存器 a 中
10@a
执行 10 遍a寄存器中记录的命令。
@@
再执行一遍上一次的命令。
编辑 macro
假设已经有一个 macro 保存在了 a 中,可以使用
:let @a='
输入Ctrl + r + a 来插入 a 中内容;
编辑内容然后以 ' 结束 Enter 退出
查看 macro
macro 内容保存在 a 中,直接使用 :reg a 来查看内容即可。
举例
经典的注释和尾部添加
注释,或者在每一行的末尾添加特定字符,比如在每行末加上分号”;” ,对于这个操作 Vim 中有太多的方式可以完成,比如说替换 :%s/$/;/g ,比如说 . 命令,再比如这里要使用的 macro :
int a = 1
int b = 2
int c = a+b
print a
print b
print c
如果是用 . 来实现的话,首先在第一行执行A;,然后重复5次执行j.,对于这种简单文件来说很容易使用,但是如果这个文件有 1000 行,那么显然 . 命令是不可行的。使用 macro , 可以先录制一遍,然后在 1000 行上执行便可。
比如可以在normal模式下使用 qaA;<Esc>jq
qa 开启录制,存入 a 寄存器
A 在行尾进入插入模式
; 插入分号
<Esc> 退出插入模式
j 下一行
q 退出录制
此时 a 寄存器中就保存了当前行的操作,在当前行添加 ; 并将光标移动到下一行。
录制结束后就可以使用 @a
1000@a
执行1000遍 macro ,就能将下面1000行尾部添加 ;
递增数字
可以使用 macro 实现插入 1 到 100 个数字,每一行自增一:
1
2
3
...
100
首先在第一行插入1,然后光标定位了“1”处,进入normal模式
输入一下命令
qayyp<Ctrl>aq
yyp 拷贝一行再粘贴在新的一行,
<Ctrl>a 数字+1
q 结束录制
最后执行
98@a
来源:http://einverne.github.io/post/2017/11/vim-macro.html
猜你喜欢
- 近来小站遇到了盗链问题,至使网站的流量枉费流失,于是被迫准备为服务器安装防盗链机制以挽救本就不宽裕的带宽。通过G.CN和B.CN搜索后得出了
- 每周我都会拿到两到三个网站设计的订单,有些是从老客户那里来的,但更多的是来自一些不相识的随机出现的人那里,有时甚至来自一些网络名人或者是知名
- 因为需要配置固定IP,在网上找了很久终于找到一个可行的例子,自己配置成功了。1.首先获取你的GATEWAY方便后面在cento系统配置里使用
- 登录到Godaddy,然后点解导航菜单 Domain Manager 然后在域名管理页面点击菜单中的 Panding Transfers 这
- 在Ubuntu Server 10.04中默认由apt方式安装的Apache,指定网页主目录位于:/var/www。而我需要将其更改为: /
- 老谢今天来说说怎么找到新闻点来写软文.希望对大家企业软文推广提供些帮助!1、 产品。如果你的企业开发了非常有价值的新产品,这也许就是一个大大
- 一、用拷贝的内容替换当发生拼写错误或者想要重命名标识符时,就需要用拷贝的内容来替换当前的名字。比如调用函数时写错了:void letus_f
- 11月26日消息,腾讯科技今日独家获悉,谷歌中国今年9月展开的5000万元中小企业激励计划,将于11月30日结束。至此,谷歌中国针对中小企业
- 一、这里太专业,你插不上嘴?答:没你想象的那么专业。我学中文的,洪波也是学中文的,我们都能如鱼得水,你一定也行。陈一舟学物理的,我在武汉问他
- 随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务
- 严格来说,我根本算不上是个站长,可我一直以站长自居。每当有人问起我的职业,我都是说自己是站长,引来不少朋友的羡慕。还引来不少MM的仰慕。其实
- 来学习一下多次执行同一条命令的不同类型的循环。awk 脚本有三个主要部分:BEGIN 和 END 函数(都可选),用户自己写的每次要执行的函
- 很显然,微软的放手并没有影响雅虎自己的计划。有消息称,雅虎将在本周中宣布与Google结成合作伙伴关系,在其搜索结果旁边放置Google提供
- 最近,Google对AdWords规则进行了调整,如果你按以下方法去做可能会看到效果:开发关键词,在美国本地运作而不要使用全国性搜索巨头的关
- 一、下载树莓派系统镜像文件下载链接:https://www.raspberrypi.com/software/raspberry-pi-de
- 有GoDaddy用户问“从我的旧服务器的域名服务器重新定位前,能在我的新托管帐户上运行脚本吗?”答案是否定的,此时还没有到服务器的真实路径,
- 为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享。这里主要讲的是在Windows下用 V
- 如果你负担不起付费主机,那免费使用的虚拟主机往往是最好的选择。但在你决定使用免费主机以前有几点是你必须要注意的,最重要的是你不能期望和要求免
- 基于搜索引擎笨拙的算法,很多人只能在友情链接上苦苦的奔波,至于何时才能脱离链接的苦海,耐心等待引擎熟悉这块领土。不少好奇的人群对SEO这门技
- 根据中国互联网络信息中心(CNNIC)《2008年中国搜索引擎用户行为研究报告》的调查显示,截至2008年底,中国搜索引擎用户规模达到2.0