markdown-it
demo
Delete
Submit
clear
permalink
Vim 的 `q` 巨集(Macro)就像是你的專屬「動作錄製機」。很多人覺得它難用,是因為錄製過程一旦出錯就要重來,或者錄出來的巨集「不夠強健」,換一行就失效。 身為 Java 內網開發者,你一定常遇到要把一堆 Log 轉成 JSON,或是要把 50 個變數宣告改成 Setter。以下是幾個讓 `q` 巨集從「堪用」變成「神級工具」的進階建議: --- ### 1. 錄製時的「絕對準則」:使用語義移動 錄製巨集最忌諱用「方向鍵」或「h/j/k/l」。如果你錄了「往右按 5 次」,只要下一行的長度不一樣,巨集就毀了。 * **用 `0` 或 `^` 開始**:確保每一行的起點一致。 * **用 `f` 或 `t` 找字元**:例如錄製 `f(` 跳到左括號,而不是按右鍵按到死。 * **用 `w`, `e`, `b` 跳單字**:這能確保你準確落在變數名稱上。 * **用 `A`, `I`, `C` 進入插入模式**:這比 `i` 再手動移動更快且更準。 --- ### 2. 「遞迴巨集」:錄一次,跑全檔案 如果你有 1000 行要處理,手動按 `1000@a` 很累。你可以錄製一個會「自我呼叫」的巨集: 1. 先清空暫存器:`qaq`。 2. 開始錄製:`qa`。 3. 執行你的操作。 4. 最後加一個 `j`(跳到下一行)。 5. 按 `@a`(呼叫自己)。 6. 按 `q` 結束錄製。 7. 現在按一次 `@a`,它就會**自動跑到底**,直到某一行操作失敗為止。 --- ### 3. 不要重錄!直接「修改」巨集 錄製到一半出錯不必瘋掉。巨集其實就存在你的暫存器裡(像剪貼簿一樣)。 * **貼出來**:在新的一行輸入 `"ap`(把暫存器 `a` 的內容貼出來)。 * **編輯它**:你會看到一串像 `^Ipublic void...` 的文字,直接像編輯一般文字一樣修改它。 * **存回去**:游標移到這行,按 `0"ay$`(從開頭抓取整行存回 `a`)。 * **再執行**:`@a`。 --- ### 4. 搭配「視覺模式」批量執行 如果你不想用遞迴,也可以用「選取執行」: 1. 錄好巨集(假設在 `q`)。 2. 用 `V` 選取你要處理的所有行。 3. 輸入 `:`,畫面會出現 `:'<,'>`。 4. 接著補完指令:`:'<,'>normal @q`。 5. 這會對選取的每一行分別執行巨集。 --- ### 5. 巨集 vs `.` (點號) vs `:%s` 架構師選用工具的時機: * **`.` (Dot)**:簡單的小修改(例如在行尾加個分號)。 * **`:%s` (Regex)**:結構非常規律、可以用關鍵字取代的情況。 * **`q` (Macro)**:**需要跨行邏輯**、**複雜的條件移動**,或是**一連串不同指令組合**時。 --- ### 巨集 要使用Vim的巨集功能,可以按照以下步驟進行: 1. 錄製巨集:進入Normal模式,按下"q"鍵後接一個字母(用來指定巨集的名稱),然後進行需要錄製的操作步驟。操作完畢後再按下"q"鍵停止錄製。 1. 執行巨集:在Normal模式下輸入 "@" 後接巨集的名稱(剛剛錄製時指定的字母),然後按下Enter鍵即可執行巨集。 1. 重複執行巨集:若要重複執行巨集,可以在Normal模式下輸入一個數字(表示執行幾次)後再接 "@" 和巨集的名稱,按下Enter鍵即可重複執行。 1. `:reg` 命令用於顯示當前 vim 緩衝中的暫存器內容。透過這個命令可以查看、複製或刪除已複製的文字內容。 1. 存儲巨集:若要將巨集永久保存,可以將巨集存入vimrc文件中。可以使用以下命令:`:let @a='巨集內容'` 中的 'a' 是巨集的名稱。
html
source
debug
Fork me on GitHub