Vim 是 Linux 系統管理與開發的標準編輯器。本文將數百指令歸納為 7 大類別,提供高頻指令速查表與進階工作流技巧,助你從「能用」進化為「高效」。
1. 進入與檔案操作
| 指令 | 功能 |
vim file | 開啟/新建檔案 |
vim +n file | 跳至第 n 行 |
vim + file | 跳至最後一行 |
vim +/pattern file | 跳至首次匹配 pattern |
vim -r file | 恢復崩潰時的交換檔 |
vim file1 file2 | 依序編輯多檔案 (:n 切換) |
2. 游標移動 (Normal 模式)
| 類別 | 指令 | 動作 |
| 字元 | h / l | 左 / 右 |
j / k | 下 / 上 |
^ / 0 | 行首非空白 / 行首 |
$ | 行尾 |
| 單字 | w / b | 下一單字首 / 上一單字首 |
e / ge | 下一單字尾 / 上一單字尾 |
W / B | 以空白分隔的大單字 |
| 行 | Enter / - | 下一行首 / 上一行首 |
nG / gg / G | 第 n 行 / 首行 / 尾行 |
n% | 檔案 n% 處 |
| 句/段 | ( / ) | 上一句 / 下一句 |
{ / } | 上一段 / 下一段 |
| 螢幕 | H / M / L | 螢幕頂 / 中 / 底行 |
Ctrl+f / Ctrl+b | 向下 / 向上翻一頁 |
Ctrl+d / Ctrl+u | 向下 / 向上翻半頁 |
zz / zt / zb | 當前行置中 / 置頂 / 置底 |
3. 進入插入/取代模式
| 指令 | 位置 | 模式 |
i / a | 游標前 / 後 | Insert |
I / A | 行首非空白 / 行尾 | Insert |
o / O | 下一行 / 上一行新建 | Insert |
s / S | 刪除字元/整行並進入 | Insert |
r / R | 單字元取代 / 連續取代 | Replace |
cw / cc / C | 改單字/整行/至行尾 | Insert (刪除後) |
Esc 或 Ctrl+[ 返回 Normal 模式。
4. 刪除、複製、貼上 (Normal 模式)
| 動作 | 指令 | 範圍 |
| 刪除 | x / X | 游標後 / 前 1 字元 |
dw / daw | 至單字尾 / 整個單字 (含空白) |
dd / ndd | 整行 / n 行 |
d$ / D / d0 / d^ | 至行尾 / 同 D / 至行首 / 至行首非空白 |
| 複製 (Yank) | yy / nyy | 整行 / n 行 |
yw / yaw | 至單字尾 / 整個單字 |
y$ / y0 / y^ | 至行尾 / 至行首 / 至行首非空白 |
| 貼上 | p / P | 游標後 / 前 |
5. 搜尋與取代
| 指令 | 功能 |
/pattern | 向下搜尋 |
?pattern | 向上搜尋 |
n / N | 同方向 / 反方向重複 |
* / # | 搜尋游標上單字 (向下/向上) |
:s/old/new/ | 當前行首次替換 |
:s/old/new/g | 當前行全部替換 |
:%s/old/new/g | 全檔全部替換 |
:%s/old/new/gc | 全檔逐一確認替換 |
:n1,n2s/old/new/g | 第 n1-n2 行替換 |
:g/pattern/s/old/new/g | 匹配 pattern 的行替換 |
6. 視窗、分頁、多檔案
| 指令 | 功能 |
:sp / :vsp | 水平 / 垂直分割視窗 |
Ctrl+w, w | 循環切換視窗 |
Ctrl+w, h/j/k/l | 移動至左/下/上/右視窗 |
Ctrl+w, = | 等寬高分配 |
:tabnew / gt / gT | 新分頁 / 下一分頁 / 上一分頁 |
:bn / :bp / :bd | 下一/上一/關閉緩衝區 |
:args *.c | 載入多檔案列表 |
7. 設定選項 (命令列模式 :set)
| 選項 | 功能 |
number / nonu | 顯示/隱藏行號 |
relativenumber | 相對行號 (配合移動極快) |
ignorecase / smartcase | 忽略大小寫 / 智能大小寫 |
hlsearch / nohlsearch | 高亮搜尋 / 關閉高亮 |
autoindent / smartindent | 自動縮排 |
expandtab / tabstop=4 / shiftwidth=4 | Tab 轉空格 / 寬度 |
wrap / nowrap | 自動換行 / 不換行 |
cursorline / cursorcolumn | 高亮當前行/欄 |
mouse=a | 啟用滑鼠 |
命令列模式進階 (Last-line mode :)
:w # 存檔
:wq / :x # 存檔離開
:q! # 強制不存離開
:e file # 開啟新檔
:r file # 讀入檔案內容至游標處
:r !cmd # 讀入命令輸出
:n1,n2 w file # 寫入指定行範圍至檔案
:!cmd # 執行 Shell 命令
:sh # 進入 Shell (exit 返回)
:make # 編譯 (配合 quickfix)
:grep pattern % # 當前檔 grep
:cfdo %s/old/new/g # 所有緩衝區替換
必裝外掛生態 (現代 Vim)
- 包管理:vim-plug (
Plug 'author/plugin')
- 必裝:
nerdtree (檔案樹)、fzf.vim (模糊搜尋)、ale (非同步語法檢查)、vim-surround (括號/引號操作)、vim-commentary (註解切換)、gitgutter (Git 變更標記)
- 配色:
gruvbox、onedark、tokyonight
結語
Vim 學習曲線陡峭但上限極高。建議路徑:掌握 Normal 模式移動/編輯 → 熟練搜尋取代/視窗分割 → 客製化 .vimrc + 外掛 → 內建幫助 :help 深入探索。每日 15 分鐘刻意練習,兩週可達生產級流暢度。