亲宝软件园·资讯

展开

老板说,Vim宏都不会用,你的工作效率太低啦~

良许Linux 人气:0
工作中,对于文本文件的编辑我们经常有这样的需求: - 多次重复输入一段相同文本; - 生成一段序列化的文本; - 每行文本插入一句相同的文本。 除此之外,还有很多需要重复操作的动作。对于这些需求,如果我们人工去操作的话,肯定是非常枯燥乏味,并且要浪费很多时间精力。 这时, Vim 宏就派上用场了,它可以通过一些简单的步骤快速完成这些重复性的操作,省时省力!下面详细讲解。 #### 宏的录制和运行 **宏的录制** 1. 在 Vim 编辑器中创建新文件或打开现有文件; 2. 按 `q` 并跟上 `宏名` 开始录制。假设我们想要将宏名命名为 `b` ,则按 `Esc` 和 `qb` 开始录制; 3. 文本编辑ing…… 4. 按 `q` 停止录制。至此,宏的录制已完成。 **宏的运行** 按 `@` 接 `宏名` 即可运行宏一次,按 `次数` 接 `@宏名` 重复运行宏多次。 下面给出实例来详细介绍。 #### 示例-1:使用宏多次生成相同的文本 例如我们要生成 100 行一样的文字,一种比较笨的办法就是复制然后粘贴所需要的遍数。这种效率非常低,而且非常容易出错。有了宏这个工具,一切变得超级简单! 首先,我们在 Vim 编辑器中创建一个名为 `file1.txt` 的新文件。 ![file](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101328038-2014297418.jpg) 然后,我们按 `q` 之后再按 `z` 开始录制宏。这里的 `z` 就是 `宏名` ,后面会用到。如果录制正确,底部就会出现 `recording @z` 字样。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101329280-524990094.jpg) 再之后,按 `i` 然后输入要需要重复的文本。比如这里输入文本 `Learning Vim Macros` 。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330536-500314282.jpg) 最后按 `q` 停止录制,这时 `recording @z` 就会从底部消失。这样,一个名为 `z` 的 宏就录制完成了,后续我们就可以利用这个宏来重复完成文字录入工作。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330701-1117126254.jpg) 如果你想运行一次刚刚创建的宏,那么将光标移动到文件的所需位置,然后并按 `@z` 就可以了,这时文字就会被复制一遍。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330927-107793373.jpg) 如果你想要复制 N 多次这行文字,则可以多次运行刚刚那个宏。此时只需在宏前面加 `次数` 即可。例如 `4@z` 就可以运行刚才的宏 4 次,相应文字就会被复制 4 遍。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331105-432440456.jpg) #### 示例-2:使用宏生成序列号 在示例-1里我们是机械重复复制一堆一样的文字,那如果想要生成带序列的文本该如何处理?使用宏也可以轻松完成! 假设我们要生成 `101-110` 的一系列数字,我们一起来完成这个需求。 首先,在 Vim 编辑器中创建一个名为 `file2.txt` 的新文件,接着按 `i` 键入 `101.`。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331314-2023174615.jpg) 按 `ESC` 退出键入。然后再按 `qy` 以宏名称 `y` 开始录制后续的操作。我们将光标移到第一行的开头并按 `yy` 复制文本,然后按 `p` 将文本粘贴到下一行。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331968-456396253.jpg) 接着,按 `Ctrl + a` 将第二行的值从 `101` 增加到 `102` 。最后,像之前一样按 `q` 停止录制,我们的宏就制作完成了。 **接下来,就是见证奇迹的时刻!** 我们键入 `8@y` ,刚刚所录制的宏就会运行 8 次,生成从 `103` 到 `110` 的连续数字。一键操作,简单高效! 这对于一些带有序列性的文本非常有用,你就无需再重复去做 复制-->改数字 这样重复枯燥的工作,同时效率也会大大提升! ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332176-1085919111.jpg) #### 示例-3:在文件的每一行中添加相同的文本 我们在操作数据库的时候,很多情况下一些语句非常相似,比如 `insert into items values(100, 20077100050, alvin)` 这样的文本,会重复很多次。假如我们现在已经有了要插入的数据,如何快速生成多条 SQL 语句? 在这个例子里,我们假设数据文件 `file3.txt` 有 4 条数据,如下图示。 首先,我们在 Vim 编辑器中打开数据文件 `file3.txt` ,然后按 `ESC` ,再然后按 `qd` 以宏名 `d` 开始录制。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332368-1403149023.jpg) 将光标转到文件的开头,按 `i` 键插入文本。然后再输入 `insert into items values(` ,再接着按 `ESC`, `w`, `yw` 5 次。 在这里,`w` 用于转到下一个单词,`yw` 用于复制当前单词。之所以这里要 5 次是因为这里每行有五部分。分别是 `11001` `,` `HDD` `,` `Samsung` (注意逗号也算一部分)。 之后,按 `ESC` 和 `a` 键将光标移动到行尾,再输入 `);` 。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332575-1198119713.jpg) 最后,按 `j` 然后按 `q` 。这里,`j` 用于移动到下一行,`q` 用于停止录制。这样我们所需要的宏就制作完成了。 现在,我们想要让下面剩下的 3 行的文本都处理成第一行那样的格式,直接按 `3@d` 运行宏 3 次就可以实现。这样一来,在数据库中进行插入就会方便很多,而且我们无需手动一个个去更改,简单高效! ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332800-1588678698.jpg) #### 结论 我们在写代码过程中,有很多场合文本、代码高度相似,如果我们手动去一个个修改的话,那效率将会非常低。有了 Vim 下宏这个神器,我们可以通过创建和使用不同类型的宏来完成这些重复性工作,从而节省时间和精力,实现高效编辑。 #### 看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创作的最大动力! 1. 关注**原创**公众号「**良许Linux**」,第一时间获取最新Linux干货! 2. 公众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提升、简历等资料。 3. 关注我的博客:[lxlinux.net](http://www.lxlinux.net)

加载全部内容

相关教程
猜你喜欢
用户评论