把光標挪進引號,敲下ci”,里面的內容瞬間被清空,輸入模式自動激活。那是我學會Vim的第三個月,某個周三下午,一個重復了上百次的動作突然在指尖冒出一個念頭:這不像在操作編輯器,更像在對代碼說話。
2011年第一次碰Vim的時候,我完全沒這層領悟。當初照著博客里幾段配置,復制了一份.vimrc,連j是向下移動光標都不知道。按下j,屏幕上的光標靜默下滑一格,我卻傻等著文本框里蹦出字母。頭一周是煎熬,頭一個月是別扭,所有的肌肉記憶都跟通常的文本編輯背道而馳。可緩過來之后,Vim的模態邏輯開始長進手里,再碰其他編輯器,總覺得隔著一層看不見的緩沖墊,自己跟代碼之間永遠多了一次鼠標點擊、一次菜單查找,或一次意識上的停頓。
![]()
走過十多年,當VS Code被幾乎所有人裝進電腦,當JetBrains的IDE把重構、索引、靜態分析做成開箱即用的大滿貫,當Sublime、Atom、Zed輪番在技術圈掀起短暫的追捧,我還是一遍遍地回到Neovim。不是因為這些工具不夠好。恰恰相反,JetBrains的產品強到近乎蠻橫,VS Code勝在對絕大多數人“剛好夠用”還易于擴展,每一個都有足夠的理由稱王。可我的問題并不在主流的平均值上,而在自己手和腦之間那條極為私人的反饋回路里。
Neovim跟得上我的工作節奏,卻未必跟得上我的打字速度——這聽起來矛盾,但“打字快”從來就不是編程的核心。編碼這件事,大部分時候是在移動光標、改動小片段、刪掉錯誤的抽象、重塑函數、跨文件跳轉、跑測試、核對診斷信息,然后把這個循環再重復幾十遍。Neovim就是繞著這個循環長出來的。絕大多數編輯器把文本當成文檔,把鍵盤當成單純的輸入設備。Vim直接把編輯變成了一門語言。這話聽起來有些夸張,直到你在代碼里泡夠了一定的小時數。
ci”意味著“修改引號里的內容”,dap是“刪除一個段落”,.可以原樣重放上一次改動,宏則讓你把一串瑣碎的編輯動作錄制下來,在文件任意角落重復回放。更有意思的是,文本對象讓你操作的是“意義單元”,而不是去數字符。引號里的內容、一個單詞、一個括號包裹的代碼塊,都能成為直接的操作對象。這不是一堆鍵盤快捷鍵的拼湊,而是一套有名詞、動詞和賓語的語法。一旦這套語法滲進手指,編輯器的存在感就會變得極低。你不會再用鼠標在代碼間拖拽,也不會為了找文件去點側邊欄的目錄樹,不會為了一天干五十遍的動作反復打開命令面板。那些高頻操作,都化成了細小、筆直的動作,幾乎沒有多余的信息從眼中流過。
我也問過自己,到底為什么在VS Code和JetBrains一統江湖的這些年里,還堅持守著Neovim這個看似老派的工具。答案跟“情懷”無關,也跟“極客人設”沒有半點聯系。Neovim的壓倒性優勢在于,它從不把別人的工作流理念硬塞進你的編碼過程里。圖形界面起家的編輯器,幾乎都帶著一套空間分配上的強烈主張。資源管理器得擺在這兒,終端放在那兒,Git面板必須有自己的一片形狀,調試器又得獨占一塊小天地。用不了太久,編輯器就成了一個布滿儀表和按鈕的駕駛艙,你不得不花心思去維持這套界面的秩序。
Neovim的起點只是一個緩沖區,哪些東西有資格占據它周圍的位置,全由我來決定。想要文件樹,可以掛上。想要模糊查找,Telescope或fzf-lua隨自己手感挑。想要Git集成,Fugitive至今仍是我用過的軟件里質感最好的那一類。想要語言服務器、診斷信息、代碼格式化、片段補全、Treesitter、測試運行器和自動補全,Neovim都能在不把自己變成遲鈍的Electron儀表盤的前提下,把這些事料理得井井有條。
這一點比多數人愿意承認的還要關鍵。速度并不只是啟動耗時那點事,盡管Neovim在這方面也做得足夠好。速度更深的一層叫作“信任”。當你按下組合鍵,編輯器的響應是即時的,沒有任何一絲遲滯讓你懷疑自己有沒有按對;當你錄制一段宏,回放時它精確復現每一步操作,不會因為上下文不同而中斷;當你跳轉文件、彈出診斷浮窗,一切都干脆利落,像一只手跟上腦子的指令,而非在等待程序消化。這種毫厘之間的可靠,最終會內化成一種對工具的托付感:你不再擔心編輯器會不會突然卡頓、會不會彈出一個長長的通知橫條、會不會自動整理出一些你并不想看見的面板。你知道它就在那里,安靜、直接、不替你做主張。
這么多年走下來,Neovim對我來說早已不是一個“效率利器”的標簽能概括的。它更像是編碼時與代碼之間建立的一種言語默契。那種默契的形成,要經歷一個從迷惑到探索,再到慢慢內化的漫長過程。而這個過程本身,或許正是讓我在每一次編輯器潮流涌動后又安靜回到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.