最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!!
希望接下来对键盘宏的分享能够实际帮助到大家。
后文中描述的一些vim操作会汇集成指令字符串,方便大家参考。
在分享键盘宏之前,先看这样一个文本操作需求:
对如下文本增加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的键盘宏中,这仅仅只是一系列指令操作的集合,并不会消耗太多的精力。
详细视频见:
整个过程可谓非常简单,迅捷。只要在第一行录制一遍键盘宏,就能够应用在所有的行上。
vim 寄存器:vim提供了一系列寄存器,有一些是不允许修改的,而有一些可以由用户去修改写入a-z
和A-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 #将寄存器内容应用在选中的多行中
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的神级编辑器并不是浪得虚名。
一次手贱更新了上面这个驱动,结果: Fn+F2/F3不能控制亮度win+X弹出来的下面这个窗口“显示器亮度”不见了 电源选项里面底部“屏幕亮度”也不见了 我研究了三天,各种骚操作都试过了,最后找到解决方案: win+R 输入 devmgmt.msc 回车,按照下图操作,瞬间亮度恢复正常 ...
第一种:需要刷新当前页面重复执行的操作——使用场景:刷点击率 、秒杀活动、抢沙发 //自动化循环操作方法 var doLoop = function (dom) {dom || (dom = document);//这里写循环操作的代码dom.querySelector("sel").innerHTML = "舒工的骚操作!!...
Ubuntu常用操作外观操作修改应用icon图标终端美化内存管理内存查询分区管理日志清理操作执行自动执行多条命令...
文章目录前言工业级 LRU Cache1. 基本架构2. 基本操作2.1 insert 操作2.2 高并发下 insert 的一致性/性能 保证2.3 Lookup操作2.4 shard 对 cache Lookup 性能的影响2.4 Erase 操作2.5 内存维护3. 优化...
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、IoT、云原生、数...
c++ https://www.cnblogs.com/riddick/p/8486223.html python 原理:https://zhuanlan.zhihu.com/p/94244568 代码:https://github.com/1368069096/Calibration_ZhangZhengyou_Met...
https://zhuanlan.zhihu.com/p/60962760 https://blog.csdn.net/qq_35644234/article/details/53013738 https://blog.csdn.net/u012285643/article/details/78524758...
colmap-3.6-dev工程第三方依赖库 Eigen==3.3.7 https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zipFreeImage==3.17.0 https://github.com/twnkls/FreeImage-3.17.0-VS...
理论知识和其它实现算法可参考: https://stackoverflow.com/questions/29678510/convert-21-equirectangular-panorama-to-cube-map http://paulbourke.net/dome/dualfish2sphere/ 如果着急输出Cub...