Vim 常用操作速查卡
贴手边的 Vim 快速参考。按功能分组,支持复制速记。
1. 模式切换
| 按键 | 作用 |
|---|
i | 在光标前插入(进入插入模式) |
a | 在光标后追加(进入插入模式) |
o | 在下一行新建行并插入(进入插入模式) |
I | 在行首(第一个非空字符)插入 |
A | 在行末追加 |
O | 在上一行新建行并插入 |
Esc | 回到普通模式 |
v | 进入字符可视模式(逐字选择) |
V | 进入行可视模式(逐行选择) |
Ctrl-v | 进入块可视模式(矩形选择) |
2. 移动
基础移动
| 按键 | 作用 |
|---|
h | 左 |
j | 下 |
k | 上 |
l | 右 |
w | 跳到下一个单词开头 |
b | 跳到上一个单词开头 |
e | 跳到当前单词末尾 |
0 | 跳到行首 |
^ | 跳到行首(第一个非空字符) |
$ | 跳到行末 |
跳页
| 按键 | 作用 |
|---|
gg | 跳到文件开头 |
G | 跳到文件末尾 |
Ctrl-u | 向上翻半页 |
Ctrl-d | 向下翻半页 |
Ctrl-f | 向下翻整页 |
Ctrl-b | 向上翻整页 |
块级移动
| 按键 | 作用 |
|---|
{ | 跳到上一个空行 |
} | 跳到下一个空行 |
% | 在配对括号间跳转(如 ()、[]、{} 间) |
字符查找
| 按键 | 作用 |
|---|
f<char> | 跳到当前行下一个 <char> |
F<char> | 跳到当前行上一个 <char> |
t<char> | 跳到当前行下一个 <char> 前一个位置 |
T<char> | 跳到当前行上一个 <char> 后一个位置 |
; | 重复上一个 f/F/t/T 命令 |
, | 反向重复上一个 f/F/t/T 命令 |
3. 编辑
删除
| 按键 | 作用 |
|---|
x | 删除光标所在字符 |
X | 删除光标前字符(backspace) |
dd | 删除整行 |
dw | 删除从光标到下一个单词开头 |
db | 删除从光标到上一个单词开头 |
d$ | 删除从光标到行末 |
d0 | 删除从行首到光标 |
d<motion> | 删除到指定动作(如 dj、d5w) |
复制与粘贴
| 按键 | 作用 |
|---|
yy | 复制整行 |
yw | 复制从光标到下一个单词开头 |
y$ | 复制从光标到行末 |
y<motion> | 复制到指定动作 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
修改(删除 + 插入)
| 按键 | 作用 |
|---|
cc | 删除整行并进入插入模式 |
cw | 删除单词并进入插入模式 |
c$ | 删除到行末并进入插入模式 |
c<motion> | 修改到指定动作 |
r<char> | 用 <char> 替换光标所在字符 |
R | 进入替换模式(覆盖输入) |
撤销与重做
| 按键 | 作用 |
|---|
u | 撤销最后一步操作 |
Ctrl-r | 重做最后撤销的操作 |
. | 重复最后一次操作 |
4. 查找与替换
查找
| 按键 | 作用 |
|---|
/pattern | 向下查找 pattern(回车确认) |
?pattern | 向上查找 pattern |
n | 跳到下一个匹配 |
N | 跳到上一个匹配 |
* | 查找光标所在单词(向下) |
# | 查找光标所在单词(向上) |
替换
| 命令 | 作用 |
|---|
:s/old/new/ | 替换当前行第一个 old 为 new |
:s/old/new/g | 替换当前行所有 old 为 new |
:n,m s/old/new/g | 替换第 n 到 m 行的所有 old 为 new |
:%s/old/new/g | 替换整个文件的所有 old 为 new |
:%s/old/new/gc | 替换整个文件,每次都询问(c = confirm) |
5. 多文件 / 窗口 / 缓冲
文件操作
| 命令 | 作用 |
|---|
:e <file> | 打开或编辑文件 |
:w | 保存当前文件 |
:w <file> | 另存为 <file> |
:q | 关闭当前窗口(无修改时) |
:q! | 强制关闭(丢弃修改) |
:wq 或 :x | 保存并关闭 |
:e! | 放弃修改,重新加载文件 |
窗口分割
| 命令 | 作用 |
|---|
:sp | 水平分割窗口(打开相同文件) |
:vsp | 竖直分割窗口(打开相同文件) |
:sp <file> | 水平分割窗口并打开 <file> |
:vsp <file> | 竖直分割窗口并打开 <file> |
窗口切换(Ctrl-w 系列)
| 按键 | 作用 |
|---|
Ctrl-w w | 切换到下一个窗口 |
Ctrl-w h/j/k/l | 切换到左/下/上/右窗口 |
Ctrl-w c | 关闭当前窗口 |
Ctrl-w o | 仅保留当前窗口(关闭其他) |
Ctrl-w = | 平均分配窗口大小 |
Ctrl-w >/< | 增加/减少窗口宽度 |
Ctrl-w +/- | 增加/减少窗口高度 |
缓冲管理
| 命令 | 作用 |
|---|
:bn | 切换到下一个缓冲 |
:bp | 切换到上一个缓冲 |
:b<n> | 切换到缓冲 n(:ls 查看缓冲列表) |
:ls 或 :buffers | 列出所有缓冲 |
:bd | 删除当前缓冲 |
6. 组合的威力(必读)
Vim 的精妙在于操作符 + 动作的组合。任何删除、复制、修改命令都可以与动作组合。
核心模式
<operator> <motion>
操作符:d(删除)、y(复制)、c(修改)、v(可视化选择) 动作:w(单词)、j(下一行)、}(段落)、f<char>(到字符)等
常用组合示例
| 按键 | 等效于 | 作用 |
|---|
di( | — | 删除括号内内容(删除 inner (...) |
ci" | — | 修改双引号内内容 |
da{ | — | 删除花括号及其内容(delete around {} |
yi] | — | 复制方括号内内容 |
dt, | — | 删除到逗号前(delete till , |
3dd | — | 删除 3 行 |
5j | — | 向下移 5 行 |
2dw | — | 删除 2 个单词 |
y2e | — | 复制 2 个单词(到词尾) |
文本对象(内部动作)
| 对象 | 作用 |
|---|
iw | inner word(单词内部) |
aw | a word(包括单词和空格) |
i" / i' / i` | 引号内 |
a" / a' / a` | 引号及其内容 |
i( 或 ib | 小括号内 |
i[ | 方括号内 |
i{ 或 iB | 花括号内 |
ip | 段落内 |
it | 标签内(HTML/XML) |
示例:
caw → 修改光标所在单词(含空格)
yi{ → 复制花括号内容
da" → 删除双引号及其内容
7. 常用配置片段(.vimrc 起步)
" 基础设置
set number " 显示行号
set relativenumber " 相对行号
set hlsearch " 高亮搜索结果
set ignorecase " 搜索忽略大小写
set smartcase " 智能大小写(有大写字母时区分)
set expandtab " Tab 转空格
set tabstop=4 " Tab 显示为 4 个空格
set softtabstop=4 " 按 Tab 插入 4 个空格
set shiftwidth=4 " 缩进 4 个空格
set autoindent " 自动缩进
set mouse=a " 启用鼠标
set clipboard=unnamed " 复制到系统剪贴板
" 快捷键映射示例
let mapleader = "," " 设置 Leader 键为逗号
nnoremap <leader>w :w<CR> " ,w 保存
nnoremap <leader>q :q<CR> " ,q 退出
nnoremap <leader>/ :nohlsearch<CR> " ,/ 关闭搜索高亮
" 括号自动补全(基础版)
inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {}<Left>
8. 速记提示
记住这 3 个核心概念
- 动作可重复:
3dd = 删 3 行,5j = 下 5 行
- 操作符 + 动作:不用死记
dw、cw,理解 d + w 就能推广到 d$、df,…
- 可视模式验证:不确定某个范围时,先
v 选择看看,再按 d/y/c
进阶提示
:set incsearch 启用搜索时动实时跳转(边输入边显示)
Ctrl-] 跳到标签定义(配合 ctags)
gd 跳到本地变量定义
K 查看光标单词的 man 手册
:help <topic> 获取帮助(如 :help motion)
最后:Vim 学习曲线陡峭,但回报远大。不要在 :wq 上耗时,集中力量掌握动作组合——那是 Vim 的核心威力。