使用Vim Macro功能,可以在编辑器中记录和播放一系列动作。
本文使用两个详细的示例说明如何在Vi和Vim编辑器中执行记录和播放。
在Vim中录制和播放的高级步骤
- 通过按q开始记录,然后按小写字母命名宏
- 在Vim编辑器中执行任何典型的编辑和操作,这些将被记录
- Stop 记录 通过 pressing q
- 按@,然后按宏名称,播放录制的宏
- 要多次重复宏,请按:NN @宏名称。 NN是一个数字
示例1:使用Vim宏在文件内部生成序列号
1.启动sequence-test.txt文件以生成序列。
$ vim sequence-test.txt
2.进入插入模式并输入“1 .” as shown below
类型:Esc i,然后按1。
$ vim sequence-test.txt 1.
3.开始录制并将其存储在寄存器a中。
类型:Esc q,后跟一个
- q indicates to start the 记录
- a indicates to store the 记录s in register a
- 当您执行q a时,它将显示“recording”在vi的底部。
4.将第一行复制到第二行以使两行带有1。如下所示
类型:Esc yy,然后按p
- yy将复制当前行
- p will 糊 the line that was just copied
$ vim sequence-test.txt 1. 1.
注意: Vim will still show 记录 at the bottom as shown below.

图: Vim showing 记录 message at the bottom
5.增加数量。
类型:控制一个
通过将光标放在第二行,按Ctrl + a,将数字递增到2。如下所示。
$ vim sequence-test.txt 1. 2.
注意: vim will still show 记录 at the bottom.
6. Stop the 记录
类型:q
Press q to stop the 记录. 您’将会注意到,vim底部的录制消息现在已消失。
7. Repeat the 记录 98 times.
类型:98 @ a
- 现在,通过键入98 @ a重复此工作
- @a重复宏“a” 上e time.
- 98 @ a重复宏“a”98次生成序列号1–100,如下所示使用宏。

图:使用宏在Vim中生成序列号
示例2:用不同的参数重复Vim宏
本示例说明如何执行具有不同输入的相同命令。即用不同的参数构架相同的命令。
在执行宏之前:change-password.sql
$ vim change-password.sql Annette Warren Anthony Preston Kelly Taylor Stiller Dennis Schwartz
记录并执行宏后:change-password.sql
$ vim change-password.sql ALTER USER Annette IDENTIFIED BY 'Annette'; ALTER USER Warren IDENTIFIED BY 'Warren'; ALTER USER Anthony IDENTIFIED BY 'Anthony '; ALTER USER Preston IDENTIFIED BY 'Preston'; ALTER USER Kelly IDENTIFIED BY 'Kelly '; ALTER USER Taylor IDENTIFIED BY 'Taylor'; ALTER USER Stiller IDENTIFIED BY 'Stiller'; ALTER USER Dennis IDENTIFIED BY 'Dennis'; ALTER USER Schwart IDENTIFIED BY 'Schwart';
1.打开仅包含名称的change-password.sql。
$ vim change-password.sql Annette Warren Anthony Preston Kelly Taylor Stiller Dennis Schwartz
2.开始录制并将其存储在寄存器a中。
类型:q a
- q indicates to start the 记录
- a indicates to store the 记录s in register a
- 当您执行q a时,它将在vi的底部显示消息记录。
3.进入插入模式并输入ALTER USER
类型:I(大写i),然后是“ALTER USER ”
将光标放在第一行的任意位置,然后按I。这将带您到该行的第一个字符。输入ALTER USER
4.复制下一个单词(即名称)
类型:Esc w yw
- 按Esc,然后按w转到下一个单词(name)。
- yw,复制当前单词(name)。
5.转到末尾并输入IDENTIFIED BY‘
类型:Esc A,后跟” IDENTIFIED BY ‘”
- 按Esc键,再按A键将光标移至该行的末尾,然后键入空格。
- 类型IDENTIFIED BY‘
6.粘贴复制的名称
类型:Esc p
Press Esc, and then type p to 糊 the name that was copied in the step #4.
7.在最后填写报价。
类型:Esc A,后跟‘;
按Esc键,然后按A到行尾,然后‘;
8.跳到下一行并停止记录。
类型:Esc j,后跟q
- j移至下一行。
- q to stop the 记录
注意: vi底部显示的录制消息现在将消失。在此阶段,change-password.sql将如下所示。

图: Vim Macro completed the 记录
9.用相应行中的参数重复宏
类型:8 @ a
- 现在通过键入8 @ a重复此作业8次
- @a重复宏“a” 上e time.
- 8 @ a重复宏“a”如下所示,自动完成了8次该行的其余部分

图:Vim宏播放完成
推荐读物
Vim 101骇客,作者:Ramesh Natarajan。我是一个命令行迷。因此,我自然很喜欢Vi和Vim编辑器。几年前,当我在Linux上编写大量C代码时,我常常阅读所有可用的Vim编辑器技巧和窍门。根据我的Vim编辑器经验,我’已编写了Vim 101 Hacks电子书,其中包含有关各种Vim高级功能的101个实用示例,这些将使您在Vim编辑器中快速高效地工作。即使您已经使用Vi和Vim编辑器好几年了,而且还没有读过这本书,也请您帮个忙,并阅读这本书。 Vim编辑器的功能会让您惊讶。
很棒的Vim编辑器文章
以下是一些很棒的Vi / Vim编辑器 教程 对您可能会有所帮助。
- 使用Vimperator附加组件为具有Vim编辑器功能的Firefox浏览器提供涡轮增压
- Tutorial: Make Vim as 您r C/C++ IDE Using c.vim Plugin
- 将Vim编辑器转换为适用于任何编程语言的漂亮源代码浏览器
- 12个功能强大的Vim编辑器查找和替换示例
注意: 请 subscribe to 极客的东西不要错过任何未来 Vi和Vim编辑器提示和技巧.
如果您喜欢这篇文章,您可能还会喜欢..
![]() |
![]() |
![]() |
![]() |
嗨,谢谢你的g
如果你有时间 。在vim中写寄存器–非常有趣且有问题的主题。非常感谢!