FAQ:装备、疑难杂症与心态
怎么用这一页
这一页收的是横跨多章的问题:装备(键盘、Esc、输入法)、按了没反应的疑难杂症、两个 IDE 插件的已知坑,以及学习曲线上的心魔。按键本身忘了怎么按,查 附录 A 速查表;某一章的概念想回炉,点答案里的章节链接。按症状找问题 —— 每一问的标题就是你半夜会打给朋友的那句话。
一、装备与手感
Q1 · Esc 太远了,小拇指够不着怎么办?(第 1 章承诺的详细步骤)
主流解法是把大写锁定键(Caps Lock)改成 Esc —— 两个最难够到的键互换命运,vim 体验立刻质变。各平台做法:
macOS( Ventura 及以后):系统设置 → 键盘 → 「键盘快捷键…」→ 「修饰键」→ 把「大写锁定键」选成 Escape;旧版 macOS 在 系统偏好设置 → 键盘 → 右下角「修饰键…」里,同样位置。只对当前键盘生效,外接键盘可单独设一套。
macOS 进阶:装 Karabiner-Elements(免费),可以做「短按 Caps = Esc、长按 Caps = Ctrl」的双功能映射 —— 一颗键同时解决 Esc 远和 Ctrl 远,vim 重度用户标配。
Windows:用 PowerToys 的 Keyboard Manager 把 Caps Lock 重映射到 Escape;或注册表 Scancode Map(一次性导入)。
第 1 章说过,这里再强调一次:建议先按原味指法练一周再改 —— 手指知道自己够得着 Esc,和实际改键,是两码事。
Q2 · 中文输入法老忘切,按 d 弹出拼音怎么办?(第 1 章承诺的根治配置)
症状:插入模式打完中文,Esc 回普通模式,输入法还停在中文 —— 下一个 d 变成拼音候选。根治思路:退出插入模式时自动把输入法切回英文。
VSCode(VSCodeVim)官方方案:README 提供了四个 vim.autoSwitchInputMethod.* 设置,搭配任一切换工具使用。官方示例走 im-select(开源命令行工具,brew install im-select 或参照其仓库说明):先切到你的英文输入法,在终端跑一次 im-select,输出的就是你的 key(US 布局是 com.apple.keylayout.US,ABC 是 com.apple.keylayout.ABC),然后写进 settings.json:
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"
README 明确说任何第三方切换程序都行:第 1 章提过的 macism 同样可用,把两条命令的路径换成 macism 即可({im} 占位符保留)。装好配置后,Esc 一按,输入法自动回英文 —— 这是中文用户「值回票价」排行第一的配置。
IDEA(IdeaVim):IdeaVim 官方没有对等的 autoSwitchInputMethod 设置;通用替代是 macOS 的「自动切换到文稿的输入法」(系统设置 → 键盘)加上手动肌肉记忆,或用输入法自身的快捷键(多数中文输入法支持 Shift 切中英)兜底。
Q3 · 要不要把方向键禁掉逼自己戒断?
不必须,但值得试。两个插件和 IDE 都能改键或用扩展禁掉方向键,强制期通常三天到一周 —— 但「物理戒断」容易变成「效率归零」。更推荐本站各章的训练法:时间盒。每天 30 分钟,在时间盒内绝对不碰方向键(把鼠标推远一点就够了),时间盒外随意 —— 两周后时间盒内的习惯会自己溢出到全天。第 2 章 §9、第 3 章的 3 天计划都是这个思路。
Q4 · 笔记本键盘 / 没有 Esc 的键盘能用吗?
能。hjkl 对键盘零要求,笔记本键盘反而因为键程短更跟手。真正受影响的只有两处:①Esc 位置(见 Q1 改 Caps);②个别 61 键配列把方向键并入了层,误触方向键会拆散撤销单元(第 10 章陷阱一),改键后即消失。先把手头键盘用顺,再考虑换键盘 —— 换键盘救不了指法,时间盒才行。
二、模式与编辑疑难杂症
Q5 · 插入模式里还能用 Cmd-c / Cmd-v / Cmd-z 吗?
Q6 · 为什么我的 `.` 忽然不重复了?
. 只记最后一次修改,而它比想象中健忘:任何新的修改命令(dd、x、ciw…)都会覆盖这段记忆;插入模式里只要中途用了方向键,一次插入会被拆成多个单元,. 只重复最后一小段。排查顺序:①是不是刚按过别的修改键(记忆被覆盖,正常);②上次插入里是不是混了方向键(第 10 章陷阱一);③想重复的是「移动」?. 不记移动 —— 移动用 ;(重复 f/t)或宏。规律记一句:`.` 记动词,不记名词。
Q7 · 可视模式选少了/选多了,一调整选区就没了?
选区是活的:还在可视模式里时,直接用移动键(w、j、f{字符}…)伸缩它;要修剪另一头,按 o 把光标甩到对面端点再收。已经施工完(按了 d/c/y)选区确实会消失 —— 但 gv 一键召回上一次选区,「圈一次、动多次」;第 7 章 §7 有完整演示。另一个「选不完」:想选的形状是矩形(每行同列)时字符选会带上一堆不要的 —— 那是块选 Ctrl+v 的主场,同章 §4。
Q8 · p 粘贴出来位置/缩进全乱了?
三、插件与 IDE 的已知坑
Q10 · 两个插件最容易踩的坑,一张清单
按出现频率排:①相对行号 —— VSCodeVim 没有行号设置,VSCode 用户要去编辑器原生 editor.lineNumbers: relative 找(IDEA 才是 set relativenumber);②改了 .ideavimrc 不生效 —— 它是启动读入的文件,看通知栏的 reload 提示或重启;③冲突弹窗选了不落盘 —— IdeaVim 的「这个键给谁」弹窗在插件更新后可能重弹,判完立刻把 sethandler 行写进配置文件;④surround 在 VSCodeVim 默认已开,别在设置里瞎找;⑤本站演示若在 file:// 下空白,开个本地 server(python3 -m http.server)。以上每条的展开在 第 12 章 pitfalls 与各章陷阱区。
Q11 · Ctrl-a / Ctrl-f 按下去是 IDE 的行为,「失灵」了?
不是失灵,是一个键两个主人:Ctrl-a 在 vim 里是数字加一,在 IDEA 里(Windows/Linux 键位)是全选;Ctrl-f 在 vim 里是下翻页,在 VSCode 里是查找。两边都有一行式仲裁:IDEA 写 sethandler <C-a> a:ide(把键判给 IDE)或 a:vim(留给 vim);VSCode 写 "vim.handleKeys": {"<C-f>": false}(false = 不归 vim 管)。判给谁的原则:谁的功能在你的工作流里更常用判给谁 —— 完整清单与示例见 第 12 章 §8 的冲突仲裁表。
Q12 · 宏录砸了,文件被改得乱七八糟?
先按 u —— 宏的每一轮回放都进撤销栈,连发 30 次砸了 30 处,几个 u(或 IDE 的撤销)就回到录前。然后诊断而不是重录::reg 看寄存器里宏的按键序列,定位是哪一步跑偏(最常见:宏里用了 gg/G 这类绝对跳转,或结尾忘了推进 j)。小修不必重录:录制中按 qA 是往寄存器 a 追加,补个尾巴就行。完整修复手册在 第 10 章 §8「宏调试修复」。
Q13 · 学这套要不要顺手装个真 Vim / Neovim?
现在不要。本站的目标是在 IDE 里用 Vim —— VSCodeVim / IdeaVim 已经覆盖了「编辑语言」的全部核心(移动、文本对象、寄存器、宏、块选),而 IDE 的索引、重构、调试一样不丢。终端 Vim/Neovim 的增量价值在终端工作流与配置工程化,那是另一门课(PLAN 里明确列为非目标)。路线建议:先把本站 13 章用熟,某天你发现「想在 ssh 的服务器上也能这么改文件」时,再去装真 Vim —— 那时所有按键肌肉记忆直接平移,入门成本只剩配置。第 0 章的路线图就是这个顺序。
四、心态与学习曲线
Q14 · 学了一两周,写码反而更慢了,要放弃吗?
不仅正常,而且是必经的「退化期」 —— 旧技能(鼠标)被压制、新技能还没长全,效率曲线先跌后涨。第 0 章给过四周曲线:第一周靠生存七键活下来,第二周移动篇让手回家,第三周「编辑语言」开始说整句,第四周语法成瘾 —— 退化期正好卡在第二到第三周之间,你现在就在谷底附近。两个止损动作:①回到各章的时间盒训练(每天 30 分钟,盒内零鼠标,盒外不设限 —— 别全天硬扛);②拿 第 13 章的案例在真实代码里跑一遍,「一条按键顶鼠标五次」的爽感是熬过谷底的燃料。绝大多数人在 3–4 周回到原速,之后一路向上。
Q15 · 学到第 10 章,前面章节的键全忘了?
忘是常态,重查三次的键基本就刻进肌肉了。本站为此准备了两层检索:忘「怎么按」 —— 附录 A 速查表按场景分组,14 组表格每行注明出处章节,打印出来贴手边;还会忘就点回那一章重看演示 —— 动画比重看文字快得多。忘「该用什么」 —— 每章末尾的「本章速记」表和「三件事」就是为回炉设计的,扫一眼比翻正文快十倍。真正的顺序是:用了→忘了→查了→再忘→再查→长在手上了 —— 查表不是失败,是学习曲线的一部分(但别忘了第 0 章的忠告:表是给会的人省时间的,入门靠的还是一章一章过)。