终端工具对比:Warp vs Fig 选择指南
深度对比 Warp 和 Fig 两款现代终端工具的功能和体验。虽有助开发效率,但与 AI 编程无关。
深度对比 Warp 和 Fig 两款现代终端工具的功能和体验。虽有助开发效率,但与 AI 编程无关。
在使用 Warp 几个月后(也收集了已经在使用它的同事们的反馈),是时候回答这个问题了:它比 Fig 更好吗?
这是一篇相当长的文章,我会尝试对比这两款工具。如果你还不知道 Warp 或 Fig 是什么,这篇文章会是一个不错的入门介绍。如果你已经了解它们,却不知道该选哪一个,希望本文能帮助你做出决定。
有些功能看演示比看文字更容易理解,因此我还准备了一段视频,逐一讲解本文涉及的所有主题。我建议你看一看;当然,如果你更喜欢阅读,那就继续往下看吧。
本文将包含以下内容:
看起来很有意思,对吧?那就开始吧!
首先需要明确一点:它们并不是同一种东西。下面着重介绍一下两者最主要的区别:
Warp 是一个 terminal。简单来说,它是一款能够独立运行的应用。你可以像安装普通应用一样安装它(因为它本来就是一款普通应用),单击图标,它便会出现在屏幕上。
Fig 则是一个构建在受支持的 terminal、IDE 和 shell 之上的 plugin。它无法独立运行,而是作为其他工具的扩展存在。
这两种方式各自有哪些优缺点?这里列举几点:
Fig 的上手过程可能更轻松,因为它增强的是你已经熟悉的 terminal;Warp 则是一款全新的 terminal。不过,适应 Warp 应该也不会花太长时间。实际上,它提供了不少实用的自定义选项。
作为一款真正的独立应用,Warp 对 UI 和用户交互方式拥有更强的控制力。例如,你可以原生编写多行脚本,也可以用鼠标移动光标。Fig 依赖它所运行的 terminal,因此无法实现这类功能。
Fig 构建在 terminal 之上的灵活架构,可能让它更容易被分发到多个平台。不过,Fig 和 Warp 目前仍然都只支持 macOS。Fig 为 Windows 和 Linux 用户开放了候补名单,Warp 也是如此;但后者还提到了支持 WASM 的计划,希望最终能在浏览器中运行,从而提供协作功能。
虽然前面说 Fig 是一个 plugin,但它的设置显然不是通过 terminal 管理的。你仍然需要在电脑上安装一款应用;Warp 的设置则直接集成在 Warp 窗口中。
Warp 和 Fig 都可以免费使用,并且已经为个人用户提供了大量有趣的功能。不过,涉及更多面向团队的功能时,其中一部分需要付费套餐。
两者都提供三个级别的套餐:Free/Individual、Team 和 Enterprise,主要区别如下。
Warp:
Fig:
让我们来谈谈房间里的大象。紧随价格之后,2023 年最热门的话题当然只能是 AI。现在就来看看 Warp 和 Fig 在这方面的表现,这样在文章余下的部分里,我们就可以把 AI 忘掉了——我保证!
如前所述,Warp 的免费版包含 AI,而 Fig 需要付费套餐才能使用 AI。
两款工具激活 AI 的方式完全相同:只需用 # 开始输入一句自然语言,它就会被发送到 AI engine,并转换成一条命令。
在 Warp 中,效果如下:
得益于 Warp 是一款独立应用,它在 UI 的处理方式上更加灵活。你可以通过 Cmd+Enter 输入命令,也可以直接单击按钮获取解释、查看示例或相关命令,而且所有这些操作都能直接在 UI 中完成。
请求解释时,会打开 Warp AI 侧边栏。你可以在这里与 AI 进行更强大的交互,例如要求它解释命令,甚至在你执行的命令发生错误时获取更深入的信息。
值得注意的是,虽然命令生成是免费的,而且没有次数限制,但功能更强大的 AI 侧边栏在免费套餐中每天只能请求 100 次。
在 Fig 中,效果如下:
它生成的命令完全相同,不过 UI 看起来更像 terminal(与 Copilot CLI 非常相似),你可以使用方向键选择下一步操作。
这些选项让你可以很好地控制生成结果。如果对答案不满意,可以编辑或重新生成。但它没有提供快速了解命令详情的方式。就像我最近在 AI 相关文章中经常提到的那样:在不理解一段脚本会做什么的情况下,直接运行 AI 生成的脚本,通常不是一个好主意。如果你需要的仅仅是正确的语法,那就没有问题。
这两款工具都提供了大量智能功能,其中一些高度重合,另一些则是各自独有的。接下来逐一看看。
就我个人而言,这是我认为任何 terminal 应用、工具或者其他类似产品都必须具备的核心功能。到了现在,我已经无法想象重新使用一个没有 autocomplete 的 terminal 了。
我们今天介绍的两款工具都有这项功能——否则我也不会写这篇文章——而且它们的实际表现都非常好。
我特别喜欢的一点是,它们并不局限于提供“简单”的建议,比如使用 cd 浏览文件系统时建议下一个文件夹。举个例子,它们还可以为 git alias 提供建议。
两款工具都能读取我的 alias、提供相关建议,并在 tooltip 中显示该 alias 实际对应的命令。Warp 还会建议展开后的 alias,他们最近在一条推文中发布了相关演示。
我注意到的一个细微区别是:Warp 不仅会在下拉菜单中显示建议,还会尝试猜测你的下一条命令,并提前把它显示在输入框里。因此,你既可以浏览下拉菜单里的后续建议,也可以直接接受它的猜测。
这里举个例子:你可以选择一条 git 命令——其中包含字母 c,因为这是我已经输入的内容——然后继续自行输入;也可以直接按右方向键,一次性接受 git cb develop。
说到交互方式,两款工具都允许你进行自定义。无论你喜欢用方向键、Tab、Enter,还是其他按键浏览和选择建议,都可以按照自己的偏好配置。
我保证过不会再谈 AI,但既然这里列的是两款工具共同提供的功能,就允许我再提一次。
好了,本节结束 :)
如果你不喜欢默认主题,两款工具都支持 custom theme!
在 Warp 中,你可以创建自己的主题,也可以从社区中选择主题。GitHub 上还有一个与此相关的公开 repo。
你可以使用 ^ + Cmd + T 快速选择其他主题。如果记不住快捷键,也可以随时打开 Command Palette,然后输入 theme。左侧会打开一个侧边栏,你可以从中选择想使用的主题。
Fig 的操作方式也差不多。你可以在设置中找到主题,GitHub 上同样有一个公开 repo。
你可以通过 Fig 的设置应用定义一些 custom script。可以把它们理解成增加了额外功能的 alias,例如可以添加描述,也可以分享给其他人。
Fig 还提供了一个 Scripts Store,可以在其中分发和安装公开脚本。
要运行其中某个脚本,可以先输入 fig run,autocomplete 下拉菜单随后会显示所有可用脚本。
作为 plugin 而不是独立应用,其中一个优势就是可以更轻松地与其他工具集成。Fig 目前支持 VS Code、Android Studio 和 JetBrains IDE。
Alias、变量、路径……所有那些原本需要在某些隐藏文件中手动配置的麻烦设置,现在都可以通过 Fig 的设置应用,以可视化方式进行管理。
使用免费套餐时,你可以管理个人 dotfiles;使用付费套餐后,还可以管理团队配置,并与团队成员共享。
说到 UI 和 UX,作为独立应用的优势就很明显了。Warp 对用户与应用的交互方式有更强的控制力,并且可以利用这一点提供好得多的使用体验。
Command Palette 是一种很常见的工具,广泛存在于许多环境中,从 macOS 到 GitHub、Visual Studio Code……当然,也包括 Warp。
使用 Cmd + P 可以打开 Command Palette,并搜索任何你想执行的命令。正如你可能预料到的那样,可以通过输入文字缩小结果范围,也可以使用方向键浏览结果。
这是一个在亲自试用之前,我都不知道自己需要的功能。
Blocks 可以把命令及其输出组合成一个独立实体。面对很长的日志时,你可以更轻松地滚动查看,而且输入和输出之间有非常清晰的界线。
在这次 session 中,我运行了三条命令:首先是 pnpm install,它产生了一段很长的日志;然后是 git status;最后运行了我的一个用于打印 commit 的 alias。
屏幕上一共有三个 Block。即使第一个 Block 的日志非常非常长,我仍然可以在顶部看到自己执行了哪条命令,以便在需要时进行调试。它的正下方是一个新的 Block,其中显示了 git status 的输出,并且可以完整地显示在 terminal 里。最后一个 Block 则是我的 git alias 产生的另一段长日志。
我稍微向上滚动了一点,这样就能同时看到所有 Block,并且每个 Block 的顶部都显示着相应的命令。
Block 还可以通过永久链接分享——即使使用免费套餐也可以。因此,当你需要向别人展示一段很长输出里的某个部分时,不必再让对方自己滚动寻找,只需把整个 Block 的链接发给他,他就能直接在浏览器中查看。
这里有一个共享 Block 的示例,你可以看到顶部的命令,以及经过正确高亮处理的输出。
你还可以针对 Block 执行一些特定操作,例如查找指定文本、复制输入或输出,以及根据 Block 中的内容向 AI 寻求帮助。
公平地说,支持多标签页本来就是 terminal 的职责,Fig 显然做不了这件事。
如果你希望使用更多标签页,就需要让 Fig 运行在一个本身已经支持标签页的 terminal 之上。举个例子:Warp。
有一件事真的很让我恼火:在输入的文本中移动光标,以及选中、剪切和粘贴其中的部分内容。
不过,我想有这种感受的不只有我,因为 Warp 也考虑到了这一点。
你输入命令的输入框是一个真正的输入字段。可以用鼠标单击输入内容中的任意位置,所有你熟悉的文本编辑器快捷键也都应该可以正常工作。例如,可以用 Option + left 移动到上一个单词。
额外加分项:它还支持 multi-cursor!
Warp 需要处理很多事情,因此团队决定使用 Rust 构建它,而 Rust 恰好总能和“blazingly fast”押上韵。
玩笑归玩笑,看到 Rust 变得越来越流行,并被用于打造既酷又快的工具,确实是一件很棒的事。
Fig 使用 TypeScript 构建,因此可以很方便地让 dashboard 同时以 Web 应用的形式运行在浏览器中。
两款项目都很重视 open source 社区。尽管它们的核心代码并未开放,但各自在 GitHub 上都有将近十几个公开 repo。
排在最前面的主 repo 大约有 1.3 万颗 star,紧随其后的是 themes repo。Warp 的官方主题都存放在这里,你当然也可以直接参与贡献。这个项目使用的编程语言是 Python。
得到灵感了吗?你可以通过一位社区成员创建的工具 Warp Themes,完全自定义自己的主题。你可以使用各种颜色选择器生成主题、查看实时预览,然后下载一个可以导入 Warp 的文件。
workflows repo 也很有意思。这次使用的语言是 Rust,其中收录了你能在 Warp 中访问的所有公开 workflow。可以通过 Command Palette、^ + Shift + R 或 commands.dev 访问它们。
Fig 最酷的 repo 肯定是 autocomplete,拥有将近 2.2 万颗 star。Fig 的所有 autocomplete 内容都来自这里。如果某条命令缺失或已经过时,非常欢迎你提交 Pull Request。
与 Warp 的 workflows repo 类似,你可以在 plugins repo 中找到 Fig plugin store 里的内容。如果你有一个很酷的 plugin 想和社区分享,欢迎提交 PR!
两款工具都提供了不错的文档,其中包含大量截图、示例和 GIF。我注意到 Warp 的文档中还有一些视频,这是个很贴心的设计。
安装说明都很清晰,所有核心功能也都有完善的文档。
它们还提供了 changelog,这通常是一个项目保持健康发展的良好信号。
项目取得成功的关键之一,就是围绕它建立起来的社区。下面来看一些数据。
从统计数据来看,Fig 在 Twitter 上的 follower 略多一些,而在其他所有社交平台上,Warp 都处于领先地位。
最大的差距来自 Discord 社区,Warp 的规模达到了 Fig 的 10 倍。YouTube 上的差距也很明显:Warp 会分享一些很酷的教学内容,比如《5 Command Line Tools That Boost Developer Productivity (2023)》和《Terminal Basics That Nobody Teaches You In School》——标题很酷 :D——而 Fig 看起来完全没有在使用 YouTube。
不过,它们在 TikTok 上都相当活跃!
这里没有可供比较的数据,但两款工具都有自己的 blog,分别是 Warp Blog 和 Fig Blog。他们会在上面讨论自己的产品、构建产品时遇到的挑战,以及其他有趣的话题。
Warp 还有一些周边产品,比如 T 恤、连帽衫,甚至还有夹克,并通过推文公布了详细信息。
现在来到文章的最后一章,让我们回到最初的观点:我们比较的是两种不同的工具。
借助 Blocks、Command Palette 和真正的输入字段等功能,Warp 为 terminal 交互带来了一套全新的体验。不过,这也意味着你必须迁移到一款新的 terminal。这是个问题吗?可能不是,具体取决于你的使用习惯。
另一方面,Fig 的目标是在你最喜欢的 terminal 中直接提供一组新功能,尽管功能数量比 Warp 少一些。
在我看来,这可能正是选择两者时最需要考虑的标准之一:你是需要继续使用当前的 terminal,只在此基础上获得一些改进;还是愿意切换到一款新的 terminal,以使用所有额外功能?
很难说哪种选择是对的、哪种是错的,因为两款工具都很出色……答案完全取决于你自己。
说到这里,感谢你一直读到最后!希望本文让你对这两款工具有了全面的了解,并帮助你做出决定。
Warp(推荐链接,我想要一件 T 恤 :D)
Fig
大家好!我叫 Leonardo。你可能已经注意到了,我很喜欢讨论 Web Development 和 Open Source!
我每天都会使用 GitHub,而我最喜欢的编辑器是 Visual Studio Code……这可能会在一定程度上影响我的内容!:D
如果你喜欢我创作的内容,可以去看看我的 YouTube Channel!
欢迎与我联系,你可以在 Contact Me 页面找到我!