Vim 命令速查

Vim 模式切换、光标移动、编辑操作、查找替换、分屏、宏录制、配置的完整命令速查。

#tech / dev / editor #type / howto #status / evergreen #resource / vim

[!info] related notes

Vim 命令速查

核心概念

普通模式 (Normal)  ←── Esc ──── 插入模式 (Insert)
    │                               ↑
    │── : ─→ 命令模式 (Command)     i/a/o 等
    │── v ─→ 可视模式 (Visual)      │
    │── Ctrl+v → 块选择 (Block)     │
    └────────────────────────────────┘

心智模型:动词 + 名词 = 动作。d(删除)+ w(单词)= dw(删除单词)。大写通常更强。


模式切换

命令说明
i在光标进入插入模式
I行首进入插入模式
a在光标进入插入模式
A行尾进入插入模式
o在当前行下方新开一行并进入插入模式
O在当前行上方新开一行并进入插入模式
s删除光标处字符并进入插入模式
S删除整行并进入插入模式
Esc退回普通模式
Ctrl+[退回普通模式(同 Esc)

光标移动

基础移动

命令说明
h / j / k / l左 / 下 / 上 / 右
w跳到下一个词首
W跳到下一个词首(忽略标点,以空格分隔)
b跳回上一个词首
B跳回上一个词首(忽略标点)
e跳到当前/下一个词尾
E跳到词尾(忽略标点)
0跳到行首(第 0 列)
^跳到行首第一个非空字符
$跳到行尾
gg跳到文件第一行
G跳到文件最后一行
:{N}跳转到第 N 行
{N}G跳转到第 N 行
Ctrl+u向上翻半页
Ctrl+d向下翻半页
Ctrl+b向上翻整页
Ctrl+f向下翻整页
Ctrl+e屏幕向下滚动一行(光标不动)
Ctrl+y屏幕向上滚动一行(光标不动)
H跳到屏幕顶部 (High)
M跳到屏幕中部 (Middle)
L跳到屏幕底部 (Low)
zz当前行居中显示
zt当前行置顶显示
zb当前行置底显示

行内查找

命令说明
f{char}向后查找字符 {char} 并跳到其
F{char}向前查找字符 {char}
t{char}向后查找字符 {char} 并跳到其
T{char}向前查找字符 {char} 并跳到其后
;重复上一次 f/F/t/T
,反向重复上一次 f/F/t/T

括号匹配与跳转

命令说明
%跳到匹配的括号 () {} []
[{跳到当前代码块的 {
]}跳到当前代码块的 }
[(跳到当前 (
])跳到当前 )

编辑操作

删除

命令说明
x删除光标处字符
X删除光标前字符
dd删除整行
Dd$删除至行尾
d0删除至行首
dw删除一个单词
daw删除一个单词(含周围空格)
diw删除单词内容(不含周围空格)
di(删除括号内的内容
da(删除括号及其内容
di"删除引号内的内容
da"删除引号及其内容
di{删除花括号内的内容
da{删除花括号及其内容
d{motion}通用删除:d + 移动命令
5dd删除 5 行
dG删除至文件末尾
ggdG删除全文
d}删除至下一段落
d%删除至匹配的括号

复制与粘贴

命令说明
yy复制整行
Y复制整行(同 yy)
yw复制一个单词
y$复制至行尾
y0复制至行首
yaw复制一个单词(含空格)
yi(复制括号内内容
yi"复制引号内内容
y{motion}通用复制:y + 移动命令
5yy复制 5 行
yG复制至文件末尾
p在光标粘贴
P在光标粘贴
"ay复制到寄存器 a
"ap从寄存器 a 粘贴
"+y复制到系统剪贴板
"+p从系统剪贴板粘贴

修改

命令说明
cw修改单词(删除并进入插入模式)
cc修改整行
Cc$修改至行尾
c0修改至行首
ci(修改括号内内容
ci"修改引号内内容
ci{修改花括号内内容
c{motion}通用修改:c + 移动命令
r{char}替换光标处字符为 {char}
R进入替换模式(连续覆盖字符)
~切换大小写
gU{motion}转为大写
gu{motion}转为小写
>>右缩进当前行
<<左缩进当前行
==自动缩进当前行
>ip缩进整个段落
<ip反缩进整个段落
>G缩进至文件末尾
gg=G全文自动缩进

撤销与重做

命令说明
u撤销
Ctrl+r重做
U撤销对当前行的所有修改
.重复上一次修改操作(极强大)

查找与替换

命令说明
/{pattern}向下查找
?{pattern}向上查找
n跳到下一个匹配
N跳到上一个匹配
*查找光标下的单词(向下)
#查找光标下的单词(向上)
:s/old/new/当前行替换(仅首个匹配)
:s/old/new/g当前行全部替换
:%s/old/new/g全文替换
:%s/old/new/gc全文替换(每次确认)
:%s/old/new/gi全文替换(忽略大小写)
:set ignorecase设置查找不区分大小写
:set smartcase智能大小写(含大写字母时区分)
:set hlsearch高亮查找结果
:nohlsearch:noh临时取消高亮
:set incsearch实时增量查找

可视模式(选择)

命令说明
v字符选择
V行选择
Ctrl+v块选择(矩形选择)
aw选择一个单词(含空格)
iw选择单词内容(不含空格)
ap选择一个段落
ip选择段落内容
a" / i"选择双引号(含/不含引号)
a' / i'选择单引号
a( / i(选择括号
a{ / i{选择花括号
at / it选择 HTML 标签
o在可视模式中切换选择端点
gv重新选择上次的选区
Ctrl+vI块选择后在每行前插入
Ctrl+vA块选择后在每行后追加

分屏

命令说明
:split:sp水平分屏
:vsplit:vsp垂直分屏
:sp {file}水平分屏打开文件
:vsp {file}垂直分屏打开文件
Ctrl+w h切换到左屏
Ctrl+w j切换到下屏
Ctrl+w k切换到上屏
Ctrl+w l切换到右屏
Ctrl+w w循环切换窗口
Ctrl+w =等分窗口大小
Ctrl+w _最大化当前窗口高度
Ctrl+w |最大化当前窗口宽度
Ctrl+w c关闭当前窗口
Ctrl+w o关闭除当前外的所有窗口
Ctrl+w r向右旋转窗口
Ctrl+w R向左旋转窗口
Ctrl+w H当前窗口移到最左
Ctrl+w L当前窗口移到最右
Ctrl+w J当前窗口移到最下
Ctrl+w K当前窗口移到最上

宏与重复

命令说明
q{a-z}开始录制宏到寄存器 a-z
q停止录制
@{a-z}执行寄存器中的宏
@@重复上次执行的宏
{N}@{a-z}执行宏 N 次
.重复上次修改操作
{N}.重复上次修改 N 次

文件操作

命令说明
:e {file}打开文件
:e .打开文件浏览器
:w保存
:w {file}另存为
:wq:xZZ保存并退出
:q退出(有修改时会提示)
:q!ZQ强制退出不保存
:wa保存所有打开的文件
:qa退出所有
:qa!强制退出所有
:saveas {file}另存为
:read {file}在光标下方插入文件内容
:read !{cmd}在光标下方插入命令输出
:!{cmd}执行外部命令
:r !{cmd}插入命令输出到当前位置

缓冲区

命令说明
:ls:buffers列出所有缓冲区
:b {N}切换到第 N 个缓冲区
:b {name}切换到名称匹配的缓冲区
:bn切换到下一个缓冲区
:bp切换到上一个缓冲区
:bd关闭当前缓冲区
:bufdo {cmd}对所有缓冲区执行命令

配置速查 (~/.vimrc)

配置项说明推荐值
set number显示行号set number
set relativenumber相对行号set relativenumber
set tabstop=4Tab 宽度4
set shiftwidth=4缩进宽度4
set expandtab空格替代 Tabset expandtab
set autoindent自动缩进set autoindent
set smartindent智能缩进set smartindent
set ignorecase查找不区分大小写set ignorecase
set smartcase智能大小写set smartcase
set hlsearch高亮搜索结果set hlsearch
set incsearch增量搜索set incsearch
set mouse=a启用鼠标set mouse=a
set hidden允许隐藏未保存的缓冲区set hidden
set clipboard=unnamedplus使用系统剪贴板set clipboard=unnamedplus
set encoding=utf-8编码set encoding=utf-8
set history=1000命令历史行数set history=1000
set wildmenu命令行补全菜单set wildmenu
set scrolloff=8光标距顶/底保留行数8
set signcolumn=yes始终显示标记列set signcolumn=yes
set updatetime=250写入 swap 的延迟(ms)250
set colorcolumn=80显示 80 列参考线set colorcolumn=80
syntax on语法高亮syntax on
filetype plugin indent on文件类型检测filetype plugin indent on
创建于 2026/7/6 更新于 2026/7/15