Vim 命令速查表 - Vim 编辑器常用操作命令大全

Vim 的门槛不在配置而在两组肌肉记忆:motion(能在文件里精确移动而不必翻页)与查找替换(敢批量改而不怕改错)。服务器上没有图形界面,改 nginx、sshd 或线上代码时能靠 hjkl 加计数前缀、ciw 改词、:. 缩进这类操作,几百行的改动可以从十分钟压到几分钟。这张表按移动、编辑、查找替换、可视模式与保存退出分组,把最常用的键位和命令按操作意图排列,而不是按字母顺序背诵。判断学哪个的简单标准:任何「改这段重复文本」的需求都先落到可视块或 :%s,先用 / 确认命中范围再执行,能省掉大部分误操作。收尾那组 :q!、:w !sudo tee 这类命令则专门解决新手最常卡住的两个场景。

系统与运维·共 21 条命令·最后更新 2026-07-21

移动 Motion 5

gg / G
跳到文件开头 / 结尾
0 / $
跳到行首 / 行尾
w / b
向后 / 向前跳一个词
:42
跳到第 42 行
Ctrl-f / Ctrl-b
向下 / 向上翻一屏

编辑 Edit 6

i / a
在光标前 / 后进入插入模式
o / O
在下方 / 上方新建一行并插入
dd / yy
删除 / 复制当前行
p / P
在光标后 / 前粘贴
u / Ctrl-r
撤销 / 重做
x / r<char>
删除字符 / 替换单个字符

可视模式与保存退出 6

v / V
字符可视 / 行可视选择
Ctrl-v
块可视,列编辑用
:w
保存
:wq 或 ZZ
保存并退出
:q!
不保存强制退出
:w !sudo tee %
忘记 sudo 打开时强制保存

命令示例

不退出文件先存盘(应急最常用)

:w

编辑到一半需要存盘时用 :w,不必先 :q。配 :q! 可以丢弃改动强制退出,:wq 则是存盘并退出。

输出

"notes.md" 42L, 1834C written

全局替换并逐个确认

:%s/old/new/gc // c = confirm

% 表示全文,g 表示行内全部,c 表示每次确认。批量改动时用 c 比直接 g 安全,误改能当场撤销。

输出

replace with new/new (y/n/a/q)?

不进入插入模式就删除一整行

dd 3dd yy p

dd 删当前行,3dd 删三行;yy 复制当前行,p 粘贴。Vim 的命令模式让你不用移动光标也能操作整行。

在文件内搜索并跳转

/pattern n :nohlsearch

/ 向下搜、? 向上搜,n 跳下一个。:nohlsearch 清除高亮——搜索后满屏黄色会看不清代码。

常见坑与注意事项

  • 普通模式下 i、a、o、p、d 等键都是命令,误按会立刻改动文件;不确定时按 Esc 回到普通模式。
  • :q! 会丢弃所有未保存改动且无法恢复,:wq 与 :q 的区别要先分清。
  • 在插入模式(显示 -- INSERT --)下输入 :q 无效,需先按 Esc 退回普通模式。
  • Vim 的命令大多可撤销(u),但退出后未保存的改动无法恢复,长时间编辑前先 :w。
  • 中文输入法在 Vim 里可能吞掉按键,编辑中文文件时注意切换到英文输入模式。

提示

  • 卡在 Vim 出不去:按 Esc 回到普通模式,再输入 :q! 强制不保存退出。
  • 编辑系统文件忘了 sudo,用 :w !sudo tee % 直接提权保存,不用退出重开。
  • 大段替换前先 /word 确认匹配范围,再用 :%s,加 c 标志逐个确认更安全。
  • :set paste 关闭自动缩进,粘贴他人代码前先开、粘完 :set nopaste,可避免缩进被逐行放大。
  • :earlier 10m / :later 10m 在时间旅行模式下前后跳转,撤销改动试另一种做法比反复 Ctrl-o 更顺手。
  • 配置里设 set relatimetime 与 :set number 后,变更行显示相对时间,排查刚改的配置是否生效很直观。

常见问题

Vim 普通、插入、命令三种模式怎么快速切换?

启动默认在普通模式,按 i/a/o 进入插入模式打字,按 Esc 回到普通模式执行移动和编辑;普通模式下输入冒号进入命令行模式,输入 / 进入搜索。记住普通模式只负责操作、插入模式只负责打字即可。

用 Vim 打开文件后才发现没加 sudo,改完没法保存怎么办?

不用退出重开,直接输入 :w !sudo tee % 用 root 权限写回当前文件(% 代表当前文件名);若缓冲已只读,先 :e % 重新加载。更省事的方式是一开始就用 sudo vim 打开。

怎么在当前文件里全局替换,比如把所有 foo 改成 bar?

用 :%s/foo/bar/g 做全文件替换,加 ^ 限定行首、加 $ 限定行尾,去掉末尾的 g 则只替换每行首个匹配。需要逐个确认时改用 :%s/foo/bar/gc,用 y 或 n 决定每个替换。

改错了想撤销,撤销过头了想重做,怎么操作?

普通模式下按 u 撤销上一步,按 Ctrl+r 重做被撤销的操作;Vim 的撤销是多级历史,可连按 u 连续回退。若想丢弃全部更改,用 :q! 不保存强制退出即可。

想在多行同一列插入或删除内容(列编辑)怎么做?

普通模式下按 Ctrl+v 进入可视块模式,垂直移动选中多行同一列,按 I 在上部输入,最后按 Esc 让 Vim 把输入复制到整列各行的相同位置;按 d 或 x 则可删除选中的纵向区间。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们