一份精简的 Vim 常用操作速查表,覆盖日常开发中 90% 的使用场景。
四种模式
| 模式 | 进入方式 | 用途 |
|---|---|---|
| Normal | Esc |
浏览、移动、删除、复制 |
| Insert | i / a / o |
输入文本 |
| Visual | v / V / Ctrl+v |
选择文本 |
| Command | : |
执行命令 |
所有操作的起点是 Normal 模式,任何时候按 Esc 回到 Normal。
移动
字符/行级别:
h j k l— 左下上右0— 行首,$— 行尾^— 行首第一个非空字符w— 下一个单词开头,b— 上一个单词开头e— 当前单词末尾
屏幕/文件级别:
gg— 文件开头,G— 文件末尾Ctrl+d— 向下半屏,Ctrl+u— 向上半屏H— 屏幕顶部,M— 屏幕中间,L— 屏幕底部:{n}— 跳到第 n 行
查找跳转:
f{char}— 跳到本行下一个 char%— 跳到匹配的括号*— 搜索当前光标下的单词
编辑
插入:
i— 光标前插入,a— 光标后插入I— 行首插入,A— 行尾插入o— 下方新开一行,O— 上方新开一行
删除:
x— 删除光标处字符dd— 删除整行dw— 删除到下一个单词d$或D— 删除到行尾diw— 删除光标所在单词(不含空格)daw— 删除光标所在单词(含空格)
复制粘贴:
yy— 复制整行yw— 复制一个单词p— 在光标后粘贴,P— 在光标前粘贴
撤销重做:
u— 撤销Ctrl+r— 重做.— 重复上一次操作
修改:
cw— 删除到单词末尾并进入插入模式ci"— 修改双引号内的内容ci(— 修改括号内的内容cc— 修改整行
搜索替换
/pattern— 向下搜索?pattern— 向上搜索n— 下一个结果,N— 上一个结果:%s/old/new/g— 全局替换:%s/old/new/gc— 全局替换(逐个确认):s/old/new/g— 只替换当前行
Visual 模式
v— 字符选择V— 行选择Ctrl+v— 块选择(列编辑)
选中后:
d— 删除选中y— 复制选中>— 缩进,<— 反缩进U— 转大写,u— 转小写
块选择(Ctrl+v)的典型场景:给多行加注释。Ctrl+v 选中列 → I → 输入 // → Esc。
分屏
:sp— 水平分屏:vsp— 垂直分屏Ctrl+w h/j/k/l— 在分屏间切换Ctrl+w =— 均等分配屏幕:q— 关闭当前分屏
实用命令
:w— 保存,:q— 退出,:wq— 保存退出:e {file}— 打开文件:!{cmd}— 执行外部命令:set nu— 显示行号:set paste— 粘贴模式(避免自动缩进)ZZ— 保存退出(等同:wq)
组合技
Vim 的强大在于 operator + motion 的组合:
d3w— 删除3个单词y2j— 复制当前行及下面2行>3j— 缩进当前行及下面3行gUiw— 当前单词转大写guaw— 当前单词转小写=G— 从当前行到文件末尾自动缩进
掌握这个组合规则后,几乎不需要死记命令,Vim 自然就顺手了。