Vim 开发常用操作指南
目录
- 模式切换
- 光标移动
- 编辑操作
- 搜索和替换
- 文件操作
- 数字前缀
- Visual模式
- 撤销和重做
- 编程常用
- 高效组合技巧
- 实用建议
模式切换
基本模式
命令 |
功能 |
Normal |
默认模式,用于导航和命令 |
i |
进入 Insert 模式(在光标前插入) |
a |
进入 Insert 模式(在光标后插入) |
o |
新建下一行并进入 Insert 模式 |
O |
新建上一行并进入 Insert 模式 |
v |
进入 Visual 模式(字符选择) |
V |
进入 Visual Line 模式(行选择) |
Ctrl+v |
进入 Visual Block 模式(块选择) |
: |
进入 Command 模式 |
ESC |
返回 Normal 模式 |
光标移动
基本移动
命令 |
功能 |
h, j, k, l |
左,下,上,右 |
w |
下一个单词开头 |
b |
上一个单词开头 |
e |
当前单词结尾 |
0 |
行首 |
^ |
行首第一个非空字符 |
$ |
行尾 |
gg |
文件开头 |
G |
文件结尾 |
快速跳转
命令 |
功能 |
f{char} |
跳转到行内下一个指定字符 |
F{char} |
跳转到行内上一个指定字符 |
t{char} |
跳转到行内下一个指定字符前 |
; |
重复上次 f/F/t 搜索 |
, |
反向重复上次 f/F/t 搜索 |
% |
跳转到匹配的括号 |
行跳转
命令 |
功能 |
{number}G |
跳转到指定行号 |
:{number} |
跳转到指定行号 |
Ctrl+g |
显示当前位置信息 |
编辑操作
删除
命令 |
功能 |
x |
删除当前字符 |
dd |
删除当前行 |
d{motion} |
删除到指定位置 |
dw |
删除到下一个单词 |
d$ |
删除到行尾 |
d0 |
删除到行首 |
{number}dd |
删除多行 |
复制和粘贴
命令 |
功能 |
yy |
复制当前行 |
y{motion} |
复制到指定位置 |
yw |
复制单词 |
y$ |
复制到行尾 |
p |
在光标后粘贴 |
P |
在光标前粘贴 |
替换和修改
命令 |
功能 |
r{char} |
替换当前字符 |
R |
进入替换模式 |
c{motion} |
修改到指定位置 |
cw |
修改单词 |
cc |
修改整行 |
C |
修改到行尾 |
s |
删除字符并进入插入模式 |
S |
删除行并进入插入模式 |
搜索和替换
搜索
命令 |
功能 |
/{pattern} |
向前搜索 |
?{pattern} |
向后搜索 |
n |
下一个搜索结果 |
N |
上一个搜索结果 |
* |
搜索当前光标下的单词 |
# |
反向搜索当前光标下的单词 |
替换
命令 |
功能 |
:s/old/new/ |
替换当前行第一个匹配 |
:s/old/new/g |
替换当前行所有匹配 |
:%s/old/new/g |
替换全文所有匹配 |
:%s/old/new/gc |
替换全文所有匹配(需确认) |
:1,10s/old/new/g |
替换1-10行的匹配 |
💾 文件操作
保存和退出
命令 |
功能 |
:w |
保存 |
:q |
退出 |
:wq |
保存并退出 |
:q! |
强制退出(不保存) |
:x |
保存并退出(如果有修改) |
ZZ |
保存并退出 |
ZQ |
强制退出 |
文件管理
命令 |
功能 |
:e {file} |
打开文件 |
:w {file} |
另存为 |
:r {file} |
读取文件内容到当前位置 |
:!{command} |
执行外部命令 |
数字前缀
Vim的强大功能:几乎所有命令都可以加数字前缀
命令 |
功能 |
5j |
向下移动5行 |
3dd |
删除3行 |
2yy |
复制2行 |
10x |
删除10个字符 |
4w |
向前移动4个单词 |
Visual模式
在 Visual 模式下的操作
命令 |
功能 |
d |
删除选中内容 |
y |
复制选中内容 |
c |
修改选中内容 |
> |
增加缩进 |
< |
减少缩进 |
u |
转换为小写 |
U |
转换为大写 |
撤销和重做
命令 |
功能 |
u |
撤销 |
Ctrl+r |
重做 |
. |
重复上次操作 |
编程常用
缩进
命令 |
功能 |
>> |
增加当前行缩进 |
<< |
减少当前行缩进 |
={motion} |
自动缩进到指定位置 |
gg=G |
自动缩进整个文件 |
注释(需要配置或插件)
命令 |
功能 |
gcc |
切换当前行注释状态 |
gc{motion} |
注释指定范围 |
括号匹配
命令 |
功能 |
% |
跳转到匹配的括号 |
]] |
下一个函数 |
[[ |
上一个函数 |
高效组合技巧
常用组合
命令 |
功能 |
说明 |
ciw |
修改整个单词 |
change in word |
ci" |
修改引号内内容 |
change in quotes |
ci( |
修改括号内内容 |
change in parentheses |
di{ |
删除大括号内内容 |
delete in braces |
ya} |
复制大括号及其内容 |
yank around braces |
快速编辑
命令 |
功能 |
A |
移动到行尾并进入插入模式 |
I |
移动到行首并进入插入模式 |
o |
在下一行插入 |
O |
在上一行插入 |
实用建议
学习策略
- 从基础开始:先熟练掌握
hjkl
移动和基本编辑
- 逐步进阶:每天学习1-2个新命令
- 多练习:在实际编程中使用,形成肌肉记忆
- 避免方向键:强迫自己使用
hjkl
- 利用数字前缀:这是Vim效率的关键
Vim核心思想:动词+对象
Vim的强大之处在于动词+对象的组合:
动词 |
对象 |
组合 |
功能 |
d (删除) |
w (单词) |
dw |
删除单词 |
c (修改) |
i" (引号内) |
ci" |
修改引号内容 |
y (复制) |
ap (段落) |
yap |
复制段落 |
v (选择) |
i{ (大括号内) |
vi{ |
选择大括号内容 |
常用对象
w
- 单词
s
- 句子
p
- 段落
"
- 双引号内
'
- 单引号内
(
或 )
- 小括号内/含括号
{
或 }
- 大括号内/含括号
[
或 ]
- 方括号内/含括号
t
- XML/HTML标签内
动作修饰符
i
- 内部(inside)
a
- 周围(around,包含边界)
示例:
ci(
- 修改括号内容(不包含括号)
ca(
- 修改括号及内容(包含括号)
🎓 进阶练习
日常练习建议
- 禁用方向键:在配置中禁用,强制使用hjkl
- 每日一技:每天专门练习一个新命令
- 实际项目:在真实代码中使用Vim
- 速度测试:使用 vimtutor 或在线Vim练习网站