定位: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 行。


七、新手高频错题(避坑指南)

  1. ❌ 输入命令没反应,一直输入字母 ✅ 先按 Esc 确认回到普通模式,再执行命令。
  2. ❌ :wq 保存失败,提示 E212: Can't open file for writing ✅ 要么加 ! 强制尝试,要么用 :w !sudo tee % 提权保存。
  3. ❌ 替换 :s/old/new 只替换了每行第一个 ✅ 末尾加 g 全局替换::%s/old/new/g。
  4. ❌ 查找后高亮一直不消失 ✅ 执行 :noh 取消高亮。
  5. ❌ 不小心按了 q 开始录制宏,屏幕底部出现 recording ✅ 按 q 停止录制;录制功能新手用不上,误触了按 q 退出即可。
  6. ❌ 按了 i 之后想删除整行,一直按退格 ✅ 按 Esc 回普通模式,dd 一秒删整行。

八、实操练习(结合你的环境)

用 vim 编辑之前的后端检测脚本,练习核心操作:

cd ~/scripts
vim check_backends.sh

练习步骤:

  1. 按 gg 跳到文件开头
  2. 按 o 在下一行插入注释 # 后端健康检测脚本
  3. 查找 9002:/9002
  4. 全局把端口 9000/9001/9002 替换成 8000/8001/8002::%s/900/800/g
  5. 撤销替换:u
  6. 跳到最后一行:G
  7. 保存退出::wq

需要我把这份整理成精简可归档的 Markdown 错题笔记版吗?

🔗 相关笔记