学会Vim下宏的使用,为你省下一个年假!

简介: 工作中,对于文本文件的编辑我们经常有这样的需求:多次重复输入一段相同文本;生成一段序列化的文本;每行文本插入一句相同的文本。

工作中,对于文本文件的编辑我们经常有这样的需求:

  • 多次重复输入一段相同文本;
  • 生成一段序列化的文本;
  • 每行文本插入一句相同的文本。

除此之外,还有很多需要重复操作的动作。对于这些需求,如果我们人工去操作的话,肯定是非常枯燥乏味,并且要浪费很多时间精力。这时, Vim 宏就派上用场了,它可以通过一些简单的步骤快速完成这些重复性的操作,省时省力!下面详细讲解。

宏的录制和运行

宏的录制

  1. 在 Vim 编辑器中创建新文件或打开现有文件;
  2. q 并跟上 宏名 开始录制。假设我们想要将宏名命名为 b ,则按 Escqb 开始录制;
  3. 文本编辑ing……
  4. q 停止录制。至此,宏的录制已完成。

宏的运行@宏名 即可运行宏一次,按 次数@宏名 重复运行宏多次。下面给出实例来详细介绍。

示例-1:使用宏多次生成相同的文本

例如我们要生成 100 行一样的文字,一种比较笨的办法就是复制然后粘贴所需要的遍数。这种效率非常低,而且非常容易出错。有了宏这个工具,一切变得超级简单!首先,我们在 Vim 编辑器中创建一个名为 file1.txt 的新文件。

微信图片_20220413190940.jpg

然后,我们按 q 之后再按 z 开始录制宏。这里的 z 就是 宏名 ,后面会用到。如果录制正确,底部就会出现 recording @z 字样。

微信图片_20220413190944.jpg

再之后,按 i 然后输入要需要重复的文本。比如这里输入文本 Learning Vim Macros

微信图片_20220413190947.jpg

最后按 q 停止录制,这时 recording @z 就会从底部消失。这样,一个名为 z 的 宏就录制完成了,后续我们就可以利用这个宏来重复完成文字录入工作。

微信图片_20220413190952.jpg

如果你想运行一次刚刚创建的宏,那么将光标移动到文件的所需位置,然后并按 @z 就可以了,这时文字就会被复制一遍。

微信图片_20220413190958.jpg

如果你想要复制 N 多次这行文字,则可以多次运行刚刚那个宏。此时只需在宏前面加 次数 即可。例如 4@z 就可以运行刚才的宏 4 次,相应文字就会被复制 4 遍。

微信图片_20220413191002.jpg

示例-2:使用宏生成序列号

在示例-1里我们是机械重复复制一堆一样的文字,那如果想要生成带序列的文本该如何处理?使用宏也可以轻松完成!假设我们要生成 101-110 的一系列数字,我们一起来完成这个需求。首先,在 Vim 编辑器中创建一个名为 file2.txt 的新文件,接着按 i 键入 101.

微信图片_20220413191006.jpg

ESC 退出键入。然后再按 qy 以宏名称 y 开始录制后续的操作。我们将光标移到第一行的开头并按 yy 复制文本,然后按 p 将文本粘贴到下一行。

微信图片_20220413191011.jpg

接着,按 Ctrl + a 将第二行的值从 101 增加到 102 。最后,像之前一样按 q 停止录制,我们的宏就制作完成了。接下来,就是见证奇迹的时刻!我们键入 8@y ,刚刚所录制的宏就会运行 8 次,生成从 103110 的连续数字。一键操作,简单高效!这对于一些带有序列性的文本非常有用,你就无需再重复去做 复制-->改数字 这样重复枯燥的工作,同时效率也会大大提升!

微信图片_20220413191014.jpg

示例-3:在文件的每一行中添加相同的文本

我们在操作数据库的时候,很多情况下一些语句非常相似,比如 insert into items values(100, 20077100050, alvin) 这样的文本,会重复很多次。假如我们现在已经有了要插入的数据,如何快速生成多条 SQL 语句?在这个例子里,我们假设数据文件 file3.txt 有 4 条数据,如下图示。首先,我们在 Vim 编辑器中打开数据文件 file3.txt ,然后按 ESC ,再然后按 qd 以宏名 d 开始录制。

微信图片_20220413191018.jpg

将光标转到文件的开头,按 i 键插入文本。然后再输入 insert into items values( ,再接着按 ESCwyw 5 次。在这里,w 用于转到下一个单词,yw 用于复制当前单词。之所以这里要 5 次是因为这里每行有五部分。分别是 11001,HDD,Samsung (注意逗号也算一部分)。之后,按 ESCa 键将光标移动到行尾,再输入 );

微信图片_20220413191022.jpg

最后,按 j 然后按 q 。这里,j 用于移动到下一行,q 用于停止录制。这样我们所需要的宏就制作完成了。现在,我们想要让下面剩下的 3 行的文本都处理成第一行那样的格式,直接按 3@d 运行宏 3 次就可以实现。这样一来,在数据库中进行插入就会方便很多,而且我们无需手动一个个去更改,简单高效!

微信图片_20220413191026.jpg

结论

我们在写代码过程中,有很多场合文本、代码高度相似,如果我们手动去一个个修改的话,那效率将会非常低。有了 Vim 下宏这个神器,我们可以通过创建和使用不同类型的宏来完成这些重复性工作,从而节省时间和精力,实现高效编辑。



目录
相关文章
|
4月前
|
Unix Linux 开发工具
但凡会点Vim编辑技巧,不至于被说成是很水的网工了。
但凡会点Vim编辑技巧,不至于被说成是很水的网工了。
|
6月前
|
XML 前端开发 Shell
技术心得记录:我的VIM配置
技术心得记录:我的VIM配置
36 0
|
机器学习/深度学习 数据可视化 开发工具
Vim 高级操作一看就会
Vim 高级操作一看就会
Vim 高级操作一看就会
|
Unix Linux 程序员
5.2 Vi和Vim之间到底有什么关系?
我们知道,Vi 编辑器是 Unix 系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。
213 0
5.2 Vi和Vim之间到底有什么关系?
|
定位技术 开发工具
oeasy教您玩转vim - 5 - # 插入模式
oeasy教您玩转vim - 5 - # 插入模式
205 0
|
存储 开发工具
oeasy教您玩转vim - 6 - # 保存修改
oeasy教您玩转vim - 6 - # 保存修改
185 0
|
开发工具 数据可视化 Shell
Vim的使用技巧---世上最好用的编辑器
愿把每一件事做好 vim是一个模式化的编辑器,它一共有三种模式,编辑模式(命令模式)、输入模式、末行模式。 三种模式之间的切换如下图: vim.png 从图中可以看出,可以在编辑模式下可以随意切换到输入模式和末行模式,而输入模式和末行模式只能切换回编辑模式(命令模式)。
1074 0