
作为一名运维工程师,你是否习惯了使用Vim编辑配置文件,却从未深入挖掘它的强大功能?Vim天生为运维场景设计,无论是处理日志、编写脚本,还是批量修改配置,都能极大提升效率。
Vim最重要的不是命令本身,而是它的“语言”模型:
操作符(Operator) + 动作(Motion) = 编辑行为
例如:
d(删除) + w(一个单词) → dw
c(修改) + i{(花括号内部) → ci{
y(复制) + ap(一个段落) → yap
一旦你理解了这个模型,命令就不再需要死记硬背,而是可以自然组合。这对运维工作尤其关键,因为你经常需要面对结构化文本的批量操作,比如处理配置块、日志段或JSON/YAML文件。
一、保存与退出
| 命令 |
作用说明 |
:w |
保存当前文件 |
:wq / :x / ZZ |
保存并退出 |
:q |
退出(有未保存修改会失败) |
:q! / ZQ |
强制退出,不保存 |
:update |
仅在文件被修改时才写盘 |
:w !sudo tee % |
无权限文件用 sudo 保存(非常常用) |
:cq |
以非 0 状态码退出 Vim(取消 git rebase、shell vi 模式等) |
二、光标移动
基础方向与行内移动
| 命令 |
说明 |
h j k l |
左 下 上 右 |
0 / ^ |
行首 / 第一个非空字符 |
$ |
行尾 |
gm |
行中间 |
gg / G |
文件首 / 文件尾 |
{n}G |
跳转到第 n 行 |
按“语义”移动
| 命令 |
说明 |
w / b |
按单词前进 / 后退 |
e |
到单词结尾 |
{ / } |
上一个 / 下一个段落(配置块、日志块) |
% |
在 {} () [] 之间跳转 |
f{c} / t{c} |
行内快速定位字符 |
三、屏幕滚动与跳转历史
| 命令 |
说明 |
zz |
当前行居中 |
zt / zb |
当前行到屏幕顶部 / 底部 |
Ctrl-d / Ctrl-u |
下 / 上滚动半屏 |
Ctrl-f / Ctrl-b |
下 / 上滚动整屏 |
Ctrl-o / Ctrl-i |
跳转历史 后退 / 前进 |
| `` |
回到上一次跳转位置 |
`. |
回到上一次修改位置 |
四、插入与编辑
进入插入模式
| 命令 |
说明 |
i / a |
光标前 / 后插入 |
I / A |
行首 / 行尾插入 |
o / O |
下 / 上新建一行 |
R |
替换模式(覆盖输入) |
撤销与重复
| 命令 |
说明 |
u |
撤销 |
Ctrl-r |
重做 |
. |
重复上一次修改(神器) |
五、删除 / 修改 / 替换
| 命令 |
说明 |
x / X |
删除光标处 / 前一个字符 |
dd |
删除整行 |
D / d$ |
删除到行尾 |
dw |
删除一个单词 |
cc |
整行替换 |
ciw |
修改当前单词 |
caw |
修改整个单词(含空格) |
xp |
交换相邻字符(修 typo) |
>> / << |
右 / 左缩进 |
== |
重新缩进当前行 |
六、复制、粘贴与寄存器
| 命令 |
说明 |
yy |
复制整行 |
{n}yy |
复制 n 行 |
yw / yiw |
复制单词 |
p / P |
光标后 / 前粘贴 |
"+p |
使用系统剪贴板 |
"0p |
粘贴最近一次 yank 的内容 |
"_dd |
删除但不污染剪贴板 |
删除操作尽量用 "_ 前缀,避免覆盖寄存器中的重要内容。
七、VISUAL 模式
| 命令 |
说明 |
v |
字符选择 |
V |
行选择 |
Ctrl-v |
块选择(列操作) |
vi{ / va{ |
选中花括号内部 / 整块 |
vi" / va" |
选中字符串 |
gv |
重新选择上一次选区 |
典型运维场景:
- 批量加/删注释
- 对齐配置文件中的配置项
- 多行变量同时修改
八、搜索与替换
| 命令 |
说明 |
/pattern / ?pattern |
向前 / 向后搜索 |
n / N |
下一个 / 上一个匹配 |
* / # |
搜索光标下的词 |
:noh |
取消高亮 |
替换命令
| 命令 |
说明 |
:s/old/new/ |
当前行替换一次 |
:%s/old/new/g |
全文件替换 |
:%s/old/new/gc |
全文件替换(确认) |
:g/pat/d |
删除所有匹配行 |
:v/pat/d |
删除不匹配的行 |
:%s/\s\+$//e |
删除行尾空格 |
九、多文件操作
| 命令 |
说明 |
:vimgrep /pat/ **/* |
在项目中搜索 |
:copen |
打开 quickfix |
:cn / :cp |
下一个 / 上一个匹配 |
:cfdo %s/a/b/g |
对所有匹配文件执行替换 |
:wall |
保存所有文件 |
十、宏
| 命令 |
说明 |
qa |
开始录制宏到 a |
q |
停止录制 |
@a |
执行宏 |
{n}@a |
执行 n 次 |
@@ |
重复上一个宏 |
十一、窗口、分屏与标签页
| 命令 |
说明 |
:sp / :vsp |
横向 / 纵向分屏 |
Ctrl-w h/j/k/l |
窗口间移动 |
Ctrl-w o |
只保留当前窗口 |
:tabnew |
新标签页 |
gt / gT |
下 / 上一个标签 |
掌握这些核心命令,能让你在运维工作中游刃有余。如果想探索更多命令行工具和系统管理技巧,可以到云栈社区的相应板块交流学习。
|