vi 是 Unix/Linux 系統標準文本編輯器,vim(Vi IMproved) 是其功能增強版,提供語法高亮、多層撤銷、視覺區塊、外掛擴展等強大功能,是系統管理、程式開發、配置檔編輯的首選工具。本文系統整理 vim 三大模式切換、核心編輯指令、命令列模式操作與進階效率技巧。
三大模式架構
- 一般模式(Normal Mode):啟動預設模式,游標移動、刪除/複製/貼上、搜尋、跳轉、撤銷。鍵入 Esc 可從任意模式返回。
- 編輯模式(Insert Mode):輸入文字,底列顯示
-- INSERT --。
- 命令列模式(Command-line Mode):輸入
:、/、? 進入,執行儲存、離開、取代、設定、外部指令等。
一般模式核心指令速查
游標移動
| 按鍵 | 動作 |
| h/j/k/l | 左/下/上/右 移動一字元 |
| w / b | 下一字首 / 上一字首 |
| 0 / ^ / $ | 行首 / 第一個非空白字元 / 行尾 |
| gg / G | 檔案首行 / 末行 |
| nG / :n | 跳至第 n 行 |
| Ctrl+f / Ctrl+b | 向下/向上翻一頁 |
| Ctrl+d / Ctrl+u | 向下/向上翻半頁 |
| H / M / L | 螢幕頂行/中行/底行首非空字元 |
刪除、複製、貼上
| 指令 | 動作 |
| x / X | 刪除游標後/前一字元 |
| dd | 刪除整行(剪貼簿) |
| D | 刪除至行尾 |
| ndd | 刪除 n 行(含當前行) |
| dG / d1G | 刪除至檔案尾/首 |
| yy | 複製整行 |
| nyy / ynj | 複製 n 行 / 向下 n+1 行 |
| p / P | 貼上於游標下一行 / 上一行 |
| J | 合併當前行與下一行 |
| u / Ctrl+r | 撤銷 / 重做 |
| . | 重複上一個編輯動作 |
編輯模式進入方式
| 按鍵 | 插入位置 |
| i | 游標前 |
| I | 行首非空白字元前 |
| a | 游標後 |
| A | 行尾 |
| o | 下一行行首新增行 |
| O | 上一行行首新增行 |
| r | 取代游標字元 |
| R | 進入取代模式,持續覆寫至 Esc |
命令列模式核心指令
| 指令 | 功能 |
:w | 儲存 |
:w filename | 另存新檔 |
:wq / :x | 儲存並離開 |
:q | 離開(未修改) |
:q! | 強制離開不存檔 |
:set nu / :set nonu | 顯示/隱藏行號 |
:/pattern | 向下搜尋 pattern |
:?pattern | 向上搜尋 pattern |
:s/old/new/g | 當前行全域取代 |
:n1,n2s/old/new/g | 第 n1~n2 行全域取代 |
:%s/old/new/g | 全檔案全域取代 |
:r filename | 讀入檔案內容插入游標下一行 |
:n1,n2 w filename | 將 n1~n2 行存為新檔 |
:!cmd | 執行外部指令(如 :!ls) |

進階效率技巧
- 視覺模式:v 字元、V 行、Ctrl+v 區塊 → 移動游標選取 → d/y/> 操作。
- 多檔案編輯:
vim file1 file2 → :n 下一檔、:prev 上一檔、:buffers 列表。
- 分割視窗:
:sp 水平、:vsp 垂直 → Ctrl+w 方向鍵切換。
- 宏錄製:qa 開始錄製存入暫存器 a → 操作 → q 結束 → @a 重放。
- vimrc 精簡配置(
~/.vimrc):
set number relativenumber
set tabstop=4 shiftwidth=4 expandtab
set hlsearch incsearch ignorecase smartcase
syntax on
filetype plugin indent on
新手避坑指南
- 進入 vim 後先按 Esc 確保在一般模式,再輸入指令。
- 誤進編輯模式亂按鍵盤 → Esc → u 撤銷。
:q! 強制離開不存檔,:wq 存檔離開,切勿混淆。
- 系統預設
vi 可能為 vim-tiny,功能受限,建議安裝 vim-gtk3/vim-enhanced 完整版。
熟練 vim 核心指令肌肉記憶,配合 .vimrc 個人化配置,即可獲得「思維速度 = 編輯速度」的極致體驗,成為 Linux 下最高效的文字操作者。