定位:Linux 运维必备编辑器,所有服务器默认预装;专注配置编辑、脚本修改高频操作,不涉及复杂开发功能 核心难点:三种模式切换,新手 90% 的问题都出在模式混淆
一、核心:三种模式与切换
Vim 有三种基础模式,所有操作都基于模式,刚进入 Vim 默认是普通模式。
| 模式 | 作用 | 进入方式 | 退出方式 |
|---|---|---|---|
| 普通模式(Normal) | 光标移动、删除、复制、撤销、执行快捷命令 | 刚进入 Vim 默认就是;插入模式按 Esc |
—— |
| 插入模式(Insert) | 输入、编辑文本 | 普通模式按 i / a / o |
按 Esc 回到普通模式 |
| 底行模式(Command) | 保存、退出、全局查找替换、设置 | 普通模式按 : |
回车执行 / 按 Esc 回到普通模式 |
❗ 新手最高频坑:输入命令没反应、一直输入字母,大概率是卡在插入模式,先按
Esc回到普通模式再操作。
二、普通模式:高频快捷操作
所有操作都在普通模式下执行,不用进入插入模式,是 Vim 高效的核心
1. 光标移动(运维最常用)
| 按键 | 作用 |
|---|---|
h j k l |
左、下、上、右(替代方向键,熟练后手不用离开主键区) |
0 |
跳到当前行行首 |
$ |
跳到当前行行尾 |
gg |
跳到文件开头 |
G |
跳到文件结尾 |
:10 + 回车 |
跳到第 10 行(指定行跳转,排错看日志神技) |
Ctrl + f |
向下翻一页 |
Ctrl + b |
向上翻一页 |
2. 删除操作
| 按键 | 作用 |
|---|---|
x |
删除光标所在单个字符 |
dd |
删除整行(最高频) |
3dd |
从当前行开始,向下删除 3 行 |
d0 |
删除光标到行首 |
d$ / D |
删除光标到行尾 |
dg |
删除光标到文件开头 |
dG |
删除光标到文件结尾 |
3. 复制、粘贴
| 按键 | 作用 |
|---|---|
yy |
复制当前整行 |
3yy |
复制向下 3 行 |
p |
粘贴到光标下一行 |
P(大写) |
粘贴到光标上一行 |
4. 撤销、重做
| 按键 | 作用 |
|---|---|
u |
撤销上一步(等于 Ctrl+Z) |
Ctrl + r |
重做,恢复撤销的操作 |
.(小数点) |
重复上一次操作(超级好用,比如重复删除行、重复粘贴) |
三、插入模式:进入编辑
四种常用进入方式,场景不同
| 按键 | 作用 | 适用场景 |
|---|---|---|
i |
光标前插入 | 光标位置前面加内容 |
a |
光标后插入 | 行尾追加内容 |
o(小写) |
光标下一行新建空行并插入 | 行下面新增一行 |
O(大写) |
光标上一行新建空行并插入 | 行上面新增一行 |
技巧:运维改配置常用
A(直接跳到行尾并插入),等效于$ + a,在行尾加参数非常方便。
四、底行模式:保存、退出、查找替换
普通模式下按 : 进入,输入命令回车执行。
1. 保存与退出
| 命令 | 作用 | 注意 |
|---|---|---|
:w |
保存文件,不退出 | 只保存 |
:q |
退出 | 文件没修改才能退出 |
:wq |
保存并退出 | 最常用 |
:q! |
强制退出,不保存 | 修改错了放弃改动 |
:wq! |
强制保存并退出 | 只读文件权限不够时,强制写(仅文件所有者/root有效) |
:x |
保存并退出 | 和 :wq 区别:文件没修改时,x 不会更新修改时间 |
普通模式快捷保存退出:
ZZ(大写连续两个Z),等效:x,手不用挪到底行,更快。
2. 查找替换(运维改配置核心)
基础查找
普通模式下按 / + 关键词,回车查找
n:向下找下一个N:向上找上一个:noh:取消查找高亮
全局替换(最高频)
# 全文替换,把 old 替换成 new
:%s/old/new/g
拆解:
%:代表全文所有行s:substitute 替换命令g:global 一行内全部替换(不加 g 只替换每行第一个)c:替换前确认(:%s/old/new/gc),重要文件建议加 c 确认
指定行替换
# 替换第1到第10行的 old
:1,10s/old/new/g
3. 常用设置
| 命令 | 作用 |
|---|---|
:set nu |
显示行号 |
:set nonu |
取消行号 |
:set ic |
查找忽略大小写 |
:set noic |
取消忽略大小写 |
五、进阶实用操作
1. 可视模式(选中文本)
普通模式下按 v 进入可视模式,移动光标选中文本
v:按字符选择V(大写):按行选择 选中后操作:d:删除选中y:复制选中>:向右缩进<:向左缩进
2. 分屏编辑(对比配置文件神器)
| 命令 | 作用 |
|---|---|
:sp 文件 |
水平分屏,打开另一个文件 |
:vsp 文件 |
垂直分屏 |
Ctrl + ww |
光标在两个分屏之间切换 |
:q |
关闭当前分屏 |
3. 同时打开多个文件
vim a.txt b.txt c.txt
:n:下一个文件:N:上一个文件:files:查看所有打开的文件
六、运维专属高频技巧
1. 只读文件强制保存(权限不够神技)
编辑系统配置(如 /etc/sources.list)时,普通用户打开,保存时报权限不足 不用退出重开,直接执行:
:w !sudo tee %
原理:把当前缓冲区内容通过 sudo 权限写入文件,
%代表当前文件名。
2. 快速执行 shell 命令
不用退出 vim,直接执行命令:
:!ls /tmp
回车后回到 vim。
3. 打开文件直接跳转到指定行
排错看日志时,直接跳到报错行号:
vim +100 access.log
打开后直接在第 100 行。
七、新手高频错题(避坑指南)
- ❌ 输入命令没反应,一直输入字母 ✅ 先按
Esc确认回到普通模式,再执行命令。 - ❌
:wq保存失败,提示 E212: Can't open file for writing ✅ 要么加!强制尝试,要么用:w !sudo tee %提权保存。 - ❌ 替换
:s/old/new只替换了每行第一个 ✅ 末尾加g全局替换::%s/old/new/g。 - ❌ 查找后高亮一直不消失 ✅ 执行
:noh取消高亮。 - ❌ 不小心按了
q开始录制宏,屏幕底部出现recording✅ 按q停止录制;录制功能新手用不上,误触了按q退出即可。 - ❌ 按了
i之后想删除整行,一直按退格 ✅ 按Esc回普通模式,dd一秒删整行。
八、实操练习(结合你的环境)
用 vim 编辑之前的后端检测脚本,练习核心操作:
cd ~/scripts
vim check_backends.sh
练习步骤:
- 按
gg跳到文件开头 - 按
o在下一行插入注释# 后端健康检测脚本 - 查找
9002:/9002 - 全局把端口 9000/9001/9002 替换成 8000/8001/8002:
:%s/900/800/g - 撤销替换:
u - 跳到最后一行:
G - 保存退出:
:wq
需要我把这份整理成精简可归档的 Markdown 错题笔记版吗?
评论