vi/vim 是類 UNIX 系統標準的全螢幕文字編輯器,採用**模式化**操作。熟練掌握其指令能讓遠端編輯、配置檔修改事半功倍。本文系統整理三大模式與核心指令集。
| 模式 | 進入方式 | 特徵 | 離開方式 |
|---|---|---|---|
| 命令模式 | 啟動 vi 預設、Esc | 鍵盤輸入皆為指令,不顯示字元 | iao 進入輸入模式,:// 進入末行模式 |
| 輸入模式 | iIaAoO | 可輸入文字,狀態列顯示 --INSERT-- | Esc 返回命令模式 |
| 末行模式 | :、/、? | 螢幕底行輸入 : 指令或搜尋 | Enter 執行後自動回命令模式,Esc 取消 |
vi file.txt # 編輯單一檔
vi +10 file.txt # 從第 10 行開始
vi + file.txt # 從最後一行開始
vi +/keyword file.txt # 從關鍵字首次出現處開始
vi file1 file2 # 多檔案編輯
:n # 切換下一檔
:rew # 回第一檔
:e# # 切換上一檔
:e newfile # 開啟新檔(未存檔需先 :w)
:w # 存檔
:w newfile # 另存新檔
:wq / :x / ZZ # 存檔並離開
:q # 離開(未修改)
:q! # 強制離開不存檔
:!cmd # 暫時執行 shell 指令
:sh # 進入 shell,Ctrl+d 返回
| 指令 | 動作 |
|---|---|
| 0 / ^ | 行首 |
| $ | 行尾 |
| gg | 檔案首行 |
| G | 檔案尾行 |
| nG / :n | 第 n 行 |
| w / b | 下/上一個單字開頭(含標點) |
| W / B | 下/上一個單字(以空白分隔) |
| Ctrl+f / Ctrl+b | 向下/上翻一頁 |
| Ctrl+d / Ctrl+u | 向下/上翻半頁 |
x / X # 刪除游標後/前一字元
dd / ndd # 刪除當前行 / n 行
dw / ndw # 刪除當前單字 / n 個單字
d$ / D # 刪除至行尾
d0 # 刪除至行首
yy / nyy # 複製當前行 / n 行
p / P # 貼上於游標後/前
u # 復原
Ctrl+r # 重做
r # 替換單一字元
R # 進入取代模式
cc / ncc # 修改當前行 / n 行(刪除並進入輸入模式)
cw # 修改單字
J # 合併下一行到當前行
/keyword # 向下搜尋
?keyword # 向上搜尋
n / N # 下一個 / 上一個匹配
:s/old/new/ # 當前行首次替換
:s/old/new/g # 當前行全部替換
:%s/old/new/g # 全文全部替換
:1,$s/old/new/g # 同 %s
:g/old/s//new/g # 全文所有包含 old 的行替換
# 取代確認模式
:%s/old/new/gc # 每次詢問確認
:sp / :vsp # 水平/垂直分割視窗
Ctrl+w w # 切換視窗
:tabnew # 新分頁
gt / gT # 下/上一分頁
熟練這些指令,配合 .vimrc 個人化設定,vi/vim 將成為你最高效的編輯利器。