vi 是 Unix/Linux 系統預裝、無需圖形介面的經典編輯器,也是 C/C++ 後端開發的必備基本功。本文採「實戰步驟法」,帶你從零入門,建立肌肉記憶。
.c、.h 等經編譯產出執行檔的文字檔。任何文字編輯器皆可編輯源碼,但 vi 在純終端環境下無可替代。
$ vi a.c # 進入,顯示 "a.c [New File]"
:q # 立即退出(未修改時)
# 反覆練習進出 10 次,建立肌肉記憶
vi a.c
i # 進入插入模式
hello world!
Esc # 返回正常模式
:x # 存檔退出
$ cat a.c # 驗證輸出
記憶鉤子:i = insert。
目標:將 hello world! 改為 hello myself。
| 方法 | 關鍵命令 | 步驟摘要 |
|---|---|---|
| 整行重寫 | dd + i | 刪除整行 → 重新輸入 |
| 逐字刪除 | x (×6) + i | 刪除 "world" 6 字符 → 插入 "myself" |
| 替換字符 | x (×5) + r | 刪除 "world" 5 字符 → r. 將 '!' 改為 '.' |
| 單字修改 | cw | 游標置於 "world" → cw → 輸入 "myself" → Esc |
常用退出::x 存檔,:q! 強制放棄,:x! 強制存檔。
目標:從 hello myself 產生三行:
hello myself
hello world
hello c
| 方法 | 核心流程 | 關鍵命令 |
|---|---|---|
| 複製後修改 | yy 複製 → pp 貼上兩行 → 逐行 cw 修改 | yy、p、cw |
| 直接插入 | o 在下方插入兩行 → 輸入內容 → Esc | o (小寫),O (大寫,上方插入) |
| 搜尋修改 | yypp → :1 跳首行 → /myself 搜尋 → n 跳下一個 → cw 修改 | /、n、:1 |
撤銷:u 取消上一步操作(適用於 i、dd、cw 等多數命令)。
跳尾行:G 直接定位檔案末尾,次日續寫程式極佳。
用上述指令輸入經典 helloworld.c:
#include "stdio.h"
main() {
fprintf(stdout,"hello world!\n");
exit(0);
}
反覆練習前四步,直到指令無需思考即可流暢輸出。這是通往 vi 精通的必經之路。