Warp 拥有许多功能,包括 AI,而 Ghostty 则在开箱即用方面更轻量级。以下是我们关于哪个终端应用程序最适合您的指南。
译自 Warp vs. Ghostty: Which Terminal App Meets Your Dev Needs?,作者 David Eastman。
在The New Stack最近对Ghostty的评测之后,我想从Warp用户的角度来看待它。它们都是终端应用程序(如果你喜欢的话,可以称之为GUI shell),尽管Warp在功能方面(包括AI)明显更强大。另一方面,Ghostty的设计目标是开箱即用。这篇文章是对这两个终端在其各自环境下的初步介绍。
当我将Warp描述为“重量级”时,这仅仅从我的MacBook上应用程序的大小差异就可以看出(300MB vs 50MB):
开发人员之间似乎存在着文化差异:一些开发人员几乎“生活”在他们的终端中——购买他们喜欢的字体,尽可能地运行命令和编写脚本,而无需使用任何GUI应用程序;而另一些开发人员则大部分时间都在应用程序中度过,如果他们不得不出于任何原因使用终端,就会感到紧张。我承认Ghostty的目标用户非常接近前者,因此它拥有大量的配置选项。但是,开发人员有理由理解和使用这两种风格。
我现在使用的是MacBook,但优秀的终端的强大之处在于它可以在尽可能多的操作系统和发行版上运行——这就是人们仍然学习如何正确使用vim的原因。Warp即将登陆Windows(有一个等待列表),Ghostty将在1.0版本之后登陆。两者都涵盖了主要的Linux发行版,但我预计Ghostty会更积极地支持。
不管我们是否喜欢,在任何平台上进行计算仍然是关于文件、文件夹和进程的。一个好的应用程序可以隐藏这些基础知识,但是如果你不能控制文件权限或理解长时间运行的任务,你的效率将会迅速下降。
例如,在我的MacBook上,我可以快速安装tree(或者我可以自己编写这个函数)……
brew install tree
……然后显示一个项目结构的仅目录视图。
即使我从未听说过Avalonia,这个tree也能让我快速了解它是什么,比在我的Mac上使用Finder要快得多。
终端也成为一个非常强大的记录场所。使用支持多个标签的终端,我可以有效地显示不同会话的记录——并在需要时继续任何一个会话。
我不会过多地介绍Ghostty,因为我们之前的文章已经很好地介绍了它。我很乐意使用Homebrew来安装它,但你也可以使用二进制文件。
brew install --cask ghostty
这是在Warp中安装它。
请注意,Warp为长时间运行的命令(进程)提供了通知。这是一个在终端上简洁高效地完成某些操作的很好的例子。如果你查看顶部,你会看到当Warp块完成(已完成的命令调用和响应)时,它会记录所花费的时间。
Ghostty开箱即用,无需配置。但是,应该理解的是,许多shell行为来自shell配置本身。我已经安装了zsh shell和oh-my-zsh(一个“有主见的提示系统”),它也具有行为。我完全承认我不总是知道哪个负责什么。
为了快速检查Ghostty的启动方式,我们可以在启动Ghostty时流式传输日志:
log stream --level debug --predicate 'subsystem=="com.mitchellh.ghostty"'
这让我们了解它尝试的默认设置。我已经总结如下:
- known but unimplemented action action=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 action=16
- started subcommand path=/usr/bin/login pid=89591
- received and ignored icon=~
- unimplemented OSC command: change_window_icon
我正在寻找的是它自动集成了(注入)我的zsh shell,这很好。但同样重要的是,如果它遇到它不理解的设置,它不会出现问题。
如果我想设置配置,只需在应用程序中按cmd-,。在这个例子中,我复制了我在一个博客中看到的随机配置:
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
我实际上并没有安装这些字体和主题,但是我们上面流式传输的日志确认Ghostty拒绝了这些设置并继续运行,而没有停止启动。即便如此,它确实“加粗”了我的字体并更改了窗口标题:
将终端用作记录场所最常见的方法是打开带有几个标签的终端窗口。每个标签实际上都是一个独立的shell,专注于单独的项目或进程。
在Warp中,我只需点击栏上的加号即可在新窗口中添加新标签。在Ghostty中,命令⌘T也能做到同样的事情:
Ghostty还会设置那些快速标签,⌘1、⌘2和⌘3——这是一个不错的想法。请注意,Ghostty明智地继承了我的git颜色设置。
在许多情况下,我们可以长时间保持终端开启,但永远不考虑恢复是不明智的。
在Warp中,在几个标签中工作后,我可以命名并保存配置,或启动已命名的配置:
如果我随后退出Warp,重新打开并启动,我将获得窗口和标签——此外,我还拥有可帮助我记住正在做什么的历史记录。
如果我想在Ghostty中获得类似的行为,可以将这些键值对添加到配置中:
...
window-save-state = always
quit-after-last-window-closed=true
如果我随后使用cmd–z退出Ghostty,重新启动会正确重置我的窗口。有趣的是,我拥有与Warp相同的会话历史记录。我认为omz_history管理着这种共享历史记录行为:
目前,你无法更改Ghostty中标签的颜色,这是一种区分正在进行的进程的好方法——我肯定在其他终端中使用过这种方法。在Warp中这很简单:
但我已经看到了对此的功能请求。
Ghostty必须与许多优秀的终端应用程序(例如,Kitty)竞争,但目前它已经相当稳定。作为一名开发者,你应该重视任何可在任何平台上使用的终端应用程序,以便能够快速在新环境中启动新项目。
有时,你将受益于Warp中的细节(终端中的AI可以帮助你记住模糊的命令和标志),但在其他情况下,速度和个性化至关重要。随着像Zig这样的语言的出现,生产中可能会有更多快速的应用程序。因此,请同时保留Warp和Ghostty——根据需要使用每一个。