大约在2024年,开发者社区发生了一些变化,此后这种变化一直在加速。论坛的语调改变了。Dotfile仓库的star增长率看起来更像JavaScript框架的发布,而非业余爱好者配置的缓慢积累。一类新的终端工具——快速、可组合、GPU渲染的——开始出现在”使用”页面上,这些页面以前看起来更像是对Electron应用的巡礼。这场运动没有单一的宣言或成立事件,但方向是明确的:越来越多的严肃开发者正在围绕终端优先开发的CLI工具重建他们的工作流程,而且他们不会回头。
这不是怀旧。引领这场转变的开发者不是怀念1990年代的中年工程师。他们中的许多人是在使用GUI的环境中长大的,像呼吸一样自然地采用VS Code、Slack和Notion,然后——在衡量了这些工具实际给他们带来的成本之后——做出了有意识的决定,将他们工作的重心移回命令行。要理解为什么,需要审视工具本身及其周围环境的变化。
无人提及的重量问题
在现代MacBook上打开活动监视器,同时运行一个典型的开发环境,这些数字难以忽视。一个带有适度扩展集的VS Code窗口,根据语言服务器和活动项目的不同,会消耗400MB到700MB的RAM。Slack在其Electron版本中,通常占用300-600MB的内存。Notion又增加了200-400MB。浏览器中的Figma也增加了自己可观的内存占用。同时运行这四个应用程序的开发者——这描述了当今软件行业的大多数知识工作者——在编写第一行代码之前,就可能轻松消耗2-3GB的RAM。
终端替代品不会以这种方式运行。配置了完整 LSP、tree-sitter 语法高亮,以及功能与 VS Code 相当的插件集的 Neovim,通常保持在 50MB 以下。Helix 是一个更新的模态编辑器,内置 LSP 支持,通常使用的资源更少。GUI 应用与其终端等效版本之间的差距并非微不足道——它经常达到十倍或更多。在运行多个服务、容器和语言运行时的 8GB 或 16GB RAM 机器上,这十倍的差距不是理论上的。它响应迅速的机器与一个在下午就开始交换到磁盘的机器之间的区别。
Electron 在这个故事中的角色值得直接指出。Electron 为每个使用它的应用程序捆绑了一个完整的 Chromium 实例。从操作系统的角度来看,每个 Electron 应用都是一个运行单个网站的网络浏览器。工程上的权衡——以显著的资源开销换取更快的跨平台开发——在桌面应用开发成本高昂且内存便宜的情况下是有意义的。在 2026 年,这两个条件都越来越值得质疑,并且关注机器在负载下性能的开发人员已经注意到了这一点。
复兴的工具:真正发生了什么变化
在 2026 年为终端优先工作流程提供最强有力支持的 CLI 工具,不是开发人员已经知道的 Unix 实用程序。它们是一代新工具,基于对终端功能的不同假设构建。
导航和搜索
fzf 是最能改变怀疑论者的工具。它是一个通用的模糊查找器——一个可以附加到任何输入列表上的过滤器,让您通过模糊匹配交互式地缩小范围。当绑定到 Ctrl+R 用于 shell 历史记录、Ctrl+T 用于文件路径、Alt+C 用于目录导航时,fzf 替代了整个类别的 GUI 文件浏览器交互。关键见解在于 fzf 不是一个独立的应用程序——它是一个可组合的基本组件,可以与一切集成。正确设置需要几个小时,然后它就变得不可见,只是一层智能过滤,在您需要时恰好出现。
zoxide 进一步改进了目录导航。它是 cd 的更智能替代品,它会跟踪您最常访问的目录,并允许您通过部分名称匹配跳转到这些目录。使用几周后,导航到任何您之前访问过的目录都变得简单,只需输入 z proj 或 z api,而不必拼出完整路径。肌肉记忆的变化是显著的:过去需要记忆路径或使用文件管理器的操作,现在只需一次按键交互。
ripgrep在很大程度上已经取代了在涉及搜索源代码的任何工作流中的 grep。它在大型代码库上要快得多——基准测试一致显示,在包含数千个文件的项目中,ripgrep 的性能比 silver searcher 快两到五倍,比 grep 快得更多——并且它默认尊重 .gitignore,这消除了来自 node_modules、dist 目录和其他生成工件的搜索结果中的持续噪音。一旦你用 ripgrep 以近乎即时的速度搜索过大型 monorepo,再回到需要几秒钟索引、每次查询又需要一秒钟的 GUI 搜索界面,就会让人感到非常沮丧。
终端中的 Git
lazygit值得特别关注,因为它针对了保持 Git 作为 GUI 操作的最常见理由:分支、差异和暂存区的可视化表示。lazygit 在终端内提供了所有这些功能,采用键盘驱动的界面,一旦你花了几小时使用它,它的速度实际上比任何 GUI git 客户端都要快。暂存界面支持交互式 hunk 选择。日志视图显示带有颜色的完整分支图。变基、cherry-picking 和解决冲突都可以在不离开键盘的情况下完成。
最抵制 lazygit 的开发者往往是那些使用 GitKraken 或 Sourcetree 进行涉及多个贡献者的复杂多分支操作的人。这种抵制有合理的基础,这在关于 GUI 何时胜出的章节中会讨论。然而,对于独立工作和小型团队工作流,lazygit 消除了专用 git GUI 客户端的性能开销,同时又不牺牲使 git 操作感觉易于管理的视觉清晰度。
Shell 和终端环境
starship 是一个用 Rust 编写的跨 shell 提示符,它显示上下文敏感的信息——git 分支、语言版本、云环境、退出状态——启动时间以个位数的毫秒计。与更重的提示符框架相比,shell 启动速度的差异是可感知的。在经常打开新终端实例的系统上,这种可感知性会在一天的时间内累积成有意义的生活质量差异。
tmux 仍然是持久终端工作流的基础。能够从会话中分离、断开与远程服务器的连接,并在稍后返回时发现每个窗格和进程都保持在离开时的位置,这是没有 GUI 应用程序能够可靠复制的功能。tmux 的会话模型还启用了一种 GUI 中心开发者很少有机会接触的工作流:单个键盘快捷键即可在完全不同的工作上下文之间切换——例如,前端项目、API 项目和监控会话——而无需来自窗口管理、应用程序切换或恢复状态的任何开销。
终端本身变得更好了
2026年GUI到CLI的迁移比2018年更具吸引力的部分原因是终端模拟器类别经历了一次重大升级周期。将终端视为单色、字体有限、视觉稀疏的观念在很大程度上已经过时。
WezTerm和Ghostty(后者由Mitchell Hashimoto于2024年底发布,并迅速被开发者社区广泛采用)是GPU渲染的终端模拟器,支持真正的24位色彩、字体连字,以及关键的内联图像渲染功能。内联图像功能的重要性比最初听起来要大。像Visidata这样的工具(在终端中渲染图表和数据可视化)和像timg这样的图像查看器,现在可以在不切换窗口的情况下在终端内显示视觉内容。对于主要是文本但偶尔需要视觉功能的工作流程,这消除了最后一个摩擦点。
GPU渲染也意味着滚动大型日志输出、渲染复杂的语法高亮以及处理大量Unicode内容不再会产生卡顿和撕裂,这些曾让旧版终端模拟器声名狼藉。在M系列MacBook上的WezTerm在常规开发工作负载下以120fps渲染,没有明显的延迟。配置良好的现代终端的视觉体验与大多数开发者想象中的”命令行”有着质的区别。
可组合性作为核心生产力论点
终端优先开发的最深层论点不是关于内存使用或工具美学,而是关于工具可以组合时会发生什么。
Unix管道已有四十年的历史,仍然是工作开发者可用的最强大的进程间通信机制。能够将工具链接在一起——将ripgrep的输出通过fzf过滤,在匹配的行用Neovim打开所选文件,然后对更改的文件运行测试套件——所有这些都在单个shell管道中完成,且任何应用程序都不需要相互了解,这是GUI应用程序无法匹敌的集成形式。每个GUI应用程序在设计上都是一个封闭环境。它的功能是其开发者构建的功能,它的集成是他们选择维护的集成。
终端工具能够协同工作,因为它们使用共同的语言:文本流。一个在2019年编写的脚本,处理2024年发布的工具的输出,如果两个工具都遵循Unix约定,无需修改就能正常工作。这种可组合性也是自动化的基础。每天需要点击GUI界面三四次的重复任务无法轻松自动化。同样的任务,当它们存在于终端中时,可以被捕获在shell脚本中,简化为单个命令或键盘快捷键。在数月的时间里,优先使用终端的工作流程所带来的自动化收益会变得相当可观。
AI进入Shell
终端优先工作流程中最近最重要的进展是出现了专为终端内部而非 alongside 终端设计的AI工具。
Claude Code,Anthropic的代理编码工具,作为一个终端进程运行,可以读写文件、执行命令和管理代码更改,无需单独的GUI。Aider作为一个开源替代方案,在希望拥有本地优先AI编码助手的开发者中建立了庞大的用户群,这些助手通过shell与他们的现有编辑器和版本控制设置集成。这两种工具代表了一种与GUI编辑器中的copilot模型根本不同的AI集成理念:它们不是增强单个应用程序,而是成为shell环境的一部分,因此可以与终端能做的所有其他事情进行组合。
像atuin这样的shell助手——用可搜索、可同步的数据库替换标准shell历史记录——以及AI驱动的命令建议工具(解释命令并在运行前捕获错误)是同一模式的更多例子。终端正在成为AI集成的平台,而不仅仅是运行程序的文本界面。这种架构转变具有重要意义:投资于终端优先工作流程的开发者比那些工作集中在GUI环境中的开发者更有能力利用这些AI功能,因为在GUI环境中,AI集成取决于应用程序开发者的路线图。
何时GUI仍然胜出
诚实地描述终端优先的开发需要指出GUI工具仍然更优越的情况,因为这些情况是真实存在的,而假装不是这样正是运动变成邪教的方式。
对二进制资源、设计文件和具有许多同时更改的复杂合并冲突的可视化差异比较,在GUI中确实更好。像Kaleidoscope或VS Code的合并编辑器这样的工具为冲突解决提供了空间上下文,这是终端差异工具难以复制的。对于管理大型代码库、经常需要处理多个贡献者之间合并冲突的团队来说,可视化合并工具不是奢侈品——它显著降低了冲突解决的错误率。
对于大型分布式团队而言,复杂的 git 操作受益于 GitKraken 等工具提供的分支可视化功能。当一个仓库有三十个活跃分支、数十位贡献者,并且发布节奏需要精心协调时,能够同时显示所有分支之间关系的可视化图表,既是开发工具也是沟通工具。lazygit 在个人和小团队工作流中表现出色,但在一定规模下,专用 GUI 客户端的可视化开销是值得的。
设计工具没有真正意义上的终端等效品。Figma、Sketch 及其同类工具执行的是需要直接操作视觉对象的工作,任何 ASCII 艺术都无法改变这一点。终端优先开发的适当范围是工程工作流,而不是开发者工作中可能接触的每个工具。使用 Figma 检查设计规范,使用 WezTerm 和 Neovim 实现它们,这并不矛盾——他们是在精确地为每种工作选择合适的工具。
像 TablePlus 或 DataGrip 这样的数据库 GUI 在探索性数据工作中仍然保持明显优势,特别是在模式不熟悉且查询需要交互式开发的情况下。终端工具如 usql 和 pgcli 在脚本查询和已知工作流方面表现出色,但 GUI 客户端中的可视化模式浏览器提供了空间方向感,加速了对新或复杂数据库的探索。
实用的过渡指南
未能成功转向终端优先的开发者通常是那些试图一次性完成所有转变的人。他们安装 Neovim,花了一个周末时间配置它,第三天遇到了不熟悉的错误模式,然后就永久退回到 VS Code。正确的方法是渐进式的,从那些能立即提供价值且不需要更改编辑器或核心工作流的工具开始。
对于从典型重度 GUI 设置开始的开发者,推荐以下顺序:
- 从 fzf 和 zoxide 开始。 这些工具与您现有的 shell 集成,无需更改任何其他内容。它们为导航和历史记录搜索提供了即时、切实的改进。投入一小时进行配置,回报从当天就开始。
- 用 ripgrep 替换 grep。 在大多数系统上,这是即插即用的替代方案。基本用法的语法是兼容的。在任何超过几十个文件的项目中,性能差异都立即可见。
- 添加一个现代终端模拟器。 从默认的 macOS Terminal 或 iTerm2 切换到 WezTerm 或 Ghostty 不会改变任何工作流程——它只是让终端更快、更好看、功能更强。入门门槛几乎为零。
- 在决定全面切换编辑器之前先学习 lazygit。 如果 lazygit 不能让您相信终端优先的工作流程是值得的,那么什么都不会。如果它能说服您——对大多数开发者来说,一周内就能做到——您就有了证据,证明对 Neovim 等工具的深入投资会得到回报。
- 采用 tmux 来实现持久会话,而不是立即用于完整的复用器工作流程。 首先简单地在远程机器上使用它来实现会话持久化。一旦快捷键操作熟练,再扩展到本地开发会话。
- 将 GUI 编辑器用于复杂的重构、可视化差异和结对编程,同时将日常独立开发转移到 Neovim 或 Helix。这些编辑器可以共存。没有必要做出非此即彼的选择,过早强制选择会导致大多数放弃。
从主要基于 GUI 的工作流程转变到主要基于终端的工作流程,通常需要三到六个月的刻意练习,终端才会感觉比 GUI 更快。这个过渡期是真实存在的,在决定是否做出转变时应该考虑到这一点。在此期间,生产力会适度下降,一旦肌肉记忆形成,就会恢复到远超基线的水平。那些对终端优先工作流程满意度最高的开发者,是那些在过渡期间允许自己变慢,而不将这种缓慢视为该方法有误的证据的开发者。
数据指向的方向
自 2022 年以来,Stack Overflow 开发者调查一直显示终端工具采用率逐年增长。Neovim 从一个小众的新奇事物发展成为 2024 年调查中第四最受欢迎的编辑器,在自述为经验丰富的开发者中采用率尤其高。tmux GitHub 仓库已积累超过 34,000 个星标,并继续看到活跃的开发。基于 Rust 的工具生态系统——包括 ripgrep、zoxide、starship、bat、exa 和数十个小型工具——代表了自原始 GNU 工具取代其前身以来,终端工具创新最集中的爆发。
这些并非短暂流行的标志。它们是一种结构性转变的标志,这种转变由真实的性能优势、真实的可组合性优势以及经验丰富的开发者重新掌控环境的真实需求所驱动——他们希望摆脱那些服务于最广泛受众而非特定开发者需求的应用程序,这些开发者确切地知道他们希望工具如何工作。
终端从未消失。它一直存在,运行着每个开发环境的基础现实,无论在其上放置了多少 GUI 层。改变的是为终端构建的工具质量、它们运行的硬件性能,以及一代开发者愿意相信,深入学习命令行的投资将比停留在 GUI 中的舒适感带来更多回报。对于那些已经做出这种投资的人来说,证据始终站在终端一边。
Michael Sun 在 NovVista 撰写关于开发者工具、基础设施和软件工程实践的文章。他专业从事软件开发已有十多年,目前运行着基于 NixOS 和 macOS 的终端优先开发环境。
