有人用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的勝利,是時間本身的勝利。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.