日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

vim 键盘宏操作 -- 大道至简

發(fā)布時(shí)間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vim 键盘宏操作 -- 大道至简 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近利用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-zA-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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。