Vi/Vim 是類 Unix 系統預設編輯器,掌握進階命令可大幅提升編碼、配置檔修改效率。本文整理高頻實用命令,分類說明並附實戰場景。
| 命令 | 作用 |
|---|---|
w/b/e | 按單詞前進/後退/尾部 |
0/^/$ | 行首/第一個非空白/行尾 |
gg/G/nG | 檔案首/尾/第 n 行 |
Ctrl+u/Ctrl+d | 半頁向上/向下捲動 |
xp | 交換光標字元與下一字元 |
ddp | 交換當前行與下一行 |
J | 合併當前行與下一行 |
. | 重複上一次修改操作 |
"ayy // 複製當前行到暫存器 a
"ap // 貼上暫存器 a 內容
"b3dd // 刪除 3 行存入暫存器 b
:reg // 查看所有暫存器內容
系統剪貼板對應 * (Primary) 與 + (Clipboard) 暫存器(需 vim-gtk/vim-gnome 支援)。
/pattern // 向下搜尋
?pattern // 向上搜尋
n / N // 下一個/上一個匹配
:%s/old/new/g // 全檔替換
:%s#/usr/bin#/bin#g // 使用 # 為分隔符,避免路徑斜線衝突
:g/^$/d // 刪除所有空行
:'<,'>s/^/ / // 視覺模式選取區塊,行首插入兩空格
ma // 標記當前位置為 a
'a // 跳轉到標記 a 所在行首
`a // 跳轉到標記 a 確切列位置
'' // 跳回上一次跳轉前位置
`` // 跳回上一次跳轉前確切位置
vim file1 file2 // 開啟多檔
:n / :N // 下一個/上一個檔案
:buffers / :ls // 列出緩衝區
:b 3 // 切換到第 3 個緩衝區
Ctrl+^ // 在當前檔與上一檔快速切換
qa // 開始錄製巨集存入暫存器 a
... // 執行一系列編輯操作
q // 結束錄製
@a // 回放巨集 a
10@a // 回放 10 次
範例:為每行加上行號註解 qaI// Line 。
set number " 顯示行號
set relativenumber " 相對行號(配合 j/k 移動)
set incsearch " 即時搜尋
set hlsearch " 高亮搜尋結果
set ignorecase smartcase " 忽略大小寫/智能大小寫
set tabstop=4 shiftwidth=4 expandtab " 縮進 4 空格
set autoindent " 自動縮進
set cursorline " 高亮當前行
set mouse=a " 啟用滑鼠
syntax on " 語法高亮
filetype plugin indent on " 檔案類型插件
:set fileformat=unix " 轉換為 LF (去除 ^M)
:set fileformat=dos " 轉換為 CRLF
:%s/\r//g " 手動移除 ^M
或使用外部工具:dos2unix file / sed -i 's/\r//g' file。