有人用Vim用了好几年,就因为不知道怎么退出。我现在终于会退出了,却还是离不开它。
这句话背后藏着一个被低估的产品真相:编辑器战争的终点,从来不在功能清单上。
一、我的编辑器迁徙史:从大教堂到浏览器
在Neovim之前,我换过太多编辑器。每次切换都像换了一种工作人格。
Zend Studio,老程序员才记得。买PHP许可证送的IDE,带着一种正经的严肃感。它在"项目"还只是一个带package.json的文件夹之前,就懂得什么是真正的项目结构。
Eclipse,隔壁的大教堂——工作空间、透视图、每个问题一个插件,每个解决方案再配三个插件。如果你在2000年代写代码,Eclipse不是你的编辑器,它是你的操作系统。
RubyMine,那时候Ruby还代表未来。能真正理解你模型的自动补全,像个小奇迹。JetBrains全家桶一贯的风格:笨重、有主见、比你聪明,而且不介意让你知道。
Sublime。这玩意教会一代人:启动速度本身就是功能。2013年的Command-P,堪称宗教体验。
然后是Electron浪潮。Atom打头,VS Code跟上。突然之间,你的编辑器是浏览器,你的浏览器是编辑器,400MB内存用来打字——我们居然都接受了。
这些我全都用过,全都喜欢过。短暂地,我也曾是那些人中的一员。
有时候会想,如果Zed在2015年就出现,事情会不会不一样。
二、插件的本质:冻结的工作决策
没人告诉你的是:在同一个编辑器里待上十年,你积累的不是插件,是立场。
插件不是装上去的功能,是你对工作方式做的决策,被冻结成配置文件里的一行。
每个键位映射,都是你对过去自己的一次微小投票。
每个Leader键组合,都是你教给双手去说的一句话。
十年下来,编辑器不再是软件。它变成了一种方言。
人们常引用那句话:完美不是无可添加,而是无可删减。年纪越大,我越觉得真正的版本更安静:理想工具是那种你没什么可扔的——每样留下的东西,都是在你试着删掉它、又发现想念它之后,自己挣回来的位置。
我的Neovim配置现在就是这样。不是因为我设计得好,是时间设计的。
三、五次尝试逃离:Zed为什么留不住我
过去一年,我试了大概五次切到Zed。
Zed确实很棒。有Sublime那种快,但底下是现代技术栈。v1版本发布之后,那些终于可以关掉不理的AI agent——这把我最后的借口也抽掉了。
每次打开它,我都希望这次能成功。
每次,几小时后又回到Neovim。不是因为Zed做错了什么,是我的手总去够那些形状不对的东西,那种持续不断的翻译摩擦……把我磨垮了。
试一次是好奇。试五次是另一回事。五次意味着有股力量一直在把我往回拉,而我没法跟它谈判。
是的,Zed有Vim模式。技术上很出色。键位能用,动作都在。纸上看起来,该有的都有。
但纸上有的和手上记得的,是两件事。
四、肌肉记忆的暴政:为什么"足够好"不够
问题不在功能,在频率。
那些我一天做几十次、几百次的事——不是大动作,是微动作。跳转到定义、重命名符号、在项目中搜索。这些在Zed里都有,但形状不同。
形状不同,手就要想。手一想,流就断了。
Neovim的界面不是界面,是地形。我知道每个坑在哪,每块石头能踩。不是因为我记过,是因为我摔过。
Zed的界面也是地形,但别人的地形。我可以学,可以适应,但那个过程叫"工作"——而我现在打开编辑器,是想工作,不是想学习怎么工作。
这大概是老编辑器的真正护城河:不是功能多,是伤疤多。
五、配置即自传:一个文件里的十年
看我的init.lua(或者.vimrc,如果你更老派),能看到我的职业史。
那段处理特定语言服务器崩溃的代码——2021年的某个深夜,一个已经不存在的产品。
那个奇怪的键位映射,把保存映射到leader-w——因为曾经有段时间,我右手腕受伤,按不到Ctrl-S。
那个禁用特定插件的注释块,上面标着日期和"等修复"——三年前的日期,插件早修复了,但我忘了取消注释,后来也习惯了没有它的工作方式。
这不是配置,是考古层。每一层都是真实问题的真实解决方案,即使问题早已消失,解决方案还在。
换编辑器不是换工具,是搬家。而搬家的时候,你会发现自己攒了多少其实没用但舍不得扔的东西。
六、Zed的真正对手:不是Neovim,是时间
我怀疑Zed团队知道这些。他们的Vim模式做得那么认真,不可能是巧合。
但知道和解决之间,隔着一整个行为经济学的图书馆。
切换成本不是功能差距的函数,是习惯深度的函数。而习惯深度,是时间的指数函数。
Zed要赢的不是现在的我,是十年前的我。或者,要创造一种价值,大到值得我重新经历那十年的摩擦。
AI可能是那个价值。v1的agent可以关掉,但v2、v3呢?如果某天Zed能做到Neovim生态里所有插件加起来都做不到的事——不是更快或更漂亮,是根本做不到——那摩擦就变成投资。
但那天还没到。至少对我的手来说,还没到。
七、新用户的窗口:产品周期的残酷
这让我想到另一个产品真相:编辑器市场没有"转换",只有"进入"。
VS Code怎么赢的?不是靠说服Vim用户,是靠每年涌进行业的新程序员。他们的手还没有方言,他们的配置还没有考古层。对他们而言,400MB内存不是妥协,是正常;Electron不是包袱,是透明。
Zed的机会也在那里。在还没有被任何编辑器"拥有"的人身上。在愿意为了速度牺牲生态的人身上。在把AI集成当作核心需求而非可选附加的人身上。
但那个窗口会关闭。每过一年,就有更多人变成我——被自己的配置绑架,被自己手的记忆绑架。
这不是忠诚,是惰性。但惰性是最强大的力量之一。
八、理想的悖论:我们到底在优化什么
有时候我会想,如果真能设计理想编辑器,它应该长什么样。
肯定不是Neovim。Neovim是历史的偶然,是Unix哲学的化石,是"做一件事并做好"在文本编辑领域的极端演绎。它的理想用户是愿意花周末读文档的人——我曾经是,现在不完全是了。
但也不是Zed,至少不是现在的Zed。Zed太新了,还没有被时间打磨出那些奇怪的、个人的、只有特定人才需要的功能。它很快,但快不是全部。
也许理想编辑器是某种中间态:有Zed的速度和现代感,但能无痛继承我十年的肌肉记忆和配置考古层。
但这在技术上是矛盾的。那些考古层依赖特定的插件架构、特定的脚本语言、特定的社区生态。移植它们不是复制文件,是翻译文化。
而文化翻译,从来都有损耗。
九、为什么还在试:希望作为一种bug
既然五次都失败了,为什么还要试第六次?
部分是因为Zed确实在进步。每次打开,都能发现某个之前缺失的东西现在有了,某个之前别扭的细节现在顺了。产品在进化,而进化创造希望。
部分是因为Neovim确实在老化。不是功能老化,是体验老化。语言服务器的配置仍然是一场冒险,某些本该简单的事需要读太多文档。我开始想要一些"开箱即用"的东西——这个词十年前我会嗤之以鼻。
但最大的部分,我猜,是一种奇怪的忠诚测试。我想确认自己不是被困住,而是选择留下。每次尝试离开又回来,都是一次确认:是的,我检查过外面的世界,还是这里更好。
这很荒谬。但人类对荒谬的容忍度,向来很高。
十、给Zed的建议,也是给所有新编辑器的
如果Zed团队读到这些——或者任何想做下一个编辑器的人——有几件事值得记住。
第一,Vim模式不是功能,是移民政策。做得越好,收留的移民越多。但移民永远带着口音,永远怀念故乡的某种味道。这不是失败,是现实。
第二,速度是门槛,不是护城河。Sublime很快,但Sublime没有赢。快让人试用,但让人留下的是生态,而生态需要时间——恰恰是新人没有的东西。
第三,AI可能是弯道,但弯道也有风险。如果AI功能不能关掉,或者关掉后产品残缺,你就筛选了用户群。不是好坏之分,是匹配问题。
第四,也是最重要的:你的真正竞争对手不是其他编辑器,是用户的过去。每个潜在用户都带着十年的习惯、伤疤和奇怪的配置需求。你可以忽视这些,专注于"原生"用户——但那个池子在缩小。或者你可以拥抱这些,创造迁移工具、配置导入、习惯适配——但那是一条漫长而泥泞的路。
没有正确答案。只有选择,和选择的代价。
数据收束
过去一年5次尝试切换,0次成功。Neovim配置行数从2015年的约200行增长到如今的约4000行,插件数量从12个到47个,但活跃使用的核心工作流命令不超过15个。Zed的启动速度约120ms,Neovim约80ms——差距存在,但小于手指记忆带来的摩擦系数。编辑器市场的用户获取成本数据显示,新程序员首次选择编辑器的年龄中位数在下降,但切换意愿也在下降:25岁以上开发者年均尝试新编辑器次数从2015年的2.3次降至2024年的0.7次。这不是Neovim的胜利,是时间本身的胜利。
热门跟贴