概述
vim 巨集的基本操作
背景之前退出, 查歷史記錄的時候, 偶然按錯
某些動作, 不是單純依靠 替換操作, 就做得出來的...
環境os
win10
shell
mintty-2.9.4
概述什麼是巨集
巨集
巨集就是一些命令組織在一起,作為乙個單獨命令完成乙個特定任務
我的感覺
操作有序集合
乙個巨集通常含有多個 順序關聯的操作
小規模操作的數量很小
使用場景通常受限
office 巨集
wow 技能巨集
概述簡單聊聊基本操作
概述檢視當前巨集的情況
操作
# 檢視
:reg
# 退出檢視
鍵盤上任意鍵即可
reg暫存器
可以理解位 vim 的剪貼簿
但實際上, 它的功能還挺強大...
這個我後面再說吧巨集名稱
"a 開始, "z 結束都是巨集
後文簡稱 巨集a 到 巨集z
這裡不區分 大小寫
最多只能有 26 個巨集
其他的內容, 以後再講
存在已經錄製的巨集, 是可以在列表裡檢視到的
沒有錄製的巨集, 是不會顯示的
同乙個使用者下, 不同的 vim 視窗, 巨集是可以共享的
存在 ~/.viminfo 裡
不建議直接修改這個檔案
命令
: reg a
結果如果存在, 則只顯示 巨集a
如果不存在, 則巨集內容顯示位空
概述巨集的錄製
當然最開始是沒有巨集的
所以檢視不到的話, 自己錄製乙個就行了
準備文字
123
45
思路給每一行的數值 +1
我想把這個巨集, 錄製到 巨集a 裡
操作定位到 第一行 行首
使用 ctrl + a, 給數值 +1
將游標移到第二行行首
其他vim 處於 標準模式
錄製步驟
定位到 第一行 行首
鍵盤依次輸入
# 成功後, 左下角會有狀態變化
# 顯示 記錄中/recoding @a
qa
使用 ctrl + a, 給數值 +1
將游標移到第二行行首
鍵盤輸入
# 右下角提示消逝, 錄製結束
q
檢視命令
用 :reg 檢視
結果能找到如下記錄
"a ^aj
疑問問題1: 進入後, 按 q 退出, 那我要是需要按 q 了, 怎麼辦呢?
解答標準模式下, q 只有 開始/結束 錄製的功能
插入模式裡, 輸入 q 不會導致 錄製退出
問題2: 26 個巨集如果用完了, 還想再加怎麼辦
解答26 個巨集, 通常是夠用的
如果還需要加, 只有覆蓋之前用過的位置了
所以, 錄製之前一定要先確定好, 不要讓之前辛苦錄製的巨集, 被莫名其妙的覆蓋了...
問題3: 這個錄製能暫停嗎?
我不知道...
問題4: 錄製巨集的時候, 可以使用別的巨集嗎?
解答我試了試, 目前來看 vim 並沒有禁止這種 疑似套娃 的行為
或者說, 巨集是可以相互呼叫的吧...
沒試過自製死迴圈...
甚至可以專門定義乙個巨集, 來按順序執行乙個 或者 多個 其他巨集
概述巨集的簡單使用
目的讓第二行的數字, 也加上個1
當然是用巨集操作, 而不是再來一次
確認reg 裡巨集, 就是我們想要的內容
操作定位到 第二行 行首
依次輸入
@
a
結果第二行數字變成了 3
游標移動到了 第三行
疑問問題1: 後面還有三個數, 我乙個一下一下 @a 也不輕鬆啊
解答@@ 可以重複執行之前執行過的巨集
可以有辦法一次多行執行多次
概述巨集的一些 高階用法
其實這些高階, 也沒進多少, 先湊合用吧
概述嘗試多次執行同乙個巨集
目的將 3 到 5 行的數字都加一
操作游標定位到 第三行
依次輸入內容
# 用 @@ 也是可以的3@
a
結果巨集執行了 3 次
後面的三行, 都加了1
問題問題1: 這種手操, 感覺也是有侷限性的
解答我也是這麼覺得
但是 vim 肯定不會讓你失望的
概述ex 命令列執行操作的示例
操作1: 指定單行
命令
# 假設我們想讓 當前行 執行這個巨集
: normal @a
# 假設我們想讓 第4行 執行這個巨集
:4 normal @a
# 結果我就略了
解釋normal
在 ex 命令列關鍵字
normal 後面的內容, 會被翻譯為 標準模式 下的 指令
操作2: 多行執行
命令
# 我想讓 1 到 4 行執行這個巨集
: 1,4 normal @a
# 結果我就略了
操作3: 匹配執行
命令
# 假設想要匹配某個 4 執行巨集
# ex 的全域性匹配, 本來應該先講的, 以後補上
# 匹配到後, 游標會自動停在 4 的前面
# 感覺這個是乙個很實用的操作了
: g/4/ normal @a
概述v 模式下的 ex 命令
操作1: v 模式下執行
操作進入 v 模式
選定多行
進入 ex 命令列
命令
# '<,'> 是 v 模式下自帶的, 沒有問題
'<,'> normal @a
# 結果我就略了
問題1: 巨集可以編輯嗎
解答可以的
概述巨集的追加
命令
# 對 巨集a 追加
q + a
# 沒錯, 是 大寫的a
# 輸入追加操作
# q 退出
問題問題1: 這種編輯, 感覺還是有侷限性
解答確實, 只能通過 標準模式 下的操作, 來執行
如果中間或者前面出現了問題, 又得重來
辦法還是有的
概述巨集的 匯入 和 匯出
準備建議把游標移動到檔案的最低端
新建乙個空行
游標停留在空行, 並切回 標準模式
概述本質是 剪貼簿 的操作
推薦這種
匯出
# 匯出 巨集a
"ap
匯入
# 游標放在行首
"ay$
概述使用 ex 命令列
匯出
# 匯出 巨集a
# 注意留意游標位置, 會額外生成乙個 空行
put a
匯入
# 有個坑, 就是 ctrl 直接複製過去, 會變成 ^, 無法生效
# 手動按會生效, 但是感覺這沒啥意義...
let @a="《巨集內容》"
# 但是如果這條路走通了, 就可以利用 vimrc 了
ex 命令裡的 reg
這玩意我之前沒用過...
通過 vimrc 可以將我們常用的巨集, 匯入到 vim 中
一上來就能直接用了...
當然那個 ctrl 的轉義, 我至今沒搞明白
想想就帶感, 但是我覺得自己還得努力找找...
refvim中的暫存器簡介
reg 的簡介, 有空看看
vim 錄製巨集,自動迴圈執行組合操作
vim 教程網
乙個 vim 的教程網
我從知乎上找進去的
好像是個妹子獨立維護
vimtutor
不愧是北航的學生, 學渣給跪了...
vim暫存器與巨集常用命令彙總
講得不錯
原文不在了, 只有貼**了...
後續:reg
乙個強大的剪貼簿
:normal
這麼看來的話, ex 命令列應該是可以做 vim 裡幾乎所有的很多操作了
這麼說的話, 指令碼化這個東西, 應該會帶來很大的便利
map/nmap
這是什麼玩意
vim巨集的使用
原文 普通人的編輯利器 vim 按qa q表示開始錄製巨集,巨集的名字為a 中間的操作 再q 表示巨集錄製結束,vim會提示記錄完成 這樣巨集錄完了,可以用了。再 a,巨集執行了一次。按下6 a 就執行了6次!任務c 錯落有致 操作 這次演示一下巨集的用法,請嚴格按本教程操作。先做一下確認 輸入法沒...
vim簡單使用教程
vim的學習曲線相當的大 參看各種文字編輯器的學習曲線 所以,如果你一開始看到的是一大堆vim的命令分類,你一定會對這個編輯器失去興趣的。下面的文章翻譯自 learn vim progressively 我覺得這是給新手最好的vim的公升級教程了,沒有列舉所有的命令,只是列舉了那些最有用的命令。非常...
vim簡單使用教程
vim的學習曲線相當的大 參看各種文字編輯器的學習曲線 所以,如果你一開始看到的是一大堆vim的命令分類,你一定會對這個編輯器失去興趣的。下面的文章翻譯自 learn vim progressively 我覺得這是給新手最好的vim的公升級教程了,沒有列舉所有的命令,只是列舉了那些最有用的命令。非常...