| 模式 | 進入鍵 | 核心功能 | 退回普通模式 |
|---|---|---|---|
| 普通模式 | 啟動預設 / Esc | 導航、刪除、複製、搜尋、執行命令 | — |
| 插入模式 | i I a A o O | 輸入文字 | Esc 或 Ctrl+[ |
| 命令列模式 | : / ? | 存檔、退出、替換、設置、外部命令 | Esc / Enter 執行後 |
vi hello.c # 新建/編輯
:q # 退出(未修改)
:w # 存檔
:wq / :x # 存檔並退出
:q! # 強制放棄修改退出
h j k l # 左下上右(核心,無需方向鍵)
w b # 下一詞首 / 上一詞首
0 ^ $ # 行首 / 第一個非空白 / 行尾
gg G # 檔案首行 / 末行
:n # 跳轉第 n 行
i # 光標前插入
a # 光標後追加
o / O # 下方/上方新行並插入
x # 刪除光標字符
dd # 刪除整行(複製到暫存器)
yy # 複製整行
p / P # 光標後/前貼上
u # 撤銷
Ctrl+r # 重做
cw # 修改詞(刪除詞尾並進入插入模式)
cc # 修改整行
C # 修改到行尾(= c$)
dw # 刪除詞
d$ / D # 刪除到行尾
> > / < < # 縮進/取消縮進
. # 重複上一次修改操作(神鍵)
/pattern # 向下搜尋
?pattern # 向上搜尋
n / N # 下一個 / 上一個匹配
:%s/old/new/g # 全文替換
:'<,'>s/old/new/g # 視覺模式選取範圍替換
v # 字符選取
V # 行選取
Ctrl+v # 區塊選取(矩形編輯神器)
:sp file / :vsp file # 水平/垂直分屏編輯另一檔案
Ctrl+w w # 切換窗口
:tabnew file # 新分頁
gt / gT # 下一/上一分頁
:!gcc % -o %< # 編譯當前檔(% 為檔名,%< 為無副檔名)
:!! # 重複上一條外部命令
:r !cmd # 將命令輸出插入光標處
dd, yy, p, u, .。/ 搜尋、n/N 跳轉、cw 修改詞、. 重複。Ctrl+v 區塊編輯(批量註釋/解註釋、對齊賦值)、:%s 替換、分屏編輯 .h/.c 對照。~/.vimrc 基礎設置(行號、縮進、語法高亮、編碼),安裝 ctags/cscope 實現跳轉定義。.vimrc 起手式
set nocompatible " 必須第一行,關閉 vi 相容模式
set number " 顯示行號
set tabstop=4 shiftwidth=4 expandtab " 4 空格縮進
set autoindent smartindent
set hlsearch incsearch ignorecase smartcase
set encoding=utf-8 fileencodings=utf-8,gbk
syntax on
filetype plugin indent on
" 快捷鍵:F5 編譯運行
nnoremap :w:!gcc % -o %< && ./%<
進階主題:巨集錄製 (q)、寄存器系統 ("ayy)、標記跳轉 (m/`)、正則表達式進階、外掛管理 (vim-plug)、語言伺服器協議 (LSP) 整合 clangd 實現 IDE 級補全跳轉。
vi/vim 是「越用越順手、越老越值錢」的工具。投入前 20 小時刻意練習,回報將伴隨整個程式設計生涯。