Vim 擁有大量隱藏功能,掌握這些「冷門但實用」技巧能讓編輯效率質變。本文精選 12 個高頻實用技巧,涵蓋儲存退出、計算機、重複單詞偵測、縮寫、sudo 儲存、自動補全、檔案比較、時間旅行、括號操作、標記跳轉、十六進位編輯、HTML 匯出。
:x " 僅在檔案被修改時寫入,不修改檔案修改時間
:wq " 強制寫入並更新修改時間
若檔案未修改,:x 保留原修改時間,:wq 會更新,影響備份/同步工具判斷。
插入模式下:Ctrl+R → = → 輸入運算式 (如 3+6) → Enter,結果直接插入游標處。支援基本四則運算。

輸入搜尋模式:
/\\(\\<\\w\\+\\>\\)\\_s*\\1
搭配 set hlsearch 高亮所有重複單詞 (如 "the the"),校對神器。
:ab asap as soon as possible
輸入 asap 後按空白鍵自動展開為完整片語。適合常用長字串、模板代碼。

:w !sudo tee %
以 root 權限透過 tee 寫入當前檔案 (% 代表當前檔名),無需重新以 sudo 開啟。

插入模式下輸入開頭字元,按 Ctrl+N (下一個) 或 Ctrl+P (上一個),Vim 依目前緩衝區內出現過的單詞補全。無需外掛即可用。
方法一:啟動時比較
vimdiff file1 file2
方法二:已開啟檔案中比較
:vsp file2 " 垂直分割開啟第二個檔案
:diffthis " 在第一個緩衝區執行
Ctrl+W w " 切換到第二個緩衝區
:diffthis " 執行
:windo diffthis " 或一次對所有視窗套用
差異行會高亮顯示,支援合併編輯。
:earlier 1m " 回到 1 分鐘前狀態
:earlier 2h " 回到 2 小時前
:later 30m " 前進 30 分鐘 (撤銷 earlier)
基於 Vim 的 undo tree 機制,比傳統 undo/redo 強大得多。
一般模式下游標在左括號上:
di( " 刪除圓括號內容
di{ " 刪除大括號內容
di[ " 刪除方括號內容
di" " 刪除雙引號內容
di' " 刪除單引號內容
括號本身保留。da( 會連同括號一起刪除。

dt. " 刪除到句點前 (保留句點)
dt, " 刪除到逗號前
同行有效,配合 f/F 尋找字元極為高效。
:%!xxd " 轉為十六進位檢視/編輯
:%!xxd -r " 還原為二進位
需系統安裝 xxd (通常預裝)。
Ctrl+O " 跳回上一個編輯位置 (可連續多次)
Ctrl+I " 跳往下一個位置 (撤銷 Ctrl+O)
大型檔案編輯時在多處跳轉的救星。
:%TOhtml
產生保留語法高亮的 HTML 檔案,分享代碼片段極佳。