Warp vs. Ghostty:哪個終端應(yīng)用更符合你的開發(fā)需求?
Warp 擁有許多功能,包括 AI,而 Ghostty 則在開箱即用方面更輕量級。以下是我們關(guān)于哪個終端應(yīng)用程序最適合您的指南。
譯自Warp vs. Ghostty: Which Terminal App Meets Your Dev Needs?,作者 David Eastman。
在The New Stack最近對Ghostty的評測之后,我想從Warp用戶的角度來看待它。它們都是終端應(yīng)用程序(如果你喜歡的話,可以稱之為GUI shell),盡管Warp在功能方面(包括AI)明顯更強(qiáng)大。另一方面,Ghostty的設(shè)計(jì)目標(biāo)是開箱即用。這篇文章是對這兩個終端在其各自環(huán)境下的初步介紹。
為什么選擇終端?
當(dāng)我將Warp描述為“重量級”時,這僅僅從我的MacBook上應(yīng)用程序的大小差異就可以看出(300MB vs 50MB):
圖片
圖片
開發(fā)人員之間似乎存在著文化差異:一些開發(fā)人員幾乎“生活”在他們的終端中——購買他們喜歡的字體,盡可能地運(yùn)行命令和編寫腳本,而無需使用任何GUI應(yīng)用程序;而另一些開發(fā)人員則大部分時間都在應(yīng)用程序中度過,如果他們不得不出于任何原因使用終端,就會感到緊張。我承認(rèn)Ghostty的目標(biāo)用戶非常接近前者,因此它擁有大量的配置選項(xiàng)。但是,開發(fā)人員有理由理解和使用這兩種風(fēng)格。
我現(xiàn)在使用的是MacBook,但優(yōu)秀的終端的強(qiáng)大之處在于它可以在盡可能多的操作系統(tǒng)和發(fā)行版上運(yùn)行——這就是人們?nèi)匀粚W(xué)習(xí)如何正確使用vim的原因。Warp即將登陸Windows(有一個等待列表),Ghostty將在1.0版本之后登陸。兩者都涵蓋了主要的Linux發(fā)行版,但我預(yù)計(jì)Ghostty會更積極地支持。
不管我們是否喜歡,在任何平臺上進(jìn)行計(jì)算仍然是關(guān)于文件、文件夾和進(jìn)程的。一個好的應(yīng)用程序可以隱藏這些基礎(chǔ)知識,但是如果你不能控制文件權(quán)限或理解長時間運(yùn)行的任務(wù),你的效率將會迅速下降。
例如,在我的MacBook上,我可以快速安裝tree(或者我可以自己編寫這個函數(shù))……
……然后顯示一個項(xiàng)目結(jié)構(gòu)的僅目錄視圖。
圖片
即使我從未聽說過Avalonia,這個tree也能讓我快速了解它是什么,比在我的Mac上使用Finder要快得多。
終端也成為一個非常強(qiáng)大的記錄場所。使用支持多個標(biāo)簽的終端,我可以有效地顯示不同會話的記錄——并在需要時繼續(xù)任何一個會話。
我不會過多地介紹Ghostty,因?yàn)槲覀冎暗奈恼乱呀?jīng)很好地介紹了它。我很樂意使用Homebrew來安裝它,但你也可以使用二進(jìn)制文件。
brew install --cask ghostty
這是在Warp中安裝它。
圖片
請注意,Warp為長時間運(yùn)行的命令(進(jìn)程)提供了通知。這是一個在終端上簡潔高效地完成某些操作的很好的例子。如果你查看頂部,你會看到當(dāng)Warp塊完成(已完成的命令調(diào)用和響應(yīng))時,它會記錄所花費(fèi)的時間。
Ghostty開箱即用,無需配置。但是,應(yīng)該理解的是,許多shell行為來自shell配置本身。我已經(jīng)安裝了zsh shell和oh-my-zsh(一個“有主見的提示系統(tǒng)”),它也具有行為。我完全承認(rèn)我不總是知道哪個負(fù)責(zé)什么。
為了快速檢查Ghostty的啟動方式,我們可以在啟動Ghostty時流式傳輸日志:
log stream --level debug --predicate 'subsystem=="com.mitchellh.ghostty"'
這讓我們了解它嘗試的默認(rèn)設(shè)置。我已經(jīng)總結(jié)如下:
- known but unimplemented action actinotallow=29 - found Ghostty resources dir: /Applications/Ghostty.app/Contents/Resources/ghostty- - shell integration automatically injected shell=termio.shell_integration.Shell.zsh - known but unimplemented action actinotallow=16 - started subcommand path=/usr/bin/login pid=89591 - received and ignored icnotallow=~ - unimplemented OSC command: change_window_icon
我正在尋找的是它自動集成了(注入)我的zsh shell,這很好。但同樣重要的是,如果它遇到它不理解的設(shè)置,它不會出現(xiàn)問題。
如果我想設(shè)置配置,只需在應(yīng)用程序中按cmd-,。在這個例子中,我復(fù)制了我在一個博客中看到的隨機(jī)配置:
theme=catppuccin-latte window-height=30 window-width=110 title="Oh, hello" window-title-font-family="MonoLisa Variable" font-family="MonoLisa Variable" font-size=14 font-feature=-liga font-thicken=true
我實(shí)際上并沒有安裝這些字體和主題,但是我們上面流式傳輸?shù)娜罩敬_認(rèn)Ghostty拒絕了這些設(shè)置并繼續(xù)運(yùn)行,而沒有停止啟動。即便如此,它確實(shí)“加粗”了我的字體并更改了窗口標(biāo)題:
圖片
會話、窗口和標(biāo)簽
將終端用作記錄場所最常見的方法是打開帶有幾個標(biāo)簽的終端窗口。每個標(biāo)簽實(shí)際上都是一個獨(dú)立的shell,專注于單獨(dú)的項(xiàng)目或進(jìn)程。
在Warp中,我只需點(diǎn)擊欄上的加號即可在新窗口中添加新標(biāo)簽。在Ghostty中,命令?T也能做到同樣的事情:
圖片
Ghostty還會設(shè)置那些快速標(biāo)簽,?1、?2和?3——這是一個不錯的想法。請注意,Ghostty明智地繼承了我的git顏色設(shè)置。
在許多情況下,我們可以長時間保持終端開啟,但永遠(yuǎn)不考慮恢復(fù)是不明智的。
在Warp中,在幾個標(biāo)簽中工作后,我可以命名并保存配置,或啟動已命名的配置:
圖片
如果我隨后退出Warp,重新打開并啟動,我將獲得窗口和標(biāo)簽——此外,我還擁有可幫助我記住正在做什么的歷史記錄。
如果我想在Ghostty中獲得類似的行為,可以將這些鍵值對添加到配置中:
... window-save-state = always quit-after-last-window-closed=true
如果我隨后使用cmd–z退出Ghostty,重新啟動會正確重置我的窗口。有趣的是,我擁有與Warp相同的會話歷史記錄。我認(rèn)為omz_history管理著這種共享歷史記錄行為:
圖片
目前,你無法更改Ghostty中標(biāo)簽的顏色,這是一種區(qū)分正在進(jìn)行的進(jìn)程的好方法——我肯定在其他終端中使用過這種方法。在Warp中這很簡單:
圖片
但我已經(jīng)看到了對此的功能請求。
結(jié)論
Ghostty必須與許多優(yōu)秀的終端應(yīng)用程序(例如,Kitty)競爭,但目前它已經(jīng)相當(dāng)穩(wěn)定。作為一名開發(fā)者,你應(yīng)該重視任何可在任何平臺上使用的終端應(yīng)用程序,以便能夠快速在新環(huán)境中啟動新項(xiàng)目。
有時,你將受益于Warp中的細(xì)節(jié)(終端中的AI可以幫助你記住模糊的命令和標(biāo)志),但在其他情況下,速度和個性化至關(guān)重要。隨著像Zig這樣的語言的出現(xiàn),生產(chǎn)中可能會有更多快速的應(yīng)用程序。因此,請同時保留Warp和Ghostty——根據(jù)需要使用每一個。