vi/vim 是類 Unix 系統的標準編輯器,掌握其指令能大幅提升終端機編輯效率。本文將上百個指令分類整理為啟動參數、游標移動、顯示設定、刪除/撤銷、插入/修改、搜尋取代、視窗分割等七大類,並附上實用組合鍵與記憶口訣,適合列印貼在螢幕邊隨時查閱。
| 指令 | 說明 |
|---|---|
vi filename | 開啟單一檔案 |
vi file1 file2 file3 | 一次開啟多檔,:n 切換下一個,:N 上一個 |
vi +100 file | 直接跳至第 100 行 |
vi +/keyword file | 跳至第一個包含 keyword 的行 |
view file | 唯讀模式開啟,需 :w! 強制存檔 |
h j k l ← ↓ ↑ → (字元)
0 ^ $ 行首 / 行首(非空白) / 行尾
w e b 下一單字首 / 下一單字尾 / 上一單字首
- + 上一行行首 / 下一行行首
12| 第 12 欄
H M L 螢幕頂/中/底行
G 檔案尾
42G 第 42 行
'' (雙單引號) 返回上一游標位置
:set number / :set nu 顯示行號
:set nonumber / :set nonu 隱藏行號
:set showmode 右下角顯示模式
:set list 顯示 $ (行尾) 與 ^I (Tab)
:set showmatch 輸入 ) 或 ] 時跳轉對應括號
:set autoindent / :set ai 自動縮排
:set tabstop=4 / :set ts=4 Tab 寬度
:set wrapmargin=10 右邊距自動換行
:set ignorecase / :set ic 搜尋忽略大小寫
:set all 列出所有可設定選項
dd 3dd 刪除當前行 / 3 行
dw 3dw 刪除單字 / 3 個單字
x 3x 刪除游標字元 / 3 個字元
D 刪除游標至行尾
:12,37d 刪除 12~37 行
u 撤銷 (Linux 可連續 u 多步撤銷)
:redo / Ctrl+r 重做 (取消撤銷)
U 撤銷當前行所有修改 (未離開該行時)
a A i I 游標後/行尾/游標前/行首 插入
o O 下一行/上一行 新增一行並進入插入模式
:8r file 讀入 file 內容插入至第 8 行後
Esc 返回指令模式
Ctrl+v 然後鍵 輸入控制字元 (如 Ctrl+v Enter 產生 ^M)
cw 修改單字 (刪除單字並進入插入模式)
s S 取代單一字元 / 整行
cc 取代整行 (同 S)
r 取代游標單一字元並自動回指令模式
R 進入取代模式 (逐字覆蓋)
C 修改游標至行尾
ctY cfY 修改至下一個 Y (不含/含 Y)
cTY cFY 修改至上一個 Y (不含/含 Y)
/pattern 向下搜尋
?pattern 向上搜尋
n N 下一個 / 上一個匹配
:%s/old/new/g 全檔取代
:s/old/new/g 當前行取代
:10,20s/old/new/g 10~20 行取代
:sp file / :vsp file 水平/垂直分割開啟檔案
Ctrl+w w / Ctrl+w 方向鍵 切換視窗
Ctrl+w q 關閉當前視窗
:tabnew file 新分頁
gt / gT 下一個/上一個分頁
| 操作 | 指令序列 | 口訣 |
|---|---|---|
| 刪除整行並複製 | dd | Delete line |
| 複製當前行 | yy | Yank line |
| 貼上 | p / P | Put after/before |
| 行首/行尾快速跳轉 | 0 / $ | Zero / Dollar |
| 檔案首/尾 | gg / G | Go top / Go bottom |
| 縮排/反縮排 | > > / < < | Shift right/left |
| 格式化段落 | gqap | Format paragraph |
set nocompatible
set number
set tabstop=4 shiftwidth=4 expandtab
set autoindent smartindent
set ignorecase smartcase
set hlsearch incsearch
set cursorline
set mouse=a
syntax on
filetype plugin indent on
將上述內容存入 ~/.vimrc 即可獲得現代化編輯體驗。