Vim 的 Ex 命令(以 : 開頭)可接受地址指定作用範圍。地址可以是行號、標記、模式或組合,支援偏移量調整。
輸入數字後按 Enter 可跳轉到指定行。例如 :10 跳到第 10 行,:10,20 選中第 10-20 行。
v/V/Ctrl-v)選擇多行: 進入命令列,提示符自動顯示 :'<,'>s/foo/bar/g),僅在選中行執行'< 代表選區首行標記,'> 代表尾行標記。
://,/<\/html>/p
從包含 <html> 的行開始,到包含 </html> 的行結束,打印該範圍。模式用 / 包裹。
語法::{address}+n 或 :{address}-n,n 默認為 1。
://,/<\/p>/-1
:排除結尾標籤行:.,.+3:當前行及後 3 行(等價 :2,5 若當前行為 2):0:虛擬第 0 行,用於 :copy 0 或 :move 0 將範圍移至文件開頭" 1. 選中函數體(視覺行模式 V + 選擇) " 2. :'<,'>s/^/ / 為每行添加縮進 " 3. :'<,'>move 0 將函數移到文件頂部 " 另一例:刪除所有註釋行 :g/^\s*#/d " 複製第 10 行到第 20 行之後 :10copy 20
| 類型 | 示例 | 說明 |
|---|---|---|
| 絕對行號 | 10, 10,20 | 直接指定行 |
| 相對行號 | ., .-3, .+5 | 基於當前行偏移 |
| 標記 | 'a, '<, '> | 標記位置,視覺選區自動生成 |
| 模式 | /pattern/, ?pattern? | 向下/向上搜尋首個匹配行 |
| 特殊符號 | $ (末行), % (全文), 0 (虛擬首行) | 常用於範圍邊界 |
:g/pattern/cmd 在所有匹配 pattern 的行執行 cmd;:v/pattern/cmd 則在不匹配的行執行。配合偏移量可實現複雜編輯:
:g/^function/+1,/^end/-1 s/old/new/g " 在每個 function...end 塊內部(排除首尾行)替換