sublime text的vintage模式默认禁用且启用后默认为插入模式,需清除ignored_packages中的"vintage"并完全重启才能生效;仅支持:w和:q!命令,高级vim功能须换用vintageous。

Sublime Text 的 Vintage 模式根本不是“开个开关就 Vim 了”
它默认被禁用,且启用后行为和 Vim 用户预期相反:一打开文件就是插入模式,Esc 按了没反应、h/j/k/l 不动、: 打不出来——这不是你配错了,是插件根本没加载,或加载了但卡在错误模式。
必须做两件事:
- 打开 Preferences → Settings – User,确认 "ignored_packages" 数组里没有 "Vintage"(比如改成 [] 或删掉该项)
- 保存后**完全退出 Sublime Text(关掉所有窗口)再重开**,热重载不生效
验证是否成功:打开任意文件 → 按 Esc 或更可靠的 Ctrl+[ → 再按 h;光标左移才算真正进命令模式。否则全是白忙。
为什么 Esc 失效,以及怎么绕过它
Esc 被劫持是无鼠化实践里最常卡住的点,不是键盘坏了,而是外部干扰:
- 中文输入法(尤其是 Windows 微软拼音、搜狗)会吞掉
Esc,切到英文状态再试 - 自动补全浮窗(如函数提示)优先响应
Esc关自己,可在用户设置加"pressing_esc_disables_auto_complete_window": true - 远程桌面(RDP)、IDEA、甚至某些游戏后台会全局拦截
Esc,此时Ctrl+[是唯一稳定替代方案
别硬等 Esc 回弹——把 Ctrl+[ 当成默认退出插入模式的按键,写进肌肉记忆更实际。
:w 和 :q! 能用,但别信其他 : 命令
Vintage 没有 Ex 命令解析器,只硬编码支持两个指令:
-
:w→ 等效于Ctrl+S,能保存 -
:q!→ 强制关闭当前标签页(不退出整个 Sublime),丢弃未保存更改
其余全报 Unknown command:
-
:q、:wq、:e filename、:set number、:set paste都不认 - 行号得手动开:
View → Line Numbers,不是:set number - 搜索用
/keyword+Enter,n/N跳转是完整可用的
想靠 :set 调参数?原生 Vintage 不支持,这不是配置问题,是代码里压根没写。
真要无鼠化,别硬撑 Vintage,直接换 Vintageous
Vintage 支持 dd、yy、p、u、/,但以下能力它**完全缺失**,且无法通过配置补上:
-
ciw、vi"等文本对象操作 - 可视模式(
v选中后不能用hjkl扩展选区) - 寄存器(
"ayy、"*p同步系统剪贴板) - 宏录制(
q)、.重复、标签跳转(Ctrl+])
解决路径很明确:
- 用
Package Control: Install Package装Vintageous - 安装后它会自动把
Vintage加回ignored_packages,两者互斥 - 配置写在
Preferences → Package Settings → Vintageous → Settings – User里,例如:"vintageous_start_in_command_mode": true、"vintageous_use_sys_clipboard": true
复杂点在于:Vintageous 的键绑定逻辑、配置项位置、甚至快捷键冲突都和原生 Vintage 不同——起点选错,后面所有映射和习惯都要推倒重来。











