介绍

Warp 是一个跨平台的终端:Windows、macOS、Linux 都有官方版本。它用 Rust 写,GPU 渲染,把每次「回车 + 输出」包成一个 Block,再围绕 Block 加了一整套传统终端没有的东西:重启恢复现场、输入自动提示、Tab 列出命令参数、输入框 Vim 模式、输出过滤……

Warp 2020 年由 Zach Lloyd(前 Google 工程师)创立,用 Rust 从零写。2023 年加上 AI,2024 年 2 月发布 Linux 版,2025 年 2 月发布 Windows 版。也就是说,它直到去年才真正配得上「跨平台」这三个字;今年 4 月 28 日又把客户端开源了,大部分代码 AGPL-3.0,UI 框架 MIT,OpenAI 是创始赞助方。

我第一次听说它是在 2022 年,当时只有 macOS 版,还要排队。我最早放弃它,是因为两个很现实的原因:闭源,以及当时必须登录才能用。

真正让我装上的,是 2025 年的 Windows 版——我日常在 Windows 上写代码,一个只有 macOS 的终端再好也和我没关系。现在这两个理由都淡了——不登录也能用终端和补全,客户端也在上个月开源了。

一句话概括:Warp 没有改变终端里能做什么,它改变的是「用过的东西怎么找回来」。

Warp 的很多功能都不是它首创:自动提示来自 fish,参数补全来自 IDE,Vim 模式来自编辑器,输出过滤来自日志工具。它的本事是把这些成熟的东西搬进终端,再用 Block 串起来。这个串法,才是它和别的终端不一样的地方。

环境

  • Windows 11 23H2,PowerShell 7.5
  • Warp v0.2026.05.13

跨平台

平台 要求 安装
Windows Windows 10 1903(build 18362)及以上,x86_64 / ARM64 winget install Warp.Warp,或下载安装包
macOS 10.14 及以上,Intel / Apple silicon,需要 Metal brew install --cask warp
Linux glibc 2.31 及以上,OpenGL ES 3.0 或 Vulkan,x86_64 / ARM64 deb / rpm / pacman / AppImage,官方也提供 apt、dnf、pacman 源

Windows 版走 ConPTY,PowerShell 7、PowerShell 5、WSL2、Git Bash 都能开;cmd.exe 目前不支持,官方还在 GitHub issue 里挂着。这对还在用 cmd 的人来说是个硬门槛,不过如果你在 Windows 上开发,大概率已经迁到 PowerShell 或 WSL 了。

Linux 版支持原生 Wayland,但要手动在 Settings > Features > System 里打开。打开之后全局热键会失效——Wayland 协议不提供这个能力,不是 Warp 的锅。macOS 需要 Metal,太老的机器会被挡在门外。

快捷键是日常最大的差异:macOS 用 ⌘,Windows / Linux 用 Ctrl。文档里每个功能都按平台分别列了快捷键,抄的时候注意。

另外,它跑的还是你原来的 shell:.zshrc、.bashrc、PowerShell 的 $PROFILE、fish 的 config.fish 都照旧,别名和环境变量不用重写。换终端的成本主要是习惯,不是配置。

一条命令就是一个 Block

这是 Warp 所有功能的地基,值得先讲。

在传统终端里,输出是一条连续的字符流。你敲一条命令,它吐一堆字,然后继续往下滚;想把「刚才那条命令的输出」单独拿出来,只能靠鼠标拖选,还得小心别把提示符和别的命令一起选进去。

Warp 把每次回车之后的东西包成一个 Block:命令、输出、退出码都在里面。退出码非 0 的 Block 会标红,侧边栏也是红的,扫一眼就知道哪条挂了。

Block 带来的是「输出变成了对象」:

  • 右键菜单里可以只复制命令、只复制输出,或者两个一起复制。
  • Ctrl+↑ 选中最近的 Block,再用 ↑ / ↓ 在 Block 之间移动,不用滚轮找半天。
  • 输出很长时,顶部会钉一条 Sticky Command Header,告诉你这一屏是谁吐的;点一下回到 Block 开头。
  • 可以给 Block 加书签(只在当前 session 有效)、分享成网页链接、把命令存成 Workflow。
  • Ctrl+Shift+F 在当前 pane 的所有 Block 里搜,支持正则和大小写。

后面要讲的恢复、过滤、查找,全都建立在「输出是有边界的」这件事上。没有 Block,就没有这些。

关掉再打开,现场还在

这是 Warp 最打动我的功能,也是我认为它和传统终端最不一样的地方。

默认开启。关掉 Warp、重启系统、第二天再打开,上次的窗口、标签页、分屏都还在,每个 pane 里最近的命令和输出也原样躺着。不是「恢复标签页标题」那种恢复,是连 dotnet build 吐的那几百行日志、git log 的颜色、报错的红字一起恢复。

我以前的习惯是:跑完一个长命令,先把关键输出复制到笔记里,再关终端;系统提示重启时,先想办法把没看完的日志存下来。用了 Warp 之后这一步没了——直接关,下次打开接着看。

命令历史大多数 shell 本来就会存,Warp 多出来的是「输出」和「窗口 / 标签 / 分屏布局」,而且是按 Block 存的,不是一张屏幕截图。这两样东西,大多数终端要么不管,要么只恢复到「屏幕内容」这一层。

它是怎么存的

Warp 把上一个 session 的窗口、标签页、pane 和最近的 Block 写进一个本地 SQLite 数据库,每次退出时用最新的现场覆盖。数据库的位置:

平台 路径
Windows %LOCALAPPDATA%\warp\Warp\data\warp.sqlite
macOS ~/Library/Group Containers/2BBY89MBSN.dev.warp/Library/Application Support/dev.warp.Warp-Stable/warp.sqlite
Linux ${XDG_STATE_HOME:-~/.local/state}/warp-terminal/warp.sqlite

装了 sqlite3 的话可以直接打开看:

1
sqlite3 "$env:LOCALAPPDATA\warp\Warp\data\warp.sqlite" ".tables"

这个设计有两个好处:一是恢复不依赖云端,断网也能用;二是数据在你自己机器上,想看、想删都行。

它不恢复什么

要泼一盆冷水:恢复的是现场,不是进程。

上次开着的 npm run dev、dotnet watch、ssh 连接,重启后都不会自己回来。Warp 恢复的是这些命令留下的记录,进程本身已经随着退出结束了。所以它解决的是「输出丢了」,不是「任务断了」;后者还是得靠 tmux、systemd、nohup 或者干脆重跑。

另外,恢复的是「退出时」的现场,而且只覆盖最近的若干条 Block,不是无限滚动的全部历史。它记录的是退出时的状态,不是实时快照,别把它当成事务日志。

隐私

因为输出会落盘,敏感内容也会落盘。数据库没有额外的加密,能用 sqlite3 直接打开;在共用电脑上,或者经常在终端里 export TOKEN=... 的人,建议先想一下这件事。另外,遥测和崩溃报告默认开启,可以在 Settings > Privacy 里关掉「Help improve Warp」和「Send crash reports」;免费版用 AI 时遥测必须开着,不用 AI 就可以全关。

恢复功能的开关在 Settings > Features > Restore windows, tabs, and panes on startup,关掉之后不再记录新的输出。想彻底清掉,退出 Warp 后删掉上面那个 warp.sqlite 就行。当前 session 里的 Block,可以用 Ctrl+Shift+K 清空(macOS 是 ⌘+K)。

输入:从「记住命令」到「挑一个」

自动提示

打字的时候,Warp 会根据 shell 历史和补全给出灰色提示,按 → 或 Ctrl+F 接受,Ctrl+Shift+→ 一次接受一个词(macOS 是 Ctrl+→)。

这有点像 fish 的 autosuggestion,但 Warp 是跨 shell 的:PowerShell、zsh、bash、fish 都有。对经常敲一长串 docker run -it --rm -v ... 的人,这个功能省下的是「翻历史 + 找那条命令 + 改参数」的时间。

提示来自本地历史和补全,不联网,也不消耗 AI 额度。

Tab 补全:把参数摊开

这是 Warp 和普通终端补全差别最大的地方。

在普通终端里,git checkout 后面按 Tab 能补出什么,取决于 shell 和补全脚本:没配置时只有文件名,配置了才有分支;参数(--orphan、--track)基本靠背。Warp 给一批常用命令内置了补全规则(spec),按 Tab 会把子命令、选项、参数、分支、容器、Pod 之类的候选一起列出来,而且是模糊匹配:

输入 按 Tab 之后
git checkout 本地分支列表,带搜索
git commit - --message、--amend、--no-verify 等选项和说明
docker run、ps、images、compose 等子命令
kubectl 子命令、资源类型、命名空间
cargo 子命令和常用参数
npm 子命令和脚本

补全支持别名:alias gc='git checkout' 这种 shell alias,gc 后面按 Tab 也能出 git checkout 的候选;git st 这种子命令别名也认。

默认要按 Tab 才弹。嫌麻烦可以在 Settings > Features > Terminal Input 里打开「Open completions menu as you type」,边打边出菜单。

限制也很明确:它只认内置的 spec。 git、docker、kubectl、npm、cargo、brew、terraform、aws 这些常见命令覆盖得不错,但你自己写的 CLI、公司内部的工具、刚发布的小众命令,没有 spec 就没有参数提示,只能退回 shell 自己的补全。Warp 的 spec 来自 Fig 的生态,覆盖范围跟着上游走,这不是「装完就什么都能补」的魔法。

Vim 模式

输入框原生支持 Vim 键位,不是模拟,是 Warp 自己实现的一套。

打开方式:Settings > Features > Text Editing,勾上「Edit code and commands with Vim keybindings」;也可以在 Command Palette 里搜「vim keybindings」。

打开之后,输入框默认在 insert 模式,Esc 进 normal,然后就是熟悉的操作:

  • 移动:h j k l、w b e、0 ^ $、gg G、% 跳括号。
  • 编辑:d、c、y、p、x、r、~、J、. 重复上一次修改。
  • 文本对象:iw、aw、i"、a(、i{。
  • 可视模式:v、V,配合 d、y、c、U。
  • 寄存器:"a 到 "z、"+、"*,以及 unnamed register。
  • 字符搜索:f、t、F、T、;、,。

有两个和 Vim 不一样的地方要知道:

  1. /、?、*、# 不搜索当前 buffer,而是打开 Warp 的 Command Search。Warp 的输入框通常只有一两行,搜 buffer 意义不大,它把这个键位让给了命令历史搜索。习惯 /<关键词> 的人第一次会愣一下。
  2. 目前只支持默认键位,不能自定义 mapping;唯一能改的是「退出 insert 模式」的快捷键,在 Settings > Keyboard shortcuts > Exit Vim insert mode。

还有一点容易误会:Vim 模式作用于输入框,不是输出区。你没法用 j / k 在 Block 之间移动,也没法用 : 命令操作历史输出。它是让你「改命令」的时候手感一致,不是把整个终端变成 Vim。

但对我来说这就够了。命令越写越长,ci"、di(、cw 这些操作比按几十次方向键舒服太多;尤其是改一条从历史里翻出来的长命令,Vim 模式的效率完全不是一个量级。

命令搜索

Ctrl+R 打开 Command Search,模糊搜索历史命令、Workflow、Prompt,结果按相关度排序,可以用 history:、prompts: 前缀过滤。

这是 Warp 自己的搜索面板,不是 shell 的反向搜索。如果你习惯 fzf 或 atuin,它们和 Ctrl+R 会抢同一个键,需要自己改键。

输出:在一万行里找那一行

过滤

Block 右上角有个漏斗图标,或者按 Alt+Shift+F(macOS 是 Option+Shift+F),就能对当前 Block 的输出做过滤:

  • 纯文本匹配,支持正则、区分大小写、反向过滤。
  • 可以加「上下文行数」,比如匹配行前后各显示 3 行。
  • 过滤是非破坏性的:原始输出还在,清掉过滤条件就回来。

这个功能在下面这些场景里非常好用:

  • dotnet build 刷了几千行,只想看 error 和它前后几行。
  • kubectl describe pod 输出几十屏,只想看 Events。
  • 跑测试,几万个测试名里只关心失败的那几个。
  • 日志里搜一个 request id,前后文一起看。

传统终端的做法是「搜关键词 + 高亮」,你还得在几千行里自己找上下文;Warp 是直接把不匹配的行藏起来,屏幕上只剩你要的。对于「输出很多,但只关心一小部分」的调试场景,这是质变。

查找

Ctrl+Shift+F(macOS 是 ⌘+F)打开 Find,在当前 pane 的所有 Block 里从下往上搜,支持正则、区分大小写,也可以只搜选中的 Block。

过滤和查找的区别:

过滤 查找
范围 当前 Block 当前 pane 的所有 Block
结果 只显示匹配行 高亮匹配,跳转
上下文行 支持 不支持
快捷键 Alt+Shift+F Ctrl+Shift+F

两个都要用:先用 Find 定位到哪个 Block,再用 Filter 把那个 Block 缩小到几行。

限制也有:过滤只在单个 Block 内,查找只在当前 pane 内。想跨标签页、跨窗口搜所有历史输出,得靠别的手段,比如把输出重定向到文件再用 rg。

其他值得一提的

Warp Drive

Warp Drive 是它的「命令知识库」:Workflow(带参数的命令模板)、Notebook(可执行的 Markdown 笔记)、Prompt(常用提示词)、环境变量,都能存进去,可以同步、可以分享给团队。

Workflow 对我来说最实用:把「一长串带参数的命令」存成模板,参数用 {{...}} 占位,可以设默认值、可以设枚举,下次从 Command Palette 里搜名字,填参数,回车。比在笔记里翻命令再复制粘贴快得多。

AI

Warp 内置了 AI:自然语言生成命令、解释报错、Agent Mode(让 AI 在终端里自己跑命令、改文件)。也支持 BYOK,接自己的模型。

我用得不多。一方面是大部分时候 Tab 补全和自动提示已经够了;另一方面是 AI 功能要登录、要额度,免费版有限制。它是个加分项,不是我用 Warp 的理由。不登录也能用终端和补全,这点倒是比早期舒服很多。

界面和窗口

主题、字体、光标、背景透明度、窗口模糊都能调,内置主题不少;标签页、分屏、全局热键、Command Palette(Ctrl+P)也都有。Prompt 可以自定义,SSH 远程会话可以开 Warpify,让 Block、补全这些功能在远程主机上也能用。

开源

2026 年 4 月 28 日,Warp 把客户端开源了:

  • 仓库:warpdotdev/warp
  • 大部分代码 AGPL-3.0,UI 框架 warpui 和 warpui_core 是 MIT。
  • OpenAI 是仓库的创始赞助方。
  • 可以自己 ./script/bootstrap、./script/run 编译,提交 PR 的流程也写清楚了。

对一个每天要往里敲 token、密码、生产命令的软件来说,源码可见这件事本身就有价值:它怎么存 session、什么时候联网、AI 请求发到哪里,都可以自己看。Warp Drive、AI 这些云端服务仍然是闭源的,开源不等于免费,也不等于所有功能都能离线跑。

和现有终端比

我不想把它吹成「所有终端的替代品」,它和下面几个不是同一个思路:

Warp Windows Terminal iTerm2 WezTerm
平台 Windows / macOS / Linux Windows macOS Windows / macOS / Linux
输出按 Block 组织 是 否 否 否
内置参数补全 是 否(靠 shell) 否(靠 shell) 否(靠 shell)
内置 Vim 输入 是(跨 shell) 否(靠 shell) 否(靠 shell) 否(靠 shell)
输出过滤 是 只能搜索 只能搜索 只能搜索
配置方式 图形界面 + 配置文件 JSON 图形界面 + 属性列表 配置文件(Lua)
客户端开源 AGPL-3.0 MIT GPLv2 MIT

至于「重启恢复输出」这一条,各家做得不一样:Windows Terminal 恢复的是标签页,不是输出;iTerm2 靠 macOS 的窗口恢复能保留 scrollback,但恢复的是屏幕内容,不是结构化的 Block,而且仅限 macOS;tmux 能保住进程和屏幕,但那是另一套东西,而且你得先学会用。

Windows Terminal 胜在轻、稳、和 Windows 集成好,启动快,资源占用低;iTerm2 胜在 macOS 生态和可编程性;WezTerm 胜在配置自由;Ghostty 更纯粹、更快,但目前主要是 macOS 和 Linux 上的选择。它们都是「更好的终端模拟器」,Warp 想做的是「终端之上的交互层」。

所以选型很简单:如果你只需要一个稳定、轻量、可定制的终端,上面几个都很好;如果你每天在终端里泡几个小时、经常被海量输出淹没、经常关掉终端又后悔,Warp 值得试。

不足

恢复不了进程

前面说过,再强调一次:它恢复的是输出记录,不是运行中的任务。npm run dev、ssh 隧道、docker compose up 该断还是断。别因为「Warp 能恢复」就省掉 tmux。

输出会落盘

Block 存在本地 SQLite 里,默认开启。敏感信息、token、生产环境地址都可能被记下来。共用电脑、或者有合规要求的机器,记得关掉恢复,或者定期删库。

Vim 模式不完整

只支持默认键位,不能自定义 mapping;没有宏,没有 : 命令,没有插件。对 Vim 重度用户来说,它解决的是「输入框里的编辑」,不是「把终端变成 Vim」。而且它只作用于输入框,不能用来浏览输出。

补全只覆盖内置命令

自定义 CLI、内部工具、刚出的新命令,没有 spec 就没有参数补全,只能退回 shell 自己的补全。常见命令覆盖得不错,但别指望「什么都能补」。

平台差异

  • Windows 不支持 cmd.exe,只支持 PowerShell 7 / PowerShell 5 / WSL2 / Git Bash。
  • Linux 原生 Wayland 下全局热键不可用,窗口位置也不恢复。
  • macOS 需要 Metal,Linux 需要 OpenGL ES 3.0 或 Vulkan;纯服务器、无 GPU 的环境跑不了。

比轻量终端重

Rust + GPU 渲染 + 一堆 UI,体感上比 Windows Terminal 重:启动慢一点,内存占用也高一些。老机器、集显、远程桌面里不一定舒服;如果你只是开个终端跑两条命令,它属于杀鸡用牛刀。

中文资料少

官方文档是英文的,中文教程不多;而且 Warp 更新很快,设置项和 UI 经常调整,网上一些教程的截图可能对不上。遇到找不到的选项,直接搜官方文档,或者翻 GitHub issue 和 Slack。文档本身写得细,按平台分的快捷键、每个功能的入口都有。

AI 是商业化的入口

终端本身免费,但 AI 有额度限制;用得多要订阅。写作时(2026 年 5 月)的定价是 Build 20 美元/月起、Max 200 美元/月,具体以官网定价页为准。如果你完全不用 AI,免费版也能当普通终端用。

总结

Warp 不是「更快的终端」,也不是「更漂亮的终端」。它把终端里的输出从「一次性消耗品」变成了「可以回头找的记录」,然后围绕这个记录做了恢复、过滤、查找、分享。这是我用过的终端里,唯一一个让我改变操作习惯的。

如果你符合下面几条,值得装一个试试:

  • 每天在终端里待很久,经常跑构建、测试、kubectl、docker。
  • 经常关掉终端 / 重启系统,之后再也想不起来上次的输出。
  • 用 Vim,受不了输入框里按方向键。
  • 同时用 Windows、macOS、Linux,想要一套一致的操作。

如果你只是偶尔开个终端跑两条命令,或者追求极简、低占用、完全可配置,Windows Terminal、WezTerm 可能更合适(macOS 上还可以看 Ghostty);Warp 的 UI 和功能对你是负担。

它现在开源了,试错成本比两年前低很多:下载、不登录,当普通终端用一天,再决定要不要留下。至少「关掉再打开,输出还在」这件事,一旦习惯了就很难回去。

扩展阅读