vim 键盘宏操作 -- 大道至简
最近利用vim做一些文本處理時(shí) 發(fā)現(xiàn)vim 支持的鍵盤宏是一個(gè)好東西啊,高效優(yōu)雅得處理大量需要重復(fù)性操作的文本,讓人愛不釋手!!!
希望接下來對鍵盤宏的分享能夠?qū)嶋H幫助到大家。
后文中描述的一些vim操作會匯集成指令字符串,方便大家參考。
1. 場景描述
在分享鍵盤宏之前,先看這樣一個(gè)文本操作需求:
對如下文本增加markdown中的鏈接形態(tài),并為每一個(gè)行增加一個(gè)遞增的序號。
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
完成操作之后的形態(tài)應(yīng)該如下,這樣我們就能在markdown語法中點(diǎn)擊文字,跳轉(zhuǎn)到指定的鏈接中了:
[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)
假想,我們想要完成類似功能的操作,需要處理的文本成千上萬行,這個(gè)時(shí)候我們需要用傳統(tǒng)的方法去操作會把人逼瘋。
而在vim的鍵盤宏中,這僅僅只是一系列指令操作的集合,并不會消耗太多的精力。
詳細(xì)視頻見:
整個(gè)過程可謂非常簡單,迅捷。只要在第一行錄制一遍鍵盤宏,就能夠應(yīng)用在所有的行上。
2. 鍵盤宏概述
-
vim 寄存器:vim提供了一系列寄存器,有一些是不允許修改的,而有一些可以由用戶去修改寫入
a-z和A-Z。總的作用就類似CPU的寄存器一樣,用來臨時(shí)保存數(shù)據(jù)而已。
可以通過::reg a # 查看寄存器a的內(nèi)容鍵盤宏就是創(chuàng)建一個(gè)寄存器,將我們針對文本的操作指令記錄到寄存器中,再將寄存器的內(nèi)容應(yīng)用到其他的文本行中。
-
錄制鍵盤宏的寄存器操作
一般模式 -- qa #錄制以a命名的寄存器,按一次q表示開始錄制 一般模式 -- do some op # 做一些操作:我們針對文本的操作 一般模式 -- q # 按第二次q 表示結(jié)束錄制,兩個(gè)q之間的文本操作已經(jīng)保存到寄存器之中了 :reg a # 可以看到剛才錄制的寄存器 a 的內(nèi)容 -
變量賦值
:let i=1 :let str="https://www.baidu.com" -
變量取值
插入模式 -- ^r=i # ctrl-r-=-i 會在當(dāng)前插入位置添加i的值 -
改變變量的值
:let i+=1 -
多行批量操作
1. 可視化操作選中除了操作的第一行之外的所有行 2. :normal @a #將寄存器內(nèi)容應(yīng)用在選中的多行中
3. 案例的詳細(xì)操作步驟
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 # 操作內(nèi)容,按照字母大小寫順序以及字符敲就可以了
5. q
6. v 可視化操作選中剩余的所有行
7. :normal @a # 對選中的行執(zhí)行寄存器內(nèi)的所有操作
關(guān)于第四步的寄存器操作內(nèi)容如下:
學(xué)習(xí)起來有點(diǎn)麻煩,當(dāng)多次操作熟悉之后就會發(fā)現(xiàn)這一些學(xué)習(xí)時(shí)間相比于成千上萬行的重復(fù)操作來說簡直是大道至簡,也讓我們更加深刻得體會到vim的神級編輯器并不是浪得虛名。
總結(jié)
以上是生活随笔為你收集整理的vim 键盘宏操作 -- 大道至简的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HAVE YOU30分钻戒大概多少钱?
- 下一篇: Rocksdb 写入数据后 GetApp