基礎取代語法
:%s/搜尋目標/取代內容/g
# % : 全文件範圍
# s : substitute 取代
# g : global 全行取代 (預設全文取代可省略)
常用取代模式大全
0. 刪除包含特定字串的行
:g/關鍵字/d
1. 精確單字取代
# 基礎取代
:%s/four/4/g
# 避免部分匹配 (fourty → 4ty)
:%s/\/4/g # 單字結尾邊界
:%s/\/4/g # 完整單字匹配
# 互動式確認
:%s/\/4/gc # 每次取代前提示確認 (y/n/a/q/l)
2. 刪除行尾多餘空白
:%s/\s\+$//
\s:空白字元 (空格/Tab)
\+:前一項目出現 1 次或以上
$:行尾錨點
3. 重複模式匹配
| 模式 | 匹配說明 |
a* | 匹配 a, aa, aaa... 及空字串 |
ab* | 匹配 a, ab, abb, abbb... |
\(ab\)* | 匹配 ab, abab, ababab... 及空字串 |
ab\+ | 匹配 ab, abb, abbb... (至少一個 b) |
folders\= | 匹配 folder 或 folders (可選項) |
4. 指定重複次數
| 模式 | 匹配次數 |
\{n,m} | n 到 m 次 (含 n,m) |
\{,4} | 0 到 4 次 |
\{3,} | 3 次以上 |
\{0,1} | 0 或 1 次 (等同 \=) |
\{0,} | 0 或更多 (等同 *) |
\{1,} | 1 次以上 (等同 \+) |
\{3} | 恰好 3 次 |
5. 多選一匹配 (OR 邏輯)
# 基礎 OR
/foo\|bar # 匹配 foo 或 bar
/one\|two\|three # 匹配 one 或 two 或 three
# 群組重複
/\(foo\|bar\)\+ # foo, foobar, foofoo, barfoobar...
# 實用範例
/end\(if\|while\|for\) # 匹配 endif, endwhile, endfor
6. 進階實戰範例
# 刪除空行
:g/^$/d
# 刪除註解行
:g/^#/d
# 行首插入字元
:%s/^/>> /
# 行尾追加字元
:%s/$/ <
# 交換欄位 (CSV 範例)
:%s/\([^,]*\),\([^,]*\)/\2,\1/
# 刪除重複行 (需排序)
:sort u
# 跨檔案取代
:args *.c | argdo %s/old/new/ge | update
正則運算式元字元速查
| 符號 | 含義 |
^ | 行首 |
$ | 行尾 |
. | 任意單一字元 |
\< | 單字開頭 |
\> | 單字結尾 |
\s | 空白字元 |
\d | 數字 |
\w | 單字字元 [0-9A-Za-z_] |
\(\) | 分組捕獲 |
\1, \2 | 反向引用 |