Vim 文字編輯器入門:從零開始不再卡關

為何要學 Vim?

Vim 的學習曲線很陡,很多人第一次進入 Vim 都不知道怎麼退出。但學會 Vim 是值得投資的:

💡 如果目前還不習慣 Vim,可以先用 nano(更直觀,開啟後就能打字,Ctrl+X 存檔離開)。但長期建議花時間學 Vim。

Vim 的三種模式(最重要的概念)

Vim 讓初學者最困惑的就是它有多種模式,在不同模式下,同樣的按鍵有不同的功能:

         ┌─────────────────────────┐
         │                         │
         ▼         i / a / o       │
  ┌─────────────┐ ──────────→ ┌──────────────┐
  │ 一般模式    │             │ 插入模式     │
  │ Normal Mode │ ←────────── │ Insert Mode  │
  └─────────────┘    Esc      └──────────────┘
         │
         │  :(冒號)
         ▼
  ┌─────────────┐
  │ 命令列模式  │
  │ Command Mode│
  └─────────────┘
模式說明如何進入狀態列顯示
一般模式
Normal Mode
Vim 的預設模式,用於移動游標、刪除、複製等操作。不能直接打字。 任何模式按 Esc (空白)
插入模式
Insert Mode
就像普通文字編輯器,可以輸入和修改文字 在一般模式按 iao -- INSERT --
命令列模式
Command Mode
在最下方的指令行輸入指令(存檔、搜尋、取代等) 在一般模式按 : : 開頭的輸入行
⚠️ 不知道目前在哪個模式?Esc(可以多按幾次),一定能回到一般模式。卡住時按 Esc 是萬靈丹。

開啟與退出 Vim

$ vim filename.txt   # 開啟(或建立)檔案
$ vim                # 開啟空白的 Vim(之後再指定存檔路徑)

退出 Vim(很多人第一個問題)

首先確認你在一般模式(按 Esc),然後輸入:

指令說明
:q退出(若有未儲存的更改則拒絕)
:q!強制退出,不儲存(常用!)
:w儲存(write)
:wq儲存並退出(最常用!)
:x儲存並退出(與 :wq 幾乎相同)
ZZ儲存並退出(快捷鍵版 :wq)
ZQ不儲存強制退出(快捷鍵版 :q!)

在一般模式下,移動游標的方式:

基本移動

按鍵移動
h j k l左 / 下 / 上 / 右(也可用方向鍵)
w跳到下一個單字的開頭
b跳到前一個單字的開頭
e跳到下一個單字的結尾
0(數字零)跳到行首(第一個字元)
^跳到行首的第一個非空白字元
$跳到行尾

頁面跳轉

按鍵移動
gg跳到檔案開頭
G跳到檔案結尾
數字G跳到第 N 行(如 42G 跳到第 42 行)
Ctrl+F向下一頁
Ctrl+B向上一頁

編輯操作(一般模式)

進入插入模式的各種方式

按鍵進入插入模式的位置
i游標方(最常用)
a游標方(append)
I行首
A行尾
o在當前行下方新增一行
O在當前行上方新增一行

刪除

按鍵刪除範圍
x刪除游標所在的一個字元
dd刪除整行(同時也是剪下)
數字dd刪除 N 行(如 5dd 刪 5 行)
dw刪除從游標到下一個單字
d$刪除從游標到行尾
d0刪除從行首到游標

複製與貼上

按鍵功能
yy複製整行(yank)
數字yy複製 N 行
yw複製一個單字
p貼上在游標之後(paste)
P貼上在游標之前

復原與重做

按鍵功能
u復原(undo)上一步操作
Ctrl+R重做(redo)
.(句點)重複上一個操作

搜尋

/關鍵字    ← 在一般模式輸入,向下搜尋
?關鍵字    ← 向上搜尋

n 跳到下一個匹配,N 跳到上一個匹配。

取代(在命令列模式)

:s/舊字串/新字串/     ← 取代當前行的第一個
:s/舊字串/新字串/g    ← 取代當前行的所有
:%s/舊字串/新字串/g   ← 取代全文所有(最常用)
:%s/舊字串/新字串/gc  ← 取代前逐一確認

儲存與退出(命令列模式)

:w              ← 儲存
:w filename.txt ← 另存新檔
:wq             ← 儲存並退出
:q!             ← 強制退出(不儲存)
:set number     ← 顯示行號
:set nonumber   ← 隱藏行號

必記快捷鍵速查

把這些最重要的快捷鍵記起來,就足夠應付日常的 Vim 編輯:

類別快捷鍵功能
模式切換i進入插入模式(游標前)
o新增行並進入插入模式
Esc回到一般模式
退出:wq儲存並退出 ⭐
:q!強制退出(不儲存)⭐
:w只儲存
ZZ儲存並退出(快捷)
編輯dd刪除(剪下)整行 ⭐
yy / p複製行 / 貼上 ⭐
u復原 ⭐
搜尋/關鍵字向下搜尋 ⭐
n / N下 / 上一個匹配
跳轉gg / G跳到檔案開頭 / 結尾 ⭐
數字G跳到第 N 行