Vi / Vim 編輯器通用指令與進階技巧
提示
Vi /Vim是我很常用的Editor,所以會一點小技巧很重要
一、 基本操作與存檔離開
所有指令皆在 Command Mode(命令模式) 下輸入,按下 Esc 鍵可隨時回到此模式。
| 指令 | 效果描述 |
|---|---|
:q | 不存檔離開(若有未儲存變更會阻擋) |
:q! | 強制不存檔離開(捨棄所有未儲存修改) |
:w | 寫入並儲存當前檔案 |
:wq 或 ZZ | 存檔並離開 |
:wq! | 強制存檔並離開(適用於權限允許時的複寫) |
二、 鍵盤編輯與導覽快捷鍵
從命令模式切換至編輯模式或執行區塊操作的常用快速鍵:
| 指令 / 鍵盤動作 | 效果描述 |
|---|---|
i | 在游標當前位置進入編輯模式 (Insert) |
a | 在游標後方位置進入編輯模式 |
o | 在當前行的下方新增空白行並進入編輯模式 |
dd | 刪除(剪下)整列 |
[數字]dd | 刪除從當前行開始的指定「[數字]」列(例如 5dd) |
u | 復原 (Undo) 上一個動作 |
p | 貼上 (dd 或 yy 暫存的內容) |
三、 搜尋與全域取代進階指令
利用命令模式底下的 Ex 指令來進行強大的字串尋找與批次取代。
1. 基礎搜尋
- 在命令模式輸入
/後接關鍵字即可向下搜尋(按n找下一個,N找上一個)。
2. 全域字串取代語法
-
全檔案全面取代:
:%s/search_from/replace_to/g -
取代前逐一向使用者確認(Interactive):
:%s/search_from/replace_to/gc(跳出提示時,按
y確定取代、n跳過、a全部取代、q離開) -
略過英文大小寫差異:
:%s/search_from/replace_to/gi -
僅取代「當前行」:
:s/search_from/replace_to/g -
指定特定行數範圍取代:
:[行數起點],[行數終點]s/search_from/replace_to/gc(例如
:10,50s/foo/bar/gc代表僅在第 10 行到第 50 行之間進行確認取代)