Vim 命令速查表
Vim 是高效文本编辑的代名词。本速查表覆盖了日常开发中最常用的 Vim 命令,从基本操作到宏录制,每个命令都有实际使用示例。无论你是 Vim 新手还是想进一步提升效率的老手,这份速查表都能帮到你。建议先掌握基本操作和光标移动,再逐步学习搜索替换和窗口管理。
使用场景速查
| 你要做什么 | 用哪个快捷键 |
| 开始编辑文本 | i(光标前插入) |
| 保存文件 | :w |
| 保存退出 | :wq 或 ZZ |
| 复制一行 | yy |
| 删除一行 | dd |
| 粘贴 | p(后) / P(前) |
| 撤销 | u |
| 搜索文本 | /模式 |
| 全文替换 | :%s/旧/新/g |
| 分屏 | :vs(垂直)/ :sp(水平) |
基本操作
``bash
# 模式切换
i # 在光标前插入(进入插入模式)
a # 在光标后插入
o # 在当前行下方新建行并插入
I # 在行首插入
A # 在行尾插入
O # 在当前行上方新建行并插入
Esc / Ctrl+[ # 返回普通模式
# 文件操作
:e file.txt # 打开文件
:w # 保存文件
:q # 退出
:wq / ZZ # 保存并退出
:q! # 强制退出(不保存)
:e! # 重新加载文件(放弃修改)
:help topic # 查看帮助(如 :help i_Ctrl-p)
`
光标移动
`bash
# 基础移动
h # 左移
j # 下移
k # 上移
l # 右移
5j # 向下移动 5 行(数字 + 移动键)
# 词级移动 w # 前进一个词(词首) b # 后退一个词(词首) e # 前进到词尾 ge # 后退到词尾 3w # 前进 3 个词
# 行级移动 0 # 跳到行首(第 1 列) ^ # 跳到行首第一个非空字符 $ # 跳到行尾 g_ # 跳到行尾最后一个非空字符
# 文件级移动 gg # 跳到文件开头 G # 跳到文件末尾 42G / :42 # 跳到第 42 行 Ctrl+d # 向下翻半页 Ctrl+u # 向上翻半页 Ctrl+f # 向下翻一页 Ctrl+b # 向上翻一页
# 段落/代码块 % # 跳到匹配的括号(() [] {}) ( / ) # 跳到上一个/下一个句子 { / } # 跳到上一个/下一个段落
# 屏幕定位
zz # 将当前行移到屏幕中间
zt # 将当前行移到屏幕顶部
zb # 将当前行移到屏幕底部
`
编辑操作
`bash
# 删除
x # 删除光标处字符
X # 删除光标前字符
3x # 删除 3 个字符
dd # 删除当前行
5dd # 删除 5 行
D # 删除光标到行尾
dw # 删除光标到词尾
diw # 删除光标所在词(inner word)
daw # 删除光标所在词(含空格)
di( # 删除括号内内容
da" # 删除引号及其中内容
# 复制(Yank) yy # 复制当前行 5yy # 复制 5 行 yiw # 复制光标所在词 y$ # 复制光标到行尾
# 粘贴 p # 粘贴到光标后 P # 粘贴到光标前
# 修改 r # 替换光标处字符 R # 进入替换模式(连续替换) ciw # 修改光标所在词(删除并进入插入模式) ci( # 修改括号内内容 c$ # 修改光标到行尾 cc # 修改整行
# 撤销与重复
u # 撤销
Ctrl+r # 重做
. # 重复上次修改操作
`
可视化模式
`bash
# 进入可视化模式
v # 字符可视化(选择任意范围的字符)
V # 行可视化(选择整行)
Ctrl+v # 块可视化(矩形块选择,用于列编辑)
# 可视化操作(选中后按) d # 删除选中内容 y # 复制选中内容 > # 向右缩进选中行 < # 向左缩进选中行 ~ # 切换选中文本的大小写 u # 选中文本转小写 U # 选中文本转大写 : # 对选中行执行命令
# 列编辑技巧
Ctrl+v # 进入块选
jjj # 向下选中多行
I # 在列首插入
text # 输入要插入的文本
Esc # 应用修改到所有选中行
`
搜索替换
`bash
# 搜索
/pattern # 向下搜索
?pattern # 向上搜索
n # 跳到下一个匹配
N # 跳到上一个匹配
* # 向下搜索光标下的词
# # 向上搜索光标下的词
# 高亮控制 :nohlsearch # 取消搜索高亮(或 :noh) set hlsearch # 开启搜索高亮 set nohlsearch # 关闭搜索高亮
# 替换
:s/old/new/ # 替换当前行第一个匹配
:s/old/new/g # 替换当前行所有匹配
:%s/old/new/g # 全文替换
:%s/old/new/gc # 全文替换(逐个确认)
:5,20s/old/new/g # 替换 5-20 行
:%s/old/new/gn # 统计匹配数量(不实际替换)
`
窗口与标签
`bash
# 窗口管理
:sp [file] # 水平分割
:vs [file] # 垂直分割
Ctrl+w h # 切换到左边窗口
Ctrl+w j # 切换到下边窗口
Ctrl+w k # 切换到上边窗口
Ctrl+w l # 切换到右边窗口
Ctrl+w w # 循环切换窗口
Ctrl+w = # 等分窗口大小
Ctrl+w _ # 最大化窗口高度
Ctrl+w | # 最大化窗口宽度
Ctrl+w + # 增加窗口高度
Ctrl+w - # 减少窗口高度
:q # 关闭当前窗口
:only # 关闭除当前外的所有窗口
# 标签页
:tabnew [file] # 在新标签中打开
gt # 下一个标签
gT # 上一个标签
Ngt # 跳到第 N 个标签
:tabclose # 关闭当前标签
:tabonly # 关闭其他标签
:tabmove +1 # 标签右移
`
进阶技巧
`bash
# 宏录制
qa # 开始录制宏 a(存储到寄存器 a)
... # 执行你的操作
q # 停止录制
@a # 播放宏 a
@@ # 重复上次宏
5@a # 播放宏 a 5 次
# 寄存器 "ayy # 复制当前行到寄存器 a "ap # 粘贴寄存器 a 的内容 :reg # 查看所有寄存器内容 "+y # 复制到系统剪贴板 "+p # 从系统剪贴板粘贴
# 标记 ma # 在当前位置设置标记 a a # 跳转到标记 a 的位置 'a # 跳转到标记 a 的行首 :marks # 列出所有标记
# 自动补全(插入模式下) Ctrl+p # 向前补全(基于当前文件) Ctrl+n # 向后补全 Ctrl+x Ctrl+l # 补全整行 Ctrl+x Ctrl+f # 补全文件名 Ctrl+x Ctrl+] # 补全标签
# Vim 中执行 Shell 命令
:!ls # 执行 ls 命令(回车返回)
:!python % # 运行当前 Python 文件
:read !date # 将命令输出插入到当前光标位置
:r !curl -s URL # 将 curl 结果插入文件
``
Vim 配置示例
`vim
" ~/.vimrc 常见配置
" 界面 set number " 显示行号 set relativenumber " 显示相对行号(与 number 配合更佳) set cursorline " 高亮当前行 set showmode " 显示当前模式 set showcmd " 显示已输入的命令
" 缩进 set tabstop=4 " Tab 宽度 4 set shiftwidth=4 " 缩进宽度 4 set expandtab " 用空格代替 Tab set autoindent " 自动缩进 set smartindent " 智能缩进
" 搜索 set hlsearch " 高亮搜索结果 set incsearch " 输入时即时搜索 set ignorecase " 搜索忽略大小写 set smartcase " 如果搜索包含大写则区分大小写
" 编辑 set backspace=indent,eol,start " 允许退格删除 set clipboard=unnamedplus " 使用系统剪贴板 syntax on " 启用语法高亮
" 文件类型
filetype plugin indent on " 根据文件类型加载插件和缩进规则
`
Vim 学习路线
`
新手必学 → 基本操作 + 光标移动(hjkl + 数字组合)
常用操作 → 删除/复制/粘贴 + 搜索替换 + 撤销重做
效率提升 → 文本对象(diw/ci(/da")+ 可视化块模式
高手进阶 → 宏录制 + 寄存器 + 多文件编辑 + 配置优化
``
基础操作(9)
| 命令 | 难度 | ||
|---|---|---|---|
i / a / o进入插入模式(光标前/后/新行) | 基础 | i | |
Esc / Ctrl+[返回普通模式 | 基础 | <Esc> | |
:w保存文件 | 基础 | :w | |
:q退出 Vim | 基础 | :q | |
:wq / ZZ保存并退出 | 基础 | :wq | |
:q!强制退出(不保存) | 基础 | :q! | |
:e <file>打开指定文件 | 基础 | :e ~/.vimrc | |
:help <topic>打开 Vim 内置帮助 | 中级 | :help i_Ctrl-p | |
vimtutor启动 Vim 交互式教程(新手入门最佳方式) | 基础 | vimtutor |
editing(7)
| 命令 | 难度 | ||
|---|---|---|---|
x / X删除光标处字符 / 删除光标前字符 | 基础 | 3x | |
dd / yy / p / P删除行 / 复制行 / 粘贴后 / 粘贴前 | 基础 | dd; 5yy; p | |
diw / ciw / yiw删除/修改/复制当前词 | 中级 | diw | |
da" / ci( / ya{删除/修改/复制引号/括号内的内容(含定界符) | 中级 | da" | |
r<char>替换光标处字符 | 基础 | ra | |
. (dot)重复上次修改操作 | 中级 | . | |
u / Ctrl+r撤销 / 重做 | 基础 | u |
可视化模式(3)
| 命令 | 难度 | ||
|---|---|---|---|
v / V / Ctrl+v字符可视化 / 行可视化 / 块可视化 | 中级 | Ctrl+v | |
> / <缩进 / 取消缩进选中行 | 基础 | > # 向右缩进 | |
~ / u / U切换大小写 / 小写 / 大写 | 基础 | |
搜索查找(5)
| 命令 | 难度 | ||
|---|---|---|---|
/<pattern> / ?<pattern>向下搜索 / 向上搜索 | 基础 | /function | |
n / N跳到下一个 / 上一个匹配 | 基础 | n | |
* / #搜索光标下的词(向下 / 向上) | 基础 | * # 向下搜索当前词 | |
:%s/<old>/<new>/g全文搜索替换 | 中级 | :%s/foo/bar/g | |
:%s/<old>/<new>/gc搜索替换(每次确认) | 中级 | :%s/foo/bar/gc |
窗口管理(5)
| 命令 | 难度 | ||
|---|---|---|---|
:sp <file> / :vs <file>水平分割 / 垂直分割打开文件 | 中级 | :vs ~/.vimrc | |
Ctrl+w h/j/k/l切换到左/下/上/右窗口 | 中级 | Ctrl+w l | |
Ctrl+w = / _ / |窗口等宽/最大化高度/最大化宽度 | 中级 | Ctrl+w = | |
:tabnew / gt / gT新建标签 / 下一个标签 / 上一个标签 | 中级 | gt | |
:tabm <n>移动标签页到指定位置 | 中级 | :tabm 0 |
高级操作(6)
| 命令 | 难度 | ||
|---|---|---|---|
q<letter> ... q录制宏 / 停止录制 | 高级 | qa | |
@<letter> / @@播放宏 / 重复上次宏 | 高级 | @a # 播放宏 a | |
"<reg>p / "<reg>y使用指定寄存器粘贴/复制 | 高级 | "ayy # 复制到寄存器 a | |
m<letter> / '<letter>设置标记 / 跳转到标记 | 中级 | ma; 'a | |
:!<command>在 Vim 中执行 Shell 命令 | 中级 | :!ls -la | |
Ctrl+p / Ctrl+n插入模式下的自动补全(上一个/下一个) | 中级 | Ctrl+p |