很多运维工程师每天都在用 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

左 下 上 右

行首 / 第一个非空字符

行尾

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

下 / 上一个标签