vim 中撤销用 u、重做用 ctrl+r,支持数字前缀;:undolist 查看历史并配合 :undo {n} 跳转;启用 set undofile、set undodir、set undolevels 实现持久化撤销。

在 Vim 中撤销与恢复操作,核心靠 u(undo)和 Ctrl + r(redo),但要注意它和普通编辑器不同:Vim 的撤销是分层级、可回溯的,并支持多步撤销/重做。
撤销上一步修改(undo)
在正常模式下按 u,即可撤销最近一次更改(比如一次插入、删除、替换等)。每次按 u 都会回到更早的状态。注意:
- Vim 把一次“原子操作”视为一个撤销单位——例如连续输入多个字符后退出插入模式,整个插入过程算作一步,按一次 u 就全部撤回;
- 在插入模式中误按了退格或方向键,只要没退出插入模式,这些不算独立修改,不影响撤销栈;
- 如果想一次性撤销多步,可以加数字前缀,比如 3u 表示撤销最近 3 次修改。
恢复被撤销的操作(redo)
撤销之后想重新应用刚才那步?在正常模式下按 Ctrl + r(不是 Ctrl+R 大写,而是小写 r,且需同时按住 Ctrl)。同样支持数字前缀,如 2
⚠️ 注意:只有在撤销之后才能 redo;如果中间执行了新编辑动作,redo 栈会被清空,无法再恢复之前撤销掉的内容。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
查看撤销历史(:undolist)
输入 :undolist 可以列出当前缓冲区的撤销分支和各步时间戳、行号变化等信息。每行代表一个可跳转的撤销点,带编号。配合 :undo {N}(如 :undo 5)可直接跳转到指定序号的状态。
这个功能对修复误操作特别有用——比如改乱了一段代码,又连续按了好几次 u,不确定现在在哪一步,用 :undolist 就能看清路径。
避免意外丢失撤销历史
Vim 默认只保留有限的撤销步数(受 undolevels 选项控制),关闭文件再打开后撤销历史也会清空。如需长期保留,可启用“持久化撤销”:
- 在 vimrc 中添加:set undofile(自动保存撤销历史到 .swp 同目录下的 .un~ 文件);
- 同时建议设:set undodir=~/.vim/undo//(把所有 .un~ 文件统一存到指定目录,避免污染项目目录);
- 再加大深度:set undolevels=1000。










