今日主题#
- 主主题:
编辑心智模型与模式 - 副主题:
为什么普通模式才是主工作模式
学习目标#
- 解决“会进入 Vim,但一写就乱”的根因。
- 明确 Vim 不是“随时都在输入文字”的编辑器,而是“先操作,再短暂输入”的编辑器。
- 分清普通模式、插入模式、命令行模式各自负责什么。
- 建立一个足够稳定的最小工作流:
- 进入文件
- 移动
- 短暂插入
- 退出插入
- 保存 / 退出
前置回顾#
- Day 000 已经明确:
- 主线目标是最终落到
nvim + LazyVim - 但前几天必须先把
vim的底层编辑手感打稳
- 主线目标是最终落到
- 当前本地环境已确认:
Vim 9.2Neovim 0.12.0vimtutor可用
- 所以 Day 001 仍先站在
vim的最小编辑心智上,把最基础但最关键的手感讲清楚。
典型场景#
这一篇要解决的是真实里最常见的几种混乱:
- 打开文件后总想立刻输入,于是频繁卡在插入模式里乱删乱改。
- 想移动到别处修改,结果先按了一堆方向键,再重新进插入。
- 每次改动都像“重新打字”,而不是“先定位、再修改”。
- 不确定自己现在到底处于哪种模式,按键结果总和预期不一致。
如果这些问题不解决,后面学更多命令只会更乱。
最小命令集#
今天只保留最小集合,不追求多。
模式相关#
Esc- 回到普通模式
i- 在光标前进入插入模式
a- 在光标后进入插入模式
o- 在当前行下方新开一行并进入插入模式
最小移动#
hjkl- 左、下、上、右
最小编辑#
x- 删除当前字符
u- 撤销
Ctrl-r- 重做刚才撤销的改动
保存与退出#
:w- 保存
:q- 退出
:wq- 保存并退出
:q!- 不保存强制退出
它是怎么用的#
核心心法:普通模式不是“退出态”,而是“工作态”#
很多初学者会把 Vim 想成:
- 进入编辑器
- 赶紧进入插入模式
- 像普通文本框一样一直打字
这正是“越写越乱”的起点。
Vim 更像这样工作:
- 先在普通模式观察和定位
- 决定接下来要做什么
- 只在需要输入新文字的那一小段时间进入插入模式
- 输入结束后立刻回到普通模式
所以普通模式不是“还没开始编辑”,而是“真正开始编辑”的地方。
插入模式应该短,不应该长住#
插入模式当然重要,但它在 Vim 里更像是一个短暂停留区:
- 想补几个字,用
i - 想接着当前字符后写,用
a - 想另起一行,用
o
输入完成就按 Esc 回来。
如果你长期待在插入模式里,会发生两件事:
- 你会退化成“终端里的普通文本输入”
- 你会失去 Vim 最值钱的地方:操作和移动的分离
u 和 Ctrl-r:让你敢于先动手,再回退#
Day 001 虽然还没开始讲更复杂的编辑语法,但撤销和重做应该当天就会。
本地 undo.txt 里最基础的两条就是:
u- 撤销上一次 change
Ctrl-r- 把刚才撤销掉的 change 重做回来
它们的价值不只是“出错后补救”,而是让你更敢于练习:
- 试一次
i - 补几处字
Esc- 发现不对就
u - 想拿回来就
Ctrl-r
先把这条保护绳建立起来,后面学移动、operator + motion、Visual 时都会更稳。
命令行模式负责“编辑器命令”,不是文本编辑#
像下面这些命令:
:w:q:wq
它们不属于普通模式,也不属于插入模式,而是通过 : 进入的命令行模式。
这里的心智模型很简单:
- 普通模式:移动和操作文本
- 插入模式:输入文字
- 命令行模式:对编辑器本身下命令
先把这三者职责分清,混乱会立刻少一半。
常见操作套路#
套路 1:改几个字,而不是“重新输入一整段”#
错误直觉:
- 先用方向键蹭过去
- 一直待在插入模式
- 删一点、补一点、再挪一点
更稳的方式:
Esc确认回到普通模式- 用
h j k l移动到目标位置 - 用
i或a进入插入模式 - 输完就
Esc
这就是 Vim 最基本的工作节奏。
套路 2:发现自己乱了,先按 Esc#
很多时候你不需要先分析错在哪,只需要先做一件事:
Esc
它的作用不是“取消一切”,而是“把你拉回可控状态”。
把这个反应练出来非常重要:
- 不确定当前在哪个模式
- 按键结果不对
- 编辑节奏乱了
先按 Esc,再继续。
套路 3:保存和退出要分开理解#
:w是保存,不退出:q是退出,如果有未保存内容可能会失败:wq是保存并退出:q!是放弃修改并退出
不要把它们混成一团。第一天只需要先分清楚这四个就够了。
环境差异:vim / nvim / LazyVim#
在今天这个主题上,三者的核心心智模型是一样的#
无论是:
vimnvimnvim + LazyVim
普通模式、插入模式、命令行模式的基本职责并不会变。
这也是为什么 Day 001 先学 vim 完全合理。
当前本地环境的实际情况#
- 本地已确认有:
Vim 9.2Neovim 0.12.0vimtutor
- 所以本篇虽然以
vim为事实锚点,但在nvim里同样成立。
到了 LazyVim,模式不会消失#
很多人误以为装了 LazyVim 之后就主要是记快捷键。其实不是。
LazyVim 只是给你:
- 更现代的文件搜索
- buffer 管理
- 项目导航
- LSP 工作流
但底层编辑动作仍然建立在今天讲的模式心智模型上。
今日练习(5-10 分钟)#
今天的练习目标不是快,而是稳。
练习材料#
随便新建一个文本文件,写入下面内容:
today i want to learn vim
vim feels strange at first
but i want to stop editing in chaos练习任务#
- 用
vim打开这个文件。 - 不用方向键,只用
h j k l在三行之间移动。 - 把第一行的
want后面补上really。 - 把第二行行尾补上
for me。 - 在第三行下面新开一行,输入:
normal mode should be my default mode- 故意在任意一行多输入几个字,再用
u撤销一次,用Ctrl-r重做一次。 - 每做完一小步,都按一次
Esc确认自己回到普通模式。 - 最后用
:wq保存退出。
完成标准#
- 能清楚感受到“普通模式 -> 短暂插入 -> 再回普通模式”的节奏。
- 能在乱掉时用
Esc把自己拉回稳定状态。 - 能把
u/Ctrl-r当成练习时的安全网。 - 不再把插入模式当作默认常驻模式。
今日问题与讨论#
我的问题#
问题 1:为什么一开始只学这么少的命令?#
- 简答:
- 因为今天的核心不是扩大命令量,而是纠正编辑心智模型。
- 场景:
- 一上来学太多命令,最后还是卡在“我现在到底该不该先按
Esc”这种基本问题上。
- 一上来学太多命令,最后还是卡在“我现在到底该不该先按
- 依据:
- 当前阶段的目标是“不再一写就乱”,不是“命令数量增长”。
- 当前结论:
- Day 001 的成功标准不是会更多,而是更稳。
- 是否需要后续回看:
否
问题 2:为什么 Esc 这么重要?#
- 简答:
- 因为它是从混乱状态回到可控状态的最短路径。
- 场景:
- 不确定当前模式、误输入、编辑节奏断掉时。
- 依据:
- 本地
vim实际行为与 Vim 基本模式设计。
- 本地
- 当前结论:
- 把“乱了先
Esc”练成条件反射,是后续所有章节的基础。
- 把“乱了先
- 是否需要后续回看:
是- 到后面进入更复杂操作时仍然会反复用到。
问题 3:普通模式是不是只负责移动?#
- 简答:
- 不是。普通模式既负责移动,也负责发起删除、复制、修改等操作。
- 场景:
- 初学者容易把普通模式理解成“移动模式”,然后一改东西就立刻钻进插入模式。
- 依据:
- Vim 的设计本身就是在普通模式里组织编辑动作。
- 当前结论:
- 普通模式是主工作模式,不只是导航模式。
- 是否需要后续回看:
是- Day 003 的
operator + motion会把这件事讲透。
外部高价值问题#
问题 1:为什么有时按一次 u,会把刚才整段输入一起撤掉?#
- 问题:
- 我只是刚才连续输入了一小段文字,为什么
u会把这一段一起撤掉,而不是只撤一个字符?
- 我只是刚才连续输入了一小段文字,为什么
- 简答:
- 因为 Vim 基础撤销默认按 change 工作,不是按字符工作;一次插入模式往往会形成一个 change。
- 场景:
- 你按
i进入插入模式,连续打了一句,再按Esc,随后按u。
- 你按
- 依据:
- 本地
undo.txt。 D:\program\Learn-Vim\ch10_undo.md。
- 本地
- 当前结论:
- Day 001 先记住
u/Ctrl-r就够了;如果以后需要把长输入拆成更细的撤销块,再补Ctrl-G u。
- Day 001 先记住
- 是否需要后续回看:
是
常见误区或易混点#
- 误区 1:进入 Vim 后应该马上进插入模式
- 更稳的顺序是先观察和定位,再短暂插入。
- 误区 2:普通模式只是拿来移动
- 实际上它是后续所有编辑动作的组织中心。
- 误区 3:一乱了就继续乱按
- 更好的策略是先
Esc,再重新开始。
- 更好的策略是先
- 误区 4:
:wq、:q、:q!都差不多- 它们处理未保存修改的语义并不一样。
扩展内容#
A/I/O- 仍然属于 Day 001 这一层的高频插入入口,只是主线先保留
i/a/o。
- 仍然属于 Day 001 这一层的高频插入入口,只是主线先保留
Ctrl-G u- 在插入模式里主动打断 undo block,适合长段输入时分段撤销。
g-/g+/:undolist- 用来回看更旧或更新的文本状态,先知道 Vim 的撤销不是只有一条直线。
vimtutor- 如果你想额外做入门练习,它仍然是不错的补充材料。
今日小结#
Day 001 最重要的不是命令表,而是一句判断:
- 普通模式是默认工作模式
- 插入模式是短暂停留的输入模式
只要这件事真的建立起来,后面学习移动、删除、修改、文本对象时,手感会好很多;如果这件事没建立,后面学再多也容易退回“终端里打字”。
明日衔接#
下一步建议进入:
Day 002:移动:从“硬挪”到“直接到位”
重点会开始真正解决:
- 为什么
h j k l还不够 - 为什么按词、按行、按文件移动才是真正的提速点
- 怎样减少“方向键式移动”
复习题#
- 为什么说普通模式不是退出态,而是工作态?
- 为什么插入模式应该短,而不应该长住?
- 当你不确定自己现在状态对不对时,第一反应应该是什么?
:w、:q、:wq、:q!分别代表什么?- 为什么今天先不追求学更多命令,而是先追求更稳的节奏?


