Sublime的Vim模式有三种互斥路径:vi_mode(ST4原生,功能极简)、Vintage(内置插件,已停更,仅支持基础命令)、Vintageous(第三方,唯一完整兼容Vim的方案)。

Sublime 的 Vim 模式到底有几种?别混着配
Sublime Text 没有统一的“Vim 模式”,只有三条互不兼容的路径:vi_mode(ST4 原生)、Vintage(内置插件)、Vintageous(第三方)。三者不能共存,配置项写错位置或同时启用,结果就是 Esc 不响应、dd 失效、状态栏不显示 NORMAL——不是你手速慢,是底层模式根本没加载。
确认当前用的是哪条路:
- 搜用户设置里有没有
"vi_mode": true→ 是 ST4 原生模式 - 搜
"ignored_packages"且含"Vintage"→ Vintage 被禁用;移除了且重启过 → 是旧版 Vintage - 搜
vintageous_开头的配置(如vintageous_use_sys_clipboard)→ 已安装 Vintageous,它会自动把Vintage加回ignored_packages
Esc 按了没反应?先关输入法、再试 Ctrl+[
90% 的“Esc 失效”问题和配置无关,而是被系统或 Sublime 自身拦截了:
- macOS 用户:中文输入法下
i/a/Esc全部失效,必须切英文键盘布局 - 自动补全弹窗(Auto Complete)会吞掉
Esc,在用户设置加"pressing_esc_disables_auto_complete_window": true -
Ctrl+[和Esc在 Vintage/Vintageous 中功能等价,但前者几乎不被任何软件劫持,建议优先用它切模式 - 别急着配
jj映射——基础通路不通,映射本身也触发不了
dd、yy、ciw 为啥不工作?看模式能力边界
这些操作不是“没配对”,而是原生能力就不支持:
-
vi_mode(ST4 内建):只预置h/j/k/l、i/a/Esc、:w/:q!;dd/yy需手动写键绑定宏,官方不提供 -
Vintage(内置):支持dd/yy/p/u,但不支持ciw、gq、可视块选择(Ctrl+v)、寄存器(如"ayy) -
Vintageous:默认支持全部,包括ciw、.(repeat)、"0p、:s/old/new/g、:e filename
想用 ciw 却死磕 Vintage,等于拿螺丝刀当电钻使——不是技巧问题,是工具选错了。
:w 能用不代表 Vim 模式完整,:set number 永远不生效
:w 能保存,是因为它是 Vintage 硬编码支持的两个 Ex 命令之一(另一个是 :q!)。其余所有 : 命令都是假象:
-
:q、:e、:set number、:set nu全部报错或静默失败——Vintage 根本没实现 Ex 命令解析器 - 行号必须走菜单 View → Line Numbers 或设
"line_numbers": true,:set number在任何原生模式下都无效 -
:wq不是原子命令,它先执行:w再执行:q,而后者不支持,所以最终效果是保存但不退出
最常被忽略的是:Vintageous 的配置项名必须严格为 vintageous_start_in_command_mode,少个 s 或拼错成 vintage_start_...,重启后照样进插入模式。











