00 Vim 起步:先完成一次安全编辑
这一页的目标很小:在一个可随时丢弃的文本里完成“移动、修改、保存、退出”。先做到这一点,比背一张快捷键表更重要。
下面按原生 Vim / Neovim 的稳定语义讲解。VS Code、JetBrains、Obsidian 等环境通常支持这些基础动作,但可能有按键冲突或实现差异;遇到不一致时,以对应 Vim Mode 的说明为准。你可以先在日常编辑器中练习,不必立刻迁移终端或配置插件。
开始前:给练习留出安全空间
新建一个没有价值的临时文本,或打开一段可复制的示例文字。练习时只在这个文件中保存;不要直接拿未提交的代码、配置文件或笔记试手。
如果你在终端使用 Vim 或 Neovim,先记住两件事:
:w保存当前文件;:q退出。:q!会放弃尚未保存的修改后退出。只在确定这些修改不需要保留时使用。
在 VS Code、JetBrains 或 Obsidian 中,保存和关闭仍可以使用应用原有的命令;本页重点是编辑区里的 Vim 动作。
第一轮:只区分两种状态
Vim 最开始的不适应,通常不是按键本身,而是“同一按键在不同状态有不同含义”。现在只需要认识两个模式:
- Normal 模式:按键代表动作;用于移动、删除、复制和撤销。
- Insert 模式:按键会输入文字。
按 Esc 总能尝试回到 Normal 模式。把它当作每次操作前的起点。
- 在练习文本中按
Esc。 - 按
i,输入一行Vim 练习。 - 按
Esc,再随意按j或k。
完成标志:最后两次按键没有输入 j 或 k,而是移动了光标。你已经完成了最重要的一次模式切换。
不必刻意减少按
Esc的次数。刚开始时,多按一次比在错误模式下继续编辑更省心。
第二轮:先用四个方向完成移动
在 Normal 模式中练习 h、j、k、l。它们分别向左、下、上、右移动一个字符或一行。
| 动作 | 按键 | 练习 |
|---|---|---|
| 向左 / 向右 | h / l | 把光标移动到一个单词的第一个与最后一个字符。 |
| 向下 / 向上 | j / k | 在三行文字之间往返。 |
| 到下一个单词 | w | 连按几次,观察光标总是落在下一个单词的开头。 |
| 到本行开头 / 结尾 | 0 / $ | 在一行较长的文字中来回移动。 |
本轮只要求能看着键盘完成移动,不追求速度。h 和 l 在真实工作中未必是最高效的选择,但它们能帮助你建立“Normal 模式只发命令”的感觉。
第三轮:一次只学一个编辑动作
编辑动作也从 Normal 模式开始。每做完一项都按 Esc,确认自己回到了起点。
| 想做什么 | 按键 | 小练习 |
|---|---|---|
| 在光标前输入 | i | 把光标放在一个词前,加上一个前缀。 |
| 在光标后输入 | a | 把光标放在词尾,补上一个字符。 |
| 在下一行新建一行 | o | 输入一行后按 Esc,再用 j 回来看它。 |
| 删除一个字符 | x | 删除一个错别字。 |
| 撤销上一步 | u | 刚删除后立刻撤销,确认文字恢复。 |
| 重做被撤销的操作 | Ctrl-r | 撤销后重做,确认删除再次出现。 |
完成标志:你能故意制造一个小错误,再用 u 和 Ctrl-r 往返一次。这样就不必担心练习时按错键。
第四轮:把动作组合成一次真实修改
复制下面三行到练习文件。若你已经在编辑器的 Vim 模式中,可以直接使用它;在终端 Vim/Neovim 中也一样。
今天学习 Vim
我要慢慢建立肌肉记忆
先完成一个小目标
然后按以下顺序完成,不必一次成功:
- 按
Esc,用j、k在三行间移动。 - 用
0和$到第二行的开头、结尾。 - 把光标放到第二行末尾,按
a,补上一个句号或其他标记,再按Esc。 - 到第三行,按
o新建一行,输入自己的下一步目标,再按Esc。 - 按
u撤销新行;确认后按Ctrl-r恢复它。 - 确认内容无误后保存;在终端 Vim/Neovim 中输入
:w并回车,再输入:q并回车退出。
如果某一步混乱了,按 Esc,从当前位置继续即可。Vim 的学习不是把一串按键完整背下来,而是能随时回到一个确定的状态。
接下来一周:少量、高频、替换旧动作
先不要增加太多命令。连续一周,每天用五分钟完成下面两件事:
- 打开一小段无风险文字,用
j、k、w、0、$移动,不用方向键。 - 至少完成一次
i或a输入、一次x删除、一次u撤销。
感觉这些动作开始自然后,继续阅读 Vim 的核心思想。你会把已经练过的 w 和 $ 放进一套“Action + Target + Control”的编辑模型中。
卡住时怎么办
- 按键变成了文字:你在 Insert 模式;按
Esc后重试。 - 不知道刚才改了什么:先按
u;它比猜测当前状态更可靠。 - 退出时提示有修改:需要保留就用
:w后再:q;不需要保留才使用:q!。 - 编辑器里没有反应或快捷键冲突:确认已启用 Vim 模式,并查看对应编辑器的接入说明。
下一步
- Vim 的核心思想:把已经练过的移动与编辑动作组合成一门文本操作语言。
- VS Code 中使用 Vim:在熟悉的编辑器中开启 Vim 模式。
- JetBrains IDE 中使用 Vim:在 JetBrains IDE 中接入 IdeaVim。
- 终端中使用 AstroNvim:准备好后再进入完整的终端工作流。
评论