vim 键盘宏操作 — 大道至简

vim 键盘宏操作 — 大道至简vim 神级编辑器利用键盘宏批量操作文本 简直 嗨翻天

最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!!

希望接下来对键盘宏的分享能够实际帮助到大家。

后文中描述的一些vim操作会汇集成指令字符串,方便大家参考。

1. 场景描述

在分享键盘宏之前,先看这样一个文本操作需求:

对如下文本增加markdown中的链接形态,并为每一个行增加一个递增的序号。

markdown的链接语法 是: [description](https://www.baidu.com)

HashKV.pdf Compaction management in dis-tributed key-value datastores.pdf Dostoevsky.pdf LSM-trie.pdf NoFTL-KV.pdf WB-tree.pdf Accordion.pdf Thonangi and Yang.pdf FD-tree.pdf ElasticBF.pdf LSbM-tree.pdf VT-tree.pdf 

完成操作之后的形态应该如下,这样我们就能在markdown语法中点击文字,跳转到指定的链接中了:

[1. HashKV.pdf](https://www.baidu.com) [2. Compaction management in dis-tributed key-value datastores.pdf](https://www.baidu.com) [3. Dostoevsky.pdf](https://www.baidu.com) [4. LSM-trie.pdf](https://www.baidu.com) [5. NoFTL-KV.pdf](https://www.baidu.com) [6. WB-tree.pdf](https://www.baidu.com) [7. Accordion.pdf](https://www.baidu.com) [8. Thonangi and Yang.pdf](https://www.baidu.com) [9. FD-tree.pdf](https://www.baidu.com) [10. ElasticBF.pdf](https://www.baidu.com) [11. LSbM-tree.pdf](https://www.baidu.com) [12. VT-tree.pdf](https://www.baidu.com) 

假想,我们想要完成类似功能的操作,需要处理的文本成千上万行,这个时候我们需要用传统的方法去操作会把人逼疯。

而在vim的键盘宏中,这仅仅只是一系列指令操作的集合,并不会消耗太多的精力。

整个过程可谓非常简单,迅捷。只要在第一行录制一遍键盘宏,就能够应用在所有的行上。

2. 键盘宏概述

  • vim 寄存器:vim提供了一系列寄存器,有一些是不允许修改的,而有一些可以由用户去修改写入a-zA-Z。总的作用就类似CPU的寄存器一样,用来临时保存数据而已。
    可以通过:

    :reg a # 查看寄存器a的内容 

    键盘宏就是创建一个寄存器,将我们针对文本的操作指令记录到寄存器中,再将寄存器的内容应用到其他的文本行中。

  • 录制键盘宏的寄存器操作
    一般模式 -- qa #录制以a命名的寄存器,按一次q表示开始录制 一般模式 -- do some op # 做一些操作:我们针对文本的操作 一般模式 -- q # 按第二次q 表示结束录制,两个q之间的文本操作已经保存到寄存器之中了 :reg a # 可以看到刚才录制的寄存器 a 的内容 
  • 变量赋值
    :let i=1 :let str="https://www.baidu.com" 
  • 变量取值
    插入模式 -- ^r=i # ctrl-r-=-i 会在当前插入位置添加i的值 
  • 改变变量的值
    :let i+=1 
  • 多行批量操作
    1. 可视化操作选中除了操作的第一行之外的所有行 2. :normal @a #将寄存器内容应用在选中的多行中 

3. 案例的详细操作步骤

1. :let i=1 #初始化变量i 的值,作为行编号使用 2. :let str='https://www.baidu.com' # 初始化变量str,作为链接字符串使用 3. qa # 开始录制键盘宏 4. I[^r=i. A](^r=str):let i+=1 # 操作内容,按照字母大小写顺序以及字符敲就可以了 5. q 6. v 可视化操作选中剩余的所有行 7. :normal @a # 对选中的行执行寄存器内的所有操作 

学习起来有点麻烦,当多次操作熟悉之后就会发现这一些学习时间相比于成千上万行的重复操作来说简直是大道至简,也让我们更加深刻得体会到vim的神级编辑器并不是浪得虚名。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210862.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:44
下一篇 2026年3月18日 下午11:44


相关推荐

  • 日志管理系统功能_efk日志分析系统

    日志管理系统功能_efk日志分析系统日志管理系统rsyslogd什么是rsyslogdrsyslogd是一个进程,是一个日志服务,我们可以通过rpm-qc查询软件包的方式来查看[root@localhost~]#rpm-qcrsyslog/etc/logrotate.d/syslog/etc/rsyslog.conf/etc/sysconfig/rsyslog查询结果会出现三个文件:/etc/…

    2022年4月19日
    152
  • maven本地仓库配置了不起作用_仓库数量出错的原因

    maven本地仓库配置了不起作用_仓库数量出错的原因在配置前请先看看这个链接里的东西https://blog.csdn.net/qq_35109803/article/details/80025853如果还是有错误的话就往下文看吧。如果你在配置maven本地仓库输入mvnhelp:system 运行出错的话,不妨试试以下方法。该方法仅对输入mvn-v可以成功运行,而输入mvnhelp:system出现Error的解决方…

    2025年12月2日
    6
  • Linux安装Tomcat最新版本

    Linux安装Tomcat最新版本Linux安装Tomcat最新版本1.Tomcat各版本选择2.下载启动1.Tomcat各版本选择官网介绍:https://tomcat.apache.org/whichversion.htmlServletJSPELWebSocketAuthentication(JASIC)ApacheTomcatVersionLatestReleasedVersionJava支持5.03.04.02.02.010.0.x10.0.58andla

    2022年6月1日
    43
  • HTML中的空格字符_dw空格代码怎么打

    HTML中的空格字符_dw空格代码怎么打在学习插入空格字符代码书写方法之前,我们要知道,html代码的空格字符,在浏览器中,总会被压缩为一个字符!也就是说,你在html文本中输入多个空格,但在浏览器中,只会保留显示一个字符,其余的都将被浏览器删除。再打个比如,你在html中输入了8个空格字符,如下图所示:在显示之前,浏览器会删除其余7个,而只保留一个空格字符,如下图所示:也就是说,无论你输入多少个空格字符,在浏览器中显示的永远和上图一样…

    2025年11月18日
    5
  • JS后退一页, JS返回上一页代码,

    JS后退一页, JS返回上一页代码,Javascript返回上一页: 1.history.go(-1),返回两个页面:history.go(-2); 2.history.back(). 3.window.history.forward()返回下一页 4.window.history.go(返回第几页,也可以使用访问过的URL) 例: <ahref="java…

    2022年7月25日
    21
  • python怎么调用api接口_偶尔的注解

    python怎么调用api接口_偶尔的注解swagger3的使用Swagger2(基于openApi3)已经在17年停止维护了,取而代之的是sagger3(基于openApi3),而国内几乎没有sagger3使用的文档,百度搜出来的都是swagger2的使用,这篇文章将介绍如何在java中使用openApi3(swagger3)。相关介绍OpenAPIOpenApi是业界真正的api文档标准,其是由Swagg…

    2025年7月21日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号