---
# System prepended metadata

title: vim 常用指令
tags: [study]

---

###### tags: `study`
# vim 常用指令

## 正常模式

| 指令 | 說明 |
|------|------|
| `h` | 向左移動一個字元。 |
| `j` | 向下移動一行。 |
| `k` | 向上移動一行。 |
| `l` | 向右移動一個字元。 |
| `w` | 向後移動到下一個單字的開頭。 |
| `b` | 向前移動到上一個單字的開頭。 |
| `0` | 移動到目前行的開頭。 |
| `$` | 移動到目前行的結尾。 |
| `gg` | 移動到檔案的開頭。 |
| `G` | 移動到檔案的結尾。 |
| `:n` | 跳轉到第 n 行。 |
| `x` | 刪除目前游標所在的字元。 |
| `dd` | 刪除目前行。 |
| `yy` | 複製目前行。 |
| `p` | 貼上剪貼板中的內容（貼在游標後）。 |
| `/pattern` | 向前搜索符合 "pattern" 的文字。 |
| `?pattern` | 向後搜索符合 "pattern" 的文字。 |
| `:s/old/new/g` | 將目前行中所有的 "old" 替換為 "new"。 |
| `:%s/old/new/g` | 將檔案中所有的 "old" 替換為 "new"。 |

## 插入模式

| 指令 | 說明 |
|------|------|
| `i` | 在目前游標位置前插入文字。 |
| `a` | 在目前游標位置後插入文字。 |
| `o` | 在目前行下方插入新行，並進入插入模式。 |
| `O` | 在目前行上方插入新行，並進入插入模式。 |
| `Esc` | 退出插入模式，返回到正常模式。 |

## 命令模式

| 指令 | 說明 |
|------|------|
| `:w` | 儲存文件。 |
| `:q` | 關閉編輯器。 |
| `:q!` | 強制關閉編輯器，丟棄所有修改。 |
| `:wq` | 儲存文件並關閉編輯器。 |
| `:n` | 跳轉到第 n 行。 |
| `:set number` | 顯示行號。 |
| `:set autoindent` | 自動縮排。 |
| `:s/old/new/g` | 將目前行中的 "old" 替換為 "new"。 |
| `:%s/old/new/g` | 將文件中所有的 "old" 替換為 "new"。 |

