本文要点
- Vim 的三种模式:
普通模式、插入模式、命令行模式,一切操作都围绕模式切换展开 - 常用移动与编辑:
hjkl、gg/G、dd/yy/p、u/Ctrl-r,让光标移动和文本编辑快起来 - 查找与替换:
/关键词搜索、:%s/旧/新/g全局替换,改配置文件的利器 - Ex 模式批处理:
vim -es可无交互地批量改文件,适合在脚本里调用 - 通过
.vimrc开启行号、语法高亮等基础配置,提升日常编辑体验
为什么要学 Vim
服务器没有图形界面,改配置文件全靠命令行编辑器。Vim 是从 vi 进化而来的编辑器,几乎每个 Linux 发行版都预装或一键可装,掌握它是运维的基本功。
Vim 的核心设计理念是「模式」:在普通模式下用按键组合快速移动和编辑,需要输入文字时切换到插入模式。初学会觉得别扭,习惯后效率远高于鼠标编辑器。
本文在 Ubuntu 24.04 服务器(Vim 9.1)上实测演示,所有命令均可直接复制执行。

Vim 的三种模式
Vim 不像普通编辑器那样打开就能打字,它把编辑动作拆分成三种模式:
| 模式 | 作用 | 进入方式 | 返回普通模式 |
|---|---|---|---|
| 普通模式 | 移动光标、删除复制粘贴 | 启动后的默认状态 | — |
| 插入模式 | 输入文字 | i / a / o 等 | Esc |
| 命令行模式 | 执行保存退出、查找替换等命令 | 普通模式下按 : / ? | Esc |
打开 Vim 后默认处于普通模式,此时键盘上的字母不是用来打字的,而是触发各种命令。按 i 进入插入模式才能输入文字,按 Esc 回到普通模式。
打开文件
vim /etc/nginx/nginx.conf # 打开已有文件
vim newfile.txt # 打开不存在的新文件(保存后创建)
vim -R file.txt # 只读方式打开保存与退出
命令行模式下:
:w " 保存
:wq " 保存并退出
:q " 退出(未保存会报错)
:q! " 不保存强制退出
:x " 保存并退出(相当于 :wq)刚上手最常见的场景:打开了文件,改了几行,想退出却不知道命令。记住 Esc 后按 :wq 回车即可。
光标移动与文本编辑
普通模式下,hjkl 分别对应左、下、上、右(这样设计是为了手不离键盘主区)。更大的范围移动用下面这些:
| 命令 | 作用 |
|---|---|
hjkl | 左 / 下 / 上 / 右 |
w / b | 向后 / 向前跳一个单词 |
0 / $ | 跳到行首 / 行尾 |
gg / G | 跳到文件首行 / 末行 |
:行号 | 跳到指定行 |
Ctrl-f / Ctrl-b | 向下 / 向上翻页 |
编辑操作(都在普通模式下执行):
| 命令 | 作用 |
|---|---|
i / a | 在光标前 / 后进入插入模式 |
o / O | 在下方 / 上方新开一行并进入插入模式 |
x | 删除光标处字符 |
dd | 删除整行 |
yy | 复制整行 |
p | 在光标下方粘贴 |
u | 撤销 |
Ctrl-r | 重做 |
v | 进入可视模式,配合方向键选中文本 |
数字可以和命令组合,比如 5dd 一次删除 5 行,3yy 复制 3 行,这是 Vim 的高效之处。
查找与替换
在配置文件中快速定位关键词,用普通模式按 / 进入命令行模式输入关键词回车:
/nginx回车后高亮匹配项,按 n 跳到下一个,按 N 跳到上一个。
替换是改配置最常用的操作。命令行模式:
:s/old/new/ " 替换当前行第一个匹配
:s/old/new/g " 替换当前行所有匹配
:%s/old/new/g " 替换全文所有匹配(最常用)
:%s/old/new/gc " 全文替换,每次询问确认:s 前面的 % 表示作用于所有行;结尾的 g 表示一行内全部替换;c 表示替换前逐个确认,安全起见修改重要配置时建议加 c。
Ex 模式批量修改文件
前面的替换都要在交互界面里输入。Vim 还提供 Ex 模式(-es),可以在脚本里无交互地批量改文件,非常适合批量处理多个配置。
比如把 app.conf 里的端口 80 改成 8080:
vim -es -c '%s/80/8080/g' -c 'wq' app.conf-es 以静默 Ex 模式启动,-c 指定启动后执行的命令,多个 -c 依次执行。上面的命令相当于:打开 app.conf,全文把 80 替换成 8080,保存退出。

配合 find 可以批量处理一批文件:
find /etc/nginx/conf.d/ -name '*.conf' -exec \
vim -es -c '%s/80/8080/g' -c 'wq' {} \;用 .vimrc 做基础配置
Vim 默认外观朴素,把常用设置写进 ~/.vimrc,每次启动自动生效:
set number " 显示行号
syntax on " 语法高亮
set tabstop=4 " Tab 显示为 4 个空格宽度
set shiftwidth=4 " 缩进宽度
set expandtab " Tab 转成空格
set autoindent " 自动缩进
set hlsearch " 搜索高亮
set incsearch " 输入时即开始搜索
set ignorecase " 搜索忽略大小写
set smartcase " 有大小写时则区分编辑后重新打开 Vim 或执行 :source ~/.vimrc 立即生效。强烈建议第一行先加 set number,行号在排查配置、定位报错行时非常有用。
常用组合速查
| 场景 | 操作 |
|---|---|
| 快速跳到第 N 行 | :N 或 NG |
| 删除 5 行 | 5dd |
| 复制 3 行并粘贴 | 3yy 然后 p |
| 全文替换 IP | :%s/192.168.0.0/10.0.0.0/g |
| 撤销到上一步 | u |
| 打开第二个文件 | :e /path/file |
| 保存并退出 | :wq |
| 放弃修改退出 | :q! |
总结
Vim 的上手曲线主要在模式切换:普通模式负责移动和编辑,插入模式负责打字,命令行模式负责保存退出和查找替换。每天改配置文件,先用熟 hjkl 移动、i 插入、dd 删行、:wq 退出,再逐步学习查找替换和 Ex 模式批处理,就能覆盖绝大多数运维场景。
评论 (0)
暂无评论,快来抢沙发吧!