前幾天看到 JetBrains Fleet 公測,下載下來體驗(yàn)了下,來寫一篇測評。
Fleet 這個(gè)編輯器在今年年初就開放了內(nèi)測申請,當(dāng)時(shí)我也提交了,但可能由于自己不使用他們產(chǎn)品的緣故,一直沒等到內(nèi)測資格。
既然公測了,至少也要達(dá)到基本可用的地步,但在我這段時(shí)間的試用中,發(fā)現(xiàn)的問題不少,也有一些影響到了最基礎(chǔ)的開發(fā)流程。
Fleet 是什么
一句話介紹:Fleet 是 JetBrains 開發(fā)的一款輕量級編輯器,和 VS Code 是一類。
VS Code 相信大家很熟悉了,長期位居編輯器排行榜首,前端開發(fā)必備神器,我自己也用了兩年以上。
JetBrains 官網(wǎng)的介紹是這樣的:

官網(wǎng)寫著它是一個(gè) IDE,但現(xiàn)在看來,它還不是完全體,暫且叫做編輯器,畢竟它能做的事 VS Code 大多都能做。
官網(wǎng)給出的亮點(diǎn)如下:
- 智能:可以在編輯器模式下快速啟動(dòng),然后激活智能模式獲得代碼補(bǔ)全等功能
- 分布式:可以將后端運(yùn)行在 JetBrains Space 上,也可以跑在自己的遠(yuǎn)程機(jī)器,或者 Docker 中
- 協(xié)作:多人協(xié)作開發(fā),能看到對方的進(jìn)度,大家共享一套終端和調(diào)試器
- 多語言支持:目前支持 Python / Java / Javascript / Go / HTML 等
我的評價(jià)是沒有亮點(diǎn),編輯器模式在 VS Code 中可以通過插件按需啟用實(shí)現(xiàn),VS Code 的 Remote 插件帶起了遠(yuǎn)程開發(fā)的潮流,Live Share 可以實(shí)現(xiàn)多人協(xié)作開發(fā),至于多語言支持,用過的都說好,除了安卓開發(fā)和 C。
另外,這玩意的正式版是收費(fèi)的,價(jià)格未知。JetBrains 在這個(gè)新產(chǎn)品上沿用了其它 IDE 的定價(jià)模式,社區(qū)版只可用于個(gè)人學(xué)習(xí)和開源項(xiàng)目,而且不支持遠(yuǎn)程開發(fā)等高級功能。
JetBrains 深耕 IDE 產(chǎn)品線,加上公司一般會(huì)為員工購買許可證,這倒也不是什么大問題。
說到許可證,這里順便提醒大家一下,公司買的許可證只能用來做公司的項(xiàng)目,做個(gè)人項(xiàng)目需要自己再買一份。
上手
我使用的系統(tǒng)是 Manjaro,運(yùn)行 Linux 6.0.0 內(nèi)核,8GB 內(nèi)存。
Fleet 版本是 1.9.231。
這里的演示項(xiàng)目是 JFetcher,一個(gè)簡書數(shù)據(jù)采集服務(wù),總代碼量不到一千行。
打開速度略慢于 VS Code,考慮到還在內(nèi)測階段,可以接受。
在編輯器模式下的界面是這樣的:

這設(shè)計(jì)風(fēng)格很 VS Code,不過底欄的配色比 VS Code 默認(rèn)的藍(lán)條好看。
此時(shí)內(nèi)存占用為 908M,用 VS Code 打開同樣的項(xiàng)目,啟用所有 Python 相關(guān)擴(kuò)展,內(nèi)存占用為 227M。
看來瀏覽器套殼優(yōu)化好也是相對省資源的,Java 在客戶端上跑還是太重了。
接下來我們激活智能模式,點(diǎn)擊右上角的閃電圖標(biāo)。

Fleet 成功識別到了項(xiàng)目中的 pyproject.toml 文件,并調(diào)用 Poetry 完成了項(xiàng)目依賴的安裝,同時(shí)開始索引項(xiàng)目目錄下的文件和所有第三方庫的文件。
內(nèi)存占用一路上升,最終穩(wěn)定在 2863MB,同時(shí)由于索引更新,CPU 持續(xù)滿載。
當(dāng)我打開項(xiàng)目文件夾,發(fā)現(xiàn) .mypy_cache 沒有被自動(dòng)隱藏的時(shí)候,就已經(jīng)想到會(huì)發(fā)生什么了。
這是 Python 靜態(tài)類型分析工具 mypy 的緩存目錄,存儲(chǔ)著整個(gè)項(xiàng)目中的類型信息,在我的項(xiàng)目中,有 1640 個(gè)文件,以 JSON 格式為主。
看起來 Fleet 也嘗試索引了這些文件,但我試著使用文本查找功能,沒有找到文件中的內(nèi)容。
簡單看了一下對各種文件類型的支持:
- .py:Python 源代碼文件當(dāng)然是支持的,語法高亮和自動(dòng)補(bǔ)全正常
- .dockerignore 和 .gitignore:沒有高亮(也沒什么可高亮的),有基于單詞的補(bǔ)全
- .yaml:有高亮,沒有任何補(bǔ)全,但有錯(cuò)誤提示
- .md:有高亮,不支持預(yù)覽
- .toml:有高亮,有基于單詞的補(bǔ)全,有錯(cuò)誤提示
- requirements.txt:啥都沒有
- Dockerfile:有高亮,有智能補(bǔ)全,有錯(cuò)誤提示,但沒有命令的解釋
- docker-compose.yml:有高亮,有智能補(bǔ)全,有錯(cuò)誤提示,沒有命令解釋
整體來說,我對 .yaml 文件的補(bǔ)全不滿意,對 .md 文件不支持預(yù)覽感到有些失望,其它文件格式支持尚可。
順便提一句,在 docker-compose.yml 中,每個(gè) service 的左側(cè)都會(huì)出現(xiàn)運(yùn)行按鈕,可以一鍵運(yùn)行對應(yīng)容器,也可以運(yùn)行所有。
我沒有使用 Makefile 的項(xiàng)目,如果大家有,歡迎分享這個(gè)格式的支持情況。
關(guān)于 Python 的測試
首先,開啟智能模式后界面配色沒有發(fā)生變化,VS Code 語言服務(wù)器加載成功之前,方法名等語法要素是白色的,加載后則是主題設(shè)置的顏色。
各種常見緩存目錄沒有自動(dòng)隱藏,也沒有變灰,和普通文件夾無異,這一點(diǎn)是比較不友好的。
明明能檢測到全局解釋器,卻不顯示出來,自動(dòng)搞定了環(huán)境配置也沒有任何提示,內(nèi)置終端同樣不會(huì)自動(dòng)激活虛擬環(huán)境。
代碼編輯體驗(yàn)方面,VS Code 可以在自動(dòng)補(bǔ)全右側(cè)顯示出對應(yīng)函數(shù) / 類的用法,但在 Fleet 上我沒有找到這一功能,只有函數(shù)名右側(cè)灰色的參數(shù)類型提示。
輸入代碼有可感知的延遲,在激活自動(dòng)補(bǔ)全時(shí)偶爾會(huì)出現(xiàn)卡頓,略微影響編輯體驗(yàn)。
Fleet 可以正常識別出函數(shù)和類的定義,可以解析文檔字符串格式。值得稱贊的一點(diǎn)是,F(xiàn)leet 會(huì)自動(dòng)對過長的參數(shù)信息進(jìn)行換行展示。

轉(zhuǎn)到定義、轉(zhuǎn)到引用的界面和 VS Code 很相似,操作也大同小異。
我不確定 Fleet 的代碼格式化功能使用的是哪個(gè)格式化工具,但在我使用 black 格式化后的代碼上,這一功能并不會(huì)帶來任何格式上的更改。
我不明白為什么要在每個(gè)文件的第一行加入運(yùn)行按鈕,一眼看起來像是運(yùn)行一行導(dǎo)入語句。寫入 Python 文件的常見入口 if __name__ == "__main__": 后,左側(cè)會(huì)出現(xiàn)運(yùn)行按鈕,但文件開頭的運(yùn)行按鈕依然沒有消失。
語法元素全局搜索有一定延遲,且沒有緩存。
Git 集成
Fleet 成功識別了 Git 倉庫,但并不會(huì)像 VS Code 一樣,有未提交的文件時(shí)在 Git 圖標(biāo)上顯示數(shù)字,只有文件名右側(cè)的 Badge 提示。
Badge 顏色的選擇我認(rèn)為比 VS Code 好,文件修改是藍(lán)色,而不是 VS Code 上的橙色。
在文件包含錯(cuò)誤,并同時(shí)擁有版本管理狀態(tài)時(shí),會(huì)優(yōu)先顯示版本管理的 Badge,這導(dǎo)致幾乎所有錯(cuò)誤都不能在文件列表發(fā)現(xiàn),必須點(diǎn)開文件才能看到。
在編輯器右鍵,選擇 Git > Toggle Git Blame,可以顯示該文件每一行的修改時(shí)間和修改者,類似 VS Code 的 GitLens 插件。

但這個(gè)功能存在一個(gè)嚴(yán)重的體驗(yàn)問題:在點(diǎn)擊黃色條試圖展開修改歷史時(shí),實(shí)際觸發(fā)的是設(shè)置斷點(diǎn),展開修改歷史其實(shí)要點(diǎn)擊左側(cè)區(qū)域。
而且鼠標(biāo)懸浮在黃色條上時(shí)沒有任何視覺反饋。
設(shè)置斷點(diǎn)的視覺反饋也存在問題,只有鼠標(biāo)放上去的第一個(gè)行號才會(huì)有暗色紅點(diǎn)的反饋,上下滑動(dòng)不會(huì)有反饋,但點(diǎn)擊又能正常操作。
在空行的行號上懸浮鼠標(biāo)是有反饋的,但空行其實(shí)無法設(shè)置斷點(diǎn)。
另外一點(diǎn)交互邏輯問題在 Git 面板上,修改可以一鍵 Commit,但不能一鍵 Revent。
面板中列出了所有未與遠(yuǎn)程同步的更改,并提供了一鍵同步選項(xiàng)。
History 標(biāo)簽頁提供了 Git 歷史的查看和篩選功能,但并不能直觀看到分支的操作,也不能快速進(jìn)行多分支比較。
其它內(nèi)置功能
文件管理器缺少右鍵打開終端功能,這一點(diǎn)我表示很不爽。
Show in 命令沒有 Ranger,不強(qiáng)求了,畢竟不是為 Linux 專門優(yōu)化的。
Docker 面板一般般,甚至不支持多選,UI 設(shè)計(jì)也過于簡潔了。
穩(wěn)定性
在我體驗(yàn)期間,遇到過多次界面卡頓,同時(shí)右上角的通知中出現(xiàn)了很多報(bào)錯(cuò):

新產(chǎn)品穩(wěn)定性一般可以理解,但我體驗(yàn)一個(gè)小時(shí) 100 條報(bào)錯(cuò)有點(diǎn)過分吧。
UI 設(shè)計(jì)
最大的問題是頁面元素冗余。
左上角有個(gè) Fleet Logo,右面有個(gè)菜單圖標(biāo),Logo 本身卻沒有任何功能。
三個(gè)界面控制相關(guān)的按鈕,分別控制左邊欄、右邊欄、底欄的展開和折疊,但按鈕卻全部位于左側(cè)。
這里比較好的解決方案是全屏狀態(tài)下從左、右、下拖動(dòng)窗口時(shí)觸發(fā)展開操作。
配色過于單調(diào),大量的白色讓我一度懷疑它是否成功解析了語法。
文檔字符串與注釋顏色相同,個(gè)人認(rèn)為不太合理,沿用綠色會(huì)比較好。
標(biāo)簽頁的圖標(biāo)已經(jīng)有足夠的表意作用,卻還要加上文字說明,面板列表和實(shí)際顯示的標(biāo)簽頁名稱存在不一致。
設(shè)置不是高頻使用的功能,卻占據(jù)了右上角的位置。
下邊欄左側(cè)顯示的文件名和標(biāo)簽頁名稱重復(fù),錯(cuò)誤提示卻在右側(cè),很多編程語言都有單行長度的限制或最佳實(shí)踐,想看個(gè)報(bào)錯(cuò)數(shù)量還要將視線移動(dòng)到右側(cè),影響效率。
右下角的當(dāng)前光標(biāo)位置不能隱藏,絕大多數(shù)人都不會(huì)關(guān)心自己的光標(biāo)在第幾行第幾列。
文件編碼和編程語言選擇列表很長,完全可以把檢測到的和常用的項(xiàng)放在前面,方便快速選擇。
以上提到的這些我都沒有在設(shè)置中找到對應(yīng)的選項(xiàng)。
總結(jié)
標(biāo)題我本來想寫初露鋒芒,但這個(gè)體驗(yàn)實(shí)在不敢恭維。
首先,作為輕量級開發(fā)工具,內(nèi)存占用要降下去,有這個(gè)資源占用,就要有對應(yīng)的功能來支撐,JetBrains 復(fù)用了多少舊代碼咱也不知道。
對于特定語言的開發(fā)者,能用,但是很不好用,缺少語言專屬 IDE 的高級功能,與其它編輯器相比又沒有充足的可配置性。
Fleet 對標(biāo) VS Code,預(yù)設(shè)快捷鍵里卻沒有 VS Code 鍵位,另外我真的很像要 Vim 鍵位,體驗(yàn)過程中已經(jīng)不知道多少次下意識 Esc 了,謝謝。
設(shè)置項(xiàng)用上了 JSON,但可定制性遠(yuǎn)遠(yuǎn)不夠,設(shè)置項(xiàng)數(shù)量遠(yuǎn)遠(yuǎn)達(dá)不到驅(qū)使用戶互相分享配置文件的地步。
JetBrains 你沒有開發(fā)輕量級編輯器的經(jīng)驗(yàn),可以去當(dāng) VS Code 貢獻(xiàn)者,先學(xué)學(xué)人家是怎么做編輯器的,用上 LSP,別沉迷于你自研的代碼分析引擎。
插件系統(tǒng)趕緊上,不然沒人寫插件很難擴(kuò)充生態(tài),但有了插件之后內(nèi)置的功能很大概率會(huì)被拋棄,尤其是 Docker 這種結(jié)合不緊密的。
三句話總結(jié),在這東西迭代 20 個(gè)功能版本以前,我不會(huì)再去嘗試;同時(shí),我不建議任何人現(xiàn)在用 Fleet 作為主力開發(fā)工具;我認(rèn)為它無法搶占輕量級編輯器的市場。
So JetBrains, ___ you.